< prev index next >
src/share/vm/code/nmethod.cpp
Print this page
rev 13052 : 8185334
*** 2543,2578 ****
m->print_value_on(stream);
stream->cr();
}
if (m.not_null() && !is_osr_method()) {
ResourceMark rm;
! int sizeargs = m->size_of_parameters();
! BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, sizeargs);
! VMRegPair* regs = NEW_RESOURCE_ARRAY(VMRegPair, sizeargs);
! {
! int sig_index = 0;
! if (!m->is_static())
! sig_bt[sig_index++] = T_OBJECT; // 'this'
! for (SignatureStream ss(m->signature()); !ss.at_return_type(); ss.next()) {
BasicType t = ss.type();
! sig_bt[sig_index++] = t;
if (type2size[t] == 2) {
! sig_bt[sig_index++] = T_VOID;
} else {
assert(type2size[t] == 1, "size is 1 or 2");
}
}
- assert(sig_index == sizeargs, "");
- }
const char* spname = "sp"; // make arch-specific?
intptr_t out_preserve = SharedRuntime::java_calling_convention(sig_bt, regs, sizeargs, false);
int stack_slot_offset = this->frame_size() * wordSize;
int tab1 = 14, tab2 = 24;
int sig_index = 0;
! int arg_index = (m->is_static() ? 0 : -1);
bool did_old_sp = false;
! for (SignatureStream ss(m->signature()); !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)
--- 2543,2581 ----
m->print_value_on(stream);
stream->cr();
}
if (m.not_null() && !is_osr_method()) {
ResourceMark rm;
! 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();
! sig_bt[sizeargs++] = t;
if (type2size[t] == 2) {
! sig_bt[sizeargs++] = T_VOID;
} else {
assert(type2size[t] == 1, "size is 1 or 2");
}
}
const char* spname = "sp"; // make arch-specific?
intptr_t out_preserve = SharedRuntime::java_calling_convention(sig_bt, regs, sizeargs, false);
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());
assert(t == sig_bt[sig_index], "sigs in sync");
if (at_this)
< prev index next >