< prev index next >

src/hotspot/cpu/x86/sharedRuntime_x86_32.cpp

Print this page

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

2843 
2844   __ bind(pending);
2845 
2846   RegisterSaver::restore_live_registers(masm);
2847 
2848   // exception pending => remove activation and forward to exception handler
2849 
2850   __ get_thread(thread);
2851   __ movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
2852   __ movptr(rax, Address(thread, Thread::pending_exception_offset()));
2853   __ jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
2854 
2855   // -------------
2856   // make sure all code is generated
2857   masm->flush();
2858 
2859   // return the  blob
2860   // frame_size_words or bytes??
2861   return RuntimeStub::new_runtime_stub(name, &buffer, frame_complete, frame_size_words, oop_maps, true);
2862 }










< prev index next >