equal
deleted
inserted
replaced
169 // throw exception |
169 // throw exception |
170 __ jump(ExternalAddress(Interpreter::throw_exception_entry())); |
170 __ jump(ExternalAddress(Interpreter::throw_exception_entry())); |
171 return entry; |
171 return entry; |
172 } |
172 } |
173 |
173 |
174 |
|
175 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) { |
|
176 address entry = __ pc(); |
|
177 // NULL last_sp until next java call |
|
178 __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD); |
|
179 __ dispatch_next(state); |
|
180 return entry; |
|
181 } |
|
182 |
|
183 |
|
184 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) { |
174 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) { |
185 address entry = __ pc(); |
175 address entry = __ pc(); |
186 |
176 |
187 #ifndef _LP64 |
177 #ifndef _LP64 |
188 #ifdef COMPILER2 |
178 #ifdef COMPILER2 |
228 |
218 |
229 const Register flags = cache; |
219 const Register flags = cache; |
230 __ movl(flags, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset())); |
220 __ movl(flags, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset())); |
231 __ andl(flags, ConstantPoolCacheEntry::parameter_size_mask); |
221 __ andl(flags, ConstantPoolCacheEntry::parameter_size_mask); |
232 __ lea(rsp, Address(rsp, flags, Interpreter::stackElementScale())); |
222 __ lea(rsp, Address(rsp, flags, Interpreter::stackElementScale())); |
|
223 |
|
224 const Register java_thread = NOT_LP64(rcx) LP64_ONLY(r15_thread); |
|
225 if (JvmtiExport::can_pop_frame()) { |
|
226 NOT_LP64(__ get_thread(java_thread)); |
|
227 __ check_and_handle_popframe(java_thread); |
|
228 } |
|
229 if (JvmtiExport::can_force_early_return()) { |
|
230 NOT_LP64(__ get_thread(java_thread)); |
|
231 __ check_and_handle_earlyret(java_thread); |
|
232 } |
|
233 |
233 __ dispatch_next(state, step); |
234 __ dispatch_next(state, step); |
234 |
235 |
235 return entry; |
236 return entry; |
236 } |
237 } |
237 |
238 |