1.1 --- a/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -664,7 +664,7 @@ 1.4 1.5 // work registers 1.6 const Register method = rbx; 1.7 - const Register t = r12; 1.8 + const Register t = r11; 1.9 1.10 // allocate space for parameters 1.11 __ get_method(method); 1.12 @@ -844,6 +844,7 @@ 1.13 __ andq(rsp, -16); // align stack as required by ABI 1.14 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, JavaThread::check_special_condition_for_native_trans))); 1.15 __ movq(rsp, r12); // restore sp 1.16 + __ reinit_heapbase(); 1.17 __ bind(Continue); 1.18 } 1.19 1.20 @@ -891,6 +892,7 @@ 1.21 __ call(RuntimeAddress(CAST_FROM_FN_PTR(address, SharedRuntime::reguard_yellow_pages))); 1.22 __ movq(rsp, r12); // restore sp 1.23 __ popaq(); // XXX only restore smashed registers 1.24 + __ reinit_heapbase(); 1.25 1.26 __ bind(no_reguard); 1.27 } 1.28 @@ -1360,6 +1362,7 @@ 1.29 // rdx: return address/pc that threw exception 1.30 __ restore_bcp(); // r13 points to call/send 1.31 __ restore_locals(); 1.32 + __ reinit_heapbase(); // restore r12 as heapbase. 1.33 // Entry point for exceptions thrown within interpreter code 1.34 Interpreter::_throw_exception_entry = __ pc(); 1.35 // expression stack is undefined here 1.36 @@ -1658,6 +1661,7 @@ 1.37 __ andq(rsp, -16); // align stack as required by ABI 1.38 __ call(RuntimeAddress(Interpreter::trace_code(t->tos_in()))); 1.39 __ movq(rsp, r12); // restore sp 1.40 + __ reinit_heapbase(); 1.41 } 1.42 1.43