7150051: incorrect oopmap in critical native

Reviewed-by: kvn, twisti
This commit is contained in:
Tom Rodriguez 2012-03-01 15:31:33 -08:00
parent ff47163220
commit 7c2b3c6ab5

View File

@ -1197,7 +1197,6 @@ static void save_or_restore_arguments(MacroAssembler* masm,
if (in_regs[i].first()->is_Register() && if (in_regs[i].first()->is_Register() &&
(in_sig_bt[i] == T_LONG || in_sig_bt[i] == T_ARRAY)) { (in_sig_bt[i] == T_LONG || in_sig_bt[i] == T_ARRAY)) {
int offset = slot * VMRegImpl::stack_slot_size; int offset = slot * VMRegImpl::stack_slot_size;
slot += VMRegImpl::slots_per_word;
if (map != NULL) { if (map != NULL) {
__ movq(Address(rsp, offset), in_regs[i].first()->as_Register()); __ movq(Address(rsp, offset), in_regs[i].first()->as_Register());
if (in_sig_bt[i] == T_ARRAY) { if (in_sig_bt[i] == T_ARRAY) {
@ -1206,6 +1205,7 @@ static void save_or_restore_arguments(MacroAssembler* masm,
} else { } else {
__ movq(in_regs[i].first()->as_Register(), Address(rsp, offset)); __ movq(in_regs[i].first()->as_Register(), Address(rsp, offset));
} }
slot += VMRegImpl::slots_per_word;
} }
} }
// Save or restore single word registers // Save or restore single word registers