< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp

Print this page

2832 
2833   __ bind(pending);
2834 
2835   RegisterSaver::restore_live_registers(masm);
2836 
2837   // exception pending => remove activation and forward to exception handler
2838 
2839   __ get_thread(thread);
2840   __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
2841   __ movptr(rax, Address(thread, Thread::pending_exception_offset()));
2842   __ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
2843 
2844   // -------------
2845   // make sure all code is generated
2846   masm->flush();
2847 
2848   // return the  blob
2849   // frame_size_words or bytes??
2850   return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_words, oop_maps, true);
2851 }
2852 
2853 #ifdef COMPILER2
2854 RuntimeStub* SharedRuntime::make_native_invoker(address call_target,
2855                                                 int shadow_space_bytes,
2856                                                 const GrowableArray<VMReg>& input_registers,
2857                                                 const GrowableArray<VMReg>& output_registers) {
2858   ShouldNotCallThis();
2859   return nullptr;
2860 }
2861 #endif

2832 
2833   __ bind(pending);
2834 
2835   RegisterSaver::restore_live_registers(masm);
2836 
2837   // exception pending => remove activation and forward to exception handler
2838 
2839   __ get_thread(thread);
2840   __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
2841   __ movptr(rax, Address(thread, Thread::pending_exception_offset()));
2842   __ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
2843 
2844   // -------------
2845   // make sure all code is generated
2846   masm->flush();
2847 
2848   // return the  blob
2849   // frame_size_words or bytes??
2850   return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_words, oop_maps, true);
2851 }










< prev index next >