< 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 >