< prev index next >
src/hotspot/share/code/nmethod.cpp
Print this page
@@ -586,10 +586,11 @@
_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,10 +744,11 @@
_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,11 +2479,11 @@
}
return NULL;
}
void nmethod::print_nmethod_labels(outputStream* stream, address block_begin) const {
- address low = entry_point();
+ 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,22 +2495,19 @@
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) {
+ if (m->has_scalarized_args()) {
// Use extended signature if value type arguments are passed as fields
- sig = m->adapter()->get_sig_extended();
+ 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();
- 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");
@@ -2519,17 +2518,15 @@
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());
- 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);
@@ -2564,10 +2561,13 @@
}
}
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,10 +2585,11 @@
}
}
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 >