< prev index next >

src/hotspot/share/oops/methodData.cpp

Print this page

        

*** 214,224 **** 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)) { ret_cell = ReturnTypeEntry::static_cell_count(); } int header_cell = 0; if (args_cell + ret_cell > 0) { header_cell = header_cell_count(); --- 214,225 ---- 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 || 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,246 **** --- 238,253 ---- 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,297 **** #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?"); _ret.post_initialize(); } } void VirtualCallTypeData::post_initialize(BytecodeStream* stream, MethodData* mdo) { --- 294,305 ---- #endif _args.post_initialize(inv.signature(), inv.has_receiver(), false); } if (has_return()) { ! 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,318 **** #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?"); _ret.post_initialize(); } } void TypeStackSlotEntries::clean_weak_klass_links(bool always_clean) { --- 316,327 ---- #endif _args.post_initialize(inv.signature(), inv.has_receiver(), false); } if (has_return()) { ! 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 >