< prev index next >

src/hotspot/share/oops/methodData.cpp

Print this page

        

@@ -214,11 +214,12 @@
   int args_cell = 0;
   if (MethodData::profile_arguments_for_invoke(m, bci)) {
     args_cell = TypeStackSlotEntries::compute_cell_count(inv.signature(), false, TypeProfileArgsLimit);
   }
   int ret_cell = 0;
-  if (MethodData::profile_return_for_invoke(m, bci) && (inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY)) {
+  if (MethodData::profile_return_for_invoke(m, bci)
+      && (inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY || inv.result_type() == T_VALUETYPE)) {
     ret_cell = ReturnTypeEntry::static_cell_count();
   }
   int header_cell = 0;
   if (args_cell + ret_cell > 0) {
     header_cell = header_cell_count();

@@ -237,10 +238,16 @@
     if (_offsets.length() < _max) {
       _offsets.push(_size);
     }
     SignatureInfo::do_object(begin, end);
   }
+  void do_valuetype(int begin, int end) {
+    if (_offsets.length() < _max) {
+      _offsets.push(_size);
+    }
+    SignatureInfo::do_valuetype(begin, end);
+  }
   void do_array (int begin, int end) {
     if (_offsets.length() < _max) {
       _offsets.push(_size);
     }
     SignatureInfo::do_array(begin, end);

@@ -287,11 +294,12 @@
 #endif
     _args.post_initialize(inv.signature(), inv.has_receiver(), false);
   }
 
   if (has_return()) {
-    assert(inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY, "room for a ret type but doesn't return obj?");
+    assert(inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY || inv.result_type() == T_VALUETYPE,
+           "room for a ret type but doesn't return obj?");
     _ret.post_initialize();
   }
 }
 
 void VirtualCallTypeData::post_initialize(BytecodeStream* stream, MethodData* mdo) {

@@ -308,11 +316,12 @@
 #endif
     _args.post_initialize(inv.signature(), inv.has_receiver(), false);
   }
 
   if (has_return()) {
-    assert(inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY, "room for a ret type but doesn't return obj?");
+    assert(inv.result_type() == T_OBJECT || inv.result_type() == T_ARRAY || inv.result_type() == T_VALUETYPE,
+           "room for a ret type but doesn't return obj?");
     _ret.post_initialize();
   }
 }
 
 void TypeStackSlotEntries::clean_weak_klass_links(bool always_clean) {
< prev index next >