src/cpu/x86/vm/templateInterpreter_x86_64.cpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 631
d1605aabd0a1
     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  

mercurial