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 }
|