< prev index next >

src/hotspot/share/code/nmethod.cpp

Print this page

        

*** 586,595 **** --- 586,596 ---- _nmethod_end_offset = _nul_chk_table_offset; _compile_id = compile_id; _comp_level = CompLevel_none; _entry_point = code_begin() + offsets->value(CodeOffsets::Entry); _verified_entry_point = code_begin() + offsets->value(CodeOffsets::Verified_Entry); + _verified_value_entry_point = _verified_entry_point; _osr_entry_point = NULL; _exception_cache = NULL; _pc_desc_container.reset_to(NULL); _hotness_counter = NMethodSweeper::hotness_counter_reset_val();
*** 743,752 **** --- 744,754 ---- _handler_table_offset = _dependencies_offset + align_up((int)dependencies->size_in_bytes (), oopSize); _nul_chk_table_offset = _handler_table_offset + align_up(handler_table->size_in_bytes(), oopSize); _nmethod_end_offset = _nul_chk_table_offset + align_up(nul_chk_table->size_in_bytes(), oopSize); _entry_point = code_begin() + offsets->value(CodeOffsets::Entry); _verified_entry_point = code_begin() + offsets->value(CodeOffsets::Verified_Entry); + _verified_value_entry_point = code_begin() + offsets->value(CodeOffsets::Verified_Value_Entry); _osr_entry_point = code_begin() + offsets->value(CodeOffsets::OSR_Entry); _exception_cache = NULL; _scopes_data_begin = (address) this + scopes_data_offset;
*** 2477,2487 **** } return NULL; } void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) const { ! address low = entry_point(); if (block_begin == low) { // Print method arguments before the method entry methodHandle m = method(); if (m.not_null()) { stream->print(" # "); --- 2479,2489 ---- } return NULL; } void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) const { ! address low = verified_value_entry_point() != NULL ? verified_value_entry_point() : entry_point(); if (block_begin == low) { // Print method arguments before the method entry methodHandle m = method(); if (m.not_null()) { stream->print(" # ");
*** 2493,2514 **** int sizeargs = 0; BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, 256); VMRegPair* regs = NEW_RESOURCE_ARRAY(VMRegPair, 256); Symbol* sig = m->signature(); bool has_value_arg = false; ! if (ValueTypePassFieldsAsArgs && m->adapter()->get_sig_extended() != NULL) { // Use extended signature if value type arguments are passed as fields ! sig = m->adapter()->get_sig_extended(); has_value_arg = true; } else if (!m->is_static()) { sig_bt[sizeargs++] = T_OBJECT; // 'this' } for (SignatureStream ss(sig); !ss.at_return_type(); ss.next()) { BasicType t = ss.type(); - if (!ValueTypePassFieldsAsArgs && t == T_VALUETYPE) { - t = T_VALUETYPEPTR; // Pass value types by reference - } sig_bt[sizeargs++] = t; if (type2size[t] == 2) { sig_bt[sizeargs++] = T_VOID; } else { assert(type2size[t] == 1, "size is 1 or 2"); --- 2495,2513 ---- int sizeargs = 0; BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, 256); VMRegPair* regs = NEW_RESOURCE_ARRAY(VMRegPair, 256); Symbol* sig = m->signature(); bool has_value_arg = false; ! if (m->has_scalarized_args()) { // Use extended signature if value type arguments are passed as fields ! sig = SigEntry::create_symbol(m->adapter()->get_sig_cc()); has_value_arg = true; } else if (!m->is_static()) { sig_bt[sizeargs++] = T_OBJECT; // 'this' } for (SignatureStream ss(sig); !ss.at_return_type(); ss.next()) { BasicType t = ss.type(); sig_bt[sizeargs++] = t; if (type2size[t] == 2) { sig_bt[sizeargs++] = T_VOID; } else { assert(type2size[t] == 1, "size is 1 or 2");
*** 2519,2535 **** int stack_slot_offset = this->frame_size() * wordSize; int tab1 = 14, tab2 = 24; int sig_index = 0; int arg_index = ((m->is_static() || has_value_arg) ? 0 : -1); bool did_old_sp = false; for (SignatureStream ss(sig); !ss.at_return_type(); ) { bool at_this = (arg_index == -1); bool at_old_sp = false; BasicType t = (at_this ? T_OBJECT : ss.type()); - if (!ValueTypePassFieldsAsArgs && t == T_VALUETYPE) { - t = T_VALUETYPEPTR; // Pass value types by reference - } assert(t == sig_bt[sig_index], "sigs in sync"); if (at_this) { stream->print(" # this: "); } else { stream->print(" # parm%d: ", arg_index); --- 2518,2532 ---- int stack_slot_offset = this->frame_size() * wordSize; int tab1 = 14, tab2 = 24; int sig_index = 0; int arg_index = ((m->is_static() || has_value_arg) ? 0 : -1); bool did_old_sp = false; + SigEntry res_entry = m->get_res_entry(); for (SignatureStream ss(sig); !ss.at_return_type(); ) { bool at_this = (arg_index == -1); bool at_old_sp = false; BasicType t = (at_this ? T_OBJECT : ss.type()); assert(t == sig_bt[sig_index], "sigs in sync"); if (at_this) { stream->print(" # this: "); } else { stream->print(" # parm%d: ", arg_index);
*** 2564,2573 **** --- 2561,2573 ---- } } if (!did_name) stream->print("%s", type2name(t)); } + if (sig_index == res_entry._offset) { + stream->print(" [RESERVED] "); + } if (at_old_sp) { stream->print(" (%s of caller)", spname); did_old_sp = true; } stream->cr();
*** 2585,2594 **** --- 2585,2595 ---- } } if (block_begin == entry_point()) stream->print_cr("[Entry Point]"); if (block_begin == verified_entry_point()) stream->print_cr("[Verified Entry Point]"); + if (block_begin == verified_value_entry_point()) stream->print_cr("[Verified Value Entry Point]"); if (JVMCI_ONLY(_exception_offset >= 0 &&) block_begin == exception_begin()) stream->print_cr("[Exception Handler]"); if (block_begin == stub_begin()) stream->print_cr("[Stub Code]"); if (JVMCI_ONLY(_deopt_handler_begin != NULL &&) block_begin == deopt_handler_begin()) stream->print_cr("[Deopt Handler Code]"); if (has_method_handle_invokes())
< prev index next >