comparison src/cpu/x86/vm/graalRuntime_x86.cpp @ 7154:5d0bb7d52783

changes to support Graal co-existing with the other HotSpot compiler(s) and being used for explicit compilation requests and code installation via the Graal API
author Doug Simon <doug.simon@oracle.com>
date Wed, 12 Dec 2012 21:36:40 +0100
parents 6c46172c04bf
children 8a3efb8c831d
comparison
equal deleted inserted replaced
7153:c421c19b7bf8 7154:5d0bb7d52783
109 movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD); 109 movptr(Address(thread, JavaThread::vm_result_offset()), NULL_WORD);
110 } 110 }
111 if (metadata_result->is_valid()) { 111 if (metadata_result->is_valid()) {
112 movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD); 112 movptr(Address(thread, JavaThread::vm_result_2_offset()), NULL_WORD);
113 } 113 }
114 #ifdef GRAAL
115 // (thomaswue) Deoptimize in case of an exception. 114 // (thomaswue) Deoptimize in case of an exception.
116 restore_live_registers(this, false); 115 restore_live_registers(this, false);
117 movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD); 116 movptr(Address(thread, Thread::pending_exception_offset()), NULL_WORD);
118 leave(); 117 leave();
119 movl(rscratch1, Deoptimization::make_trap_request(Deoptimization::Reason_constraint, Deoptimization::Action_reinterpret)); 118 movl(rscratch1, Deoptimization::make_trap_request(Deoptimization::Reason_constraint, Deoptimization::Action_reinterpret));
120 jump(RuntimeAddress(SharedRuntime::deopt_blob()->uncommon_trap())); 119 jump(RuntimeAddress(SharedRuntime::deopt_blob()->uncommon_trap()));
121 #else
122 if (frame_size() == no_frame_size) {
123 leave();
124 jump(RuntimeAddress(StubRoutines::forward_exception_entry()));
125 } else if (_stub_id == GraalRuntime::forward_exception_id) {
126 should_not_reach_here();
127 } else {
128 jump(RuntimeAddress(GraalRuntime::entry_for(GraalRuntime::forward_exception_id)));
129 }
130 #endif
131 bind(L); 120 bind(L);
132 } 121 }
133 // get oop results if there are any and reset the values in the thread 122 // get oop results if there are any and reset the values in the thread
134 if (oop_result1->is_valid()) { 123 if (oop_result1->is_valid()) {
135 get_vm_result(oop_result1, thread); 124 get_vm_result(oop_result1, thread);