comparison src/cpu/x86/vm/templateInterpreter_x86_64.cpp @ 23762:a5a2ac8dfaba

Reduce the size of the deopt entry points in the interpreter
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Mon, 26 Sep 2016 13:54:28 -0700
parents ca5c97226d1c
children 0e0a4ebf09d7
comparison
equal deleted inserted replaced
23761:1fece5f8307c 23762:a5a2ac8dfaba
203 // NULL last_sp until next java call 203 // NULL last_sp until next java call
204 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); 204 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
205 __ restore_bcp(); 205 __ restore_bcp();
206 __ restore_locals(); 206 __ restore_locals();
207 #if INCLUDE_JVMCI 207 #if INCLUDE_JVMCI
208 // Check if we need to take lock at entry of synchronized method. 208 // Check if we need to take lock at entry of synchronized method. This can
209 { 209 // only occur on method entry so emit it only for vtos with step 0.
210 if (state == vtos && step == 0) {
210 Label L; 211 Label L;
211 __ cmpb(Address(r15_thread, JavaThread::pending_monitorenter_offset()), 0); 212 __ cmpb(Address(r15_thread, JavaThread::pending_monitorenter_offset()), 0);
212 __ jcc(Assembler::zero, L); 213 __ jcc(Assembler::zero, L);
213 // Clear flag. 214 // Clear flag.
214 __ movb(Address(r15_thread, JavaThread::pending_monitorenter_offset()), 0); 215 __ movb(Address(r15_thread, JavaThread::pending_monitorenter_offset()), 0);
215 // Satisfy calling convention for lock_method(). 216 // Satisfy calling convention for lock_method().
216 __ get_method(rbx); 217 __ get_method(rbx);
217 // Take lock. 218 // Take lock.
218 lock_method(); 219 lock_method();
219 __ bind(L); 220 __ bind(L);
221 } else {
222 #ifdef ASSERT
223 Label L;
224 __ cmpb(Address(r15_thread, JavaThread::pending_monitorenter_offset()), 0);
225 __ jccb(Assembler::zero, L);
226 __ stop("unexpected pending monitor in deopt entry");
227 __ bind(L);
228 #endif
220 } 229 }
221 #endif 230 #endif
222 // handle exceptions 231 // handle exceptions
223 { 232 {
224 Label L; 233 Label L;