< prev index next >

src/hotspot/cpu/x86/templateInterpreterGenerator_x86.cpp

Print this page




 956   // However, large signatures cannot be cached and are generated
 957   // each time here.  The slow-path generator can do a GC on return,
 958   // so we must reload it after the call.
 959   __ call(t);
 960   __ get_method(method);        // slow path can do a GC, reload RBX
 961 
 962 
 963   // result handler is in rax
 964   // set result handler
 965   __ movptr(Address(rbp,
 966                     (frame::interpreter_frame_result_handler_offset) * wordSize),
 967             rax);
 968 
 969   // pass mirror handle if static call
 970   {
 971     Label L;
 972     __ movl(t, Address(method, Method::access_flags_offset()));
 973     __ testl(t, JVM_ACC_STATIC);
 974     __ jcc(Assembler::zero, L);
 975     // get mirror
 976     __ load_mirror(t, method);
 977     // copy mirror into activation frame
 978     __ movptr(Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize),
 979             t);
 980     // pass handle to mirror
 981 #ifndef _LP64
 982     __ lea(t, Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize));
 983     __ movptr(Address(rsp, wordSize), t);
 984 #else
 985     __ lea(c_rarg1,
 986            Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize));
 987 #endif // _LP64
 988     __ bind(L);
 989   }
 990 
 991   // get native function entry point
 992   {
 993     Label L;
 994     __ movptr(rax, Address(method, Method::native_function_offset()));
 995     ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
 996     __ cmpptr(rax, unsatisfied.addr());




 956   // However, large signatures cannot be cached and are generated
 957   // each time here.  The slow-path generator can do a GC on return,
 958   // so we must reload it after the call.
 959   __ call(t);
 960   __ get_method(method);        // slow path can do a GC, reload RBX
 961 
 962 
 963   // result handler is in rax
 964   // set result handler
 965   __ movptr(Address(rbp,
 966                     (frame::interpreter_frame_result_handler_offset) * wordSize),
 967             rax);
 968 
 969   // pass mirror handle if static call
 970   {
 971     Label L;
 972     __ movl(t, Address(method, Method::access_flags_offset()));
 973     __ testl(t, JVM_ACC_STATIC);
 974     __ jcc(Assembler::zero, L);
 975     // get mirror
 976     __ load_mirror(t, method, noreg);
 977     // copy mirror into activation frame
 978     __ movptr(Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize),
 979             t);
 980     // pass handle to mirror
 981 #ifndef _LP64
 982     __ lea(t, Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize));
 983     __ movptr(Address(rsp, wordSize), t);
 984 #else
 985     __ lea(c_rarg1,
 986            Address(rbp, frame::interpreter_frame_oop_temp_offset * wordSize));
 987 #endif // _LP64
 988     __ bind(L);
 989   }
 990 
 991   // get native function entry point
 992   {
 993     Label L;
 994     __ movptr(rax, Address(method, Method::native_function_offset()));
 995     ExternalAddress unsatisfied(SharedRuntime::native_method_throw_unsatisfied_link_error_entry());
 996     __ cmpptr(rax, unsatisfied.addr());


< prev index next >