equal
deleted
inserted
replaced
268 } |
268 } |
269 |
269 |
270 return entry; |
270 return entry; |
271 } |
271 } |
272 |
272 |
273 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) { |
|
274 // Not used. |
|
275 STOP("generate_continuation_for"); |
|
276 return NULL; |
|
277 } |
|
278 |
|
279 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) { |
273 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) { |
280 address entry = __ pc(); |
274 address entry = __ pc(); |
281 |
275 |
282 __ interp_verify_oop(R0_tos, state, __FILE__, __LINE__); |
276 __ interp_verify_oop(R0_tos, state, __FILE__, __LINE__); |
283 |
277 |
307 __ add(Rstack_top, Rstack_top, AsmOperand(Rtemp, lsl, Interpreter::logStackElementSize)); |
301 __ add(Rstack_top, Rstack_top, AsmOperand(Rtemp, lsl, Interpreter::logStackElementSize)); |
308 |
302 |
309 #ifndef AARCH64 |
303 #ifndef AARCH64 |
310 __ convert_retval_to_tos(state); |
304 __ convert_retval_to_tos(state); |
311 #endif // !AARCH64 |
305 #endif // !AARCH64 |
|
306 |
|
307 __ check_and_handle_popframe(); |
|
308 __ check_and_handle_earlyret(); |
312 |
309 |
313 __ dispatch_next(state, step); |
310 __ dispatch_next(state, step); |
314 |
311 |
315 return entry; |
312 return entry; |
316 } |
313 } |
1399 __ sub(R3, R3, R2); // number of additional locals |
1396 __ sub(R3, R3, R2); // number of additional locals |
1400 |
1397 |
1401 #ifdef AARCH64 |
1398 #ifdef AARCH64 |
1402 // setup RmaxStack |
1399 // setup RmaxStack |
1403 __ ldrh(RmaxStack, Address(RconstMethod, ConstMethod::max_stack_offset())); |
1400 __ ldrh(RmaxStack, Address(RconstMethod, ConstMethod::max_stack_offset())); |
1404 __ add(RmaxStack, RmaxStack, MAX2(1, Method::extra_stack_entries())); // reserve slots for exception handler and JSR292 appendix argument |
1401 // We have to add extra reserved slots to max_stack. There are 3 users of the extra slots, |
|
1402 // none of which are at the same time, so we just need to make sure there is enough room |
|
1403 // for the biggest user: |
|
1404 // -reserved slot for exception handler |
|
1405 // -reserved slots for JSR292. Method::extra_stack_entries() is the size. |
|
1406 // -3 reserved slots so get_method_counters() can save some registers before call_VM(). |
|
1407 __ add(RmaxStack, RmaxStack, MAX2(3, Method::extra_stack_entries())); |
1405 #endif // AARCH64 |
1408 #endif // AARCH64 |
1406 |
1409 |
1407 // see if we've got enough room on the stack for locals plus overhead. |
1410 // see if we've got enough room on the stack for locals plus overhead. |
1408 generate_stack_overflow_check(); |
1411 generate_stack_overflow_check(); |
1409 |
1412 |