< prev index next >

src/hotspot/share/ci/ciSignature.cpp

Print this page
@@ -59,17 +59,34 @@
      }
      if (ss.at_return_type()) {
        // don't include return type in size calculation
        _return_type = type;
      } else {
+       if (type->is_inlinetype() && ss.has_Q_descriptor()) {
+         type = env->make_null_free_wrapper(type);
+       }
        _types.append(type);
        size += type->size();
      }
    }
    _size = size;
  }
  
+ // ------------------------------------------------------------------
+ // ciSignature::returns_null_free_inline_type
+ bool ciSignature::returns_null_free_inline_type() const {
+   GUARDED_VM_ENTRY(return get_symbol()->is_Q_method_signature();)
+ }
+ 
+ // ------------------------------------------------------------------
+ // ciSignature::is_null_free_at
+ //
+ // True if we know that the argument at 'index' is null-free.
+ bool ciSignature::is_null_free_at(int index) const {
+   return _types.at(index)->is_null_free();
+ }
+ 
  // ------------------------------------------------------------------
  // ciSignature::equals
  //
  // Compare this signature to another one.  Signatures with different
  // accessing classes but with signature-types resolved to the same
< prev index next >