hotspot/src/cpu/arm/vm/templateInterpreterGenerator_arm.cpp
changeset 46369 3bf4544bec14
parent 44406 a46a6c4d1dd9
parent 46338 e84b501fa52e
child 46620 750c6edff33b
equal deleted inserted replaced
44470:d10b1eca0b45 46369:3bf4544bec14
   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