hotspot/src/cpu/arm/vm/abstractInterpreter_arm.cpp
changeset 46620 750c6edff33b
parent 46608 b0da00b77053
child 46625 edefffab74e2
equal deleted inserted replaced
46619:a3919f5e8d2b 46620:750c6edff33b
   106          ((callee_locals - callee_param_count)*Interpreter::stackElementWords) +
   106          ((callee_locals - callee_param_count)*Interpreter::stackElementWords) +
   107          (moncount*frame::interpreter_frame_monitor_size()) +
   107          (moncount*frame::interpreter_frame_monitor_size()) +
   108          tempcount*Interpreter::stackElementWords + extra_args;
   108          tempcount*Interpreter::stackElementWords + extra_args;
   109 
   109 
   110 #ifdef AARCH64
   110 #ifdef AARCH64
   111   size = round_to(size, StackAlignmentInBytes/BytesPerWord);
   111   size = align_up(size, StackAlignmentInBytes/BytesPerWord);
   112 #endif // AARCH64
   112 #endif // AARCH64
   113 
   113 
   114   return size;
   114   return size;
   115 }
   115 }
   116 
   116 
   187       assert(!inv.is_invokedynamic() && MethodHandles::has_member_arg(inv.klass(), inv.name()), "adjusted caller_actual_parameters, but no member arg");
   187       assert(!inv.is_invokedynamic() && MethodHandles::has_member_arg(inv.klass(), inv.name()), "adjusted caller_actual_parameters, but no member arg");
   188     }
   188     }
   189   }
   189   }
   190   if (caller->is_interpreted_frame()) {
   190   if (caller->is_interpreted_frame()) {
   191     intptr_t* locals_base = (locals - method->max_locals()*Interpreter::stackElementWords + 1);
   191     intptr_t* locals_base = (locals - method->max_locals()*Interpreter::stackElementWords + 1);
   192     locals_base = (intptr_t*)round_down((intptr_t)locals_base, StackAlignmentInBytes);
   192     locals_base = align_down(locals_base, StackAlignmentInBytes);
   193     assert(interpreter_frame->sender_sp() <= locals_base, "interpreter-to-interpreter frame chaining");
   193     assert(interpreter_frame->sender_sp() <= locals_base, "interpreter-to-interpreter frame chaining");
   194 
   194 
   195   } else if (caller->is_compiled_frame()) {
   195   } else if (caller->is_compiled_frame()) {
   196     assert(locals + 1 <= caller->unextended_sp(), "compiled-to-interpreter frame chaining");
   196     assert(locals + 1 <= caller->unextended_sp(), "compiled-to-interpreter frame chaining");
   197 
   197 
   225   //   -3 reserved slots so get_method_counters() can save some registers before call_VM().
   225   //   -3 reserved slots so get_method_counters() can save some registers before call_VM().
   226   int max_stack = method->constMethod()->max_stack() + MAX2(3, Method::extra_stack_entries());
   226   int max_stack = method->constMethod()->max_stack() + MAX2(3, Method::extra_stack_entries());
   227   intptr_t* extended_sp = (intptr_t*) monbot  -
   227   intptr_t* extended_sp = (intptr_t*) monbot  -
   228     (max_stack * Interpreter::stackElementWords) -
   228     (max_stack * Interpreter::stackElementWords) -
   229     popframe_extra_args;
   229     popframe_extra_args;
   230   extended_sp = (intptr_t*)round_down((intptr_t)extended_sp, StackAlignmentInBytes);
   230   extended_sp = align_down(extended_sp, StackAlignmentInBytes);
   231   interpreter_frame->interpreter_frame_set_extended_sp(extended_sp);
   231   interpreter_frame->interpreter_frame_set_extended_sp(extended_sp);
   232 #else
   232 #else
   233   interpreter_frame->interpreter_frame_set_last_sp(stack_top);
   233   interpreter_frame->interpreter_frame_set_last_sp(stack_top);
   234 #endif // AARCH64
   234 #endif // AARCH64
   235 
   235 
   237   // value for sender_sp that allows walking the stack but isn't
   237   // value for sender_sp that allows walking the stack but isn't
   238   // truly correct. Correct the value here.
   238   // truly correct. Correct the value here.
   239 
   239 
   240 #ifdef AARCH64
   240 #ifdef AARCH64
   241   if (caller->is_interpreted_frame()) {
   241   if (caller->is_interpreted_frame()) {
   242     intptr_t* sender_sp = (intptr_t*)round_down((intptr_t)caller->interpreter_frame_tos_address(), StackAlignmentInBytes);
   242     intptr_t* sender_sp = align_down(caller->interpreter_frame_tos_address(), StackAlignmentInBytes);
   243     interpreter_frame->set_interpreter_frame_sender_sp(sender_sp);
   243     interpreter_frame->set_interpreter_frame_sender_sp(sender_sp);
   244 
   244 
   245   } else {
   245   } else {
   246     // in case of non-interpreter caller sender_sp of the oldest frame is already
   246     // in case of non-interpreter caller sender_sp of the oldest frame is already
   247     // set to valid value
   247     // set to valid value