hotspot/src/cpu/arm/vm/templateInterpreterGenerator_arm.cpp
changeset 46620 750c6edff33b
parent 46369 3bf4544bec14
child 46625 edefffab74e2
equal deleted inserted replaced
46619:a3919f5e8d2b 46620:750c6edff33b
   673   }
   673   }
   674 
   674 
   675   // Rstack_top & RextendedSP
   675   // Rstack_top & RextendedSP
   676   __ sub(Rstack_top, SP, 10*wordSize);
   676   __ sub(Rstack_top, SP, 10*wordSize);
   677   if (native_call) {
   677   if (native_call) {
   678     __ sub(RextendedSP, Rstack_top, round_to(wordSize, StackAlignmentInBytes));    // reserve 1 slot for exception handling
   678     __ sub(RextendedSP, Rstack_top, align_up(wordSize, StackAlignmentInBytes));    // reserve 1 slot for exception handling
   679   } else {
   679   } else {
   680     __ sub(RextendedSP, Rstack_top, AsmOperand(RmaxStack, lsl, Interpreter::logStackElementSize));
   680     __ sub(RextendedSP, Rstack_top, AsmOperand(RmaxStack, lsl, Interpreter::logStackElementSize));
   681     __ align_reg(RextendedSP, RextendedSP, StackAlignmentInBytes);
   681     __ align_reg(RextendedSP, RextendedSP, StackAlignmentInBytes);
   682   }
   682   }
   683   __ mov(SP, RextendedSP);
   683   __ mov(SP, RextendedSP);
  1093   __ align_reg(SP, Rtemp, StackAlignmentInBytes);
  1093   __ align_reg(SP, Rtemp, StackAlignmentInBytes);
  1094 
  1094 
  1095   // Allocate more stack space to accomodate all arguments passed on GP and FP registers:
  1095   // Allocate more stack space to accomodate all arguments passed on GP and FP registers:
  1096   // 8 * wordSize for GPRs
  1096   // 8 * wordSize for GPRs
  1097   // 8 * wordSize for FPRs
  1097   // 8 * wordSize for FPRs
  1098   int reg_arguments = round_to(8*wordSize + 8*wordSize, StackAlignmentInBytes);
  1098   int reg_arguments = align_up(8*wordSize + 8*wordSize, StackAlignmentInBytes);
  1099 #else
  1099 #else
  1100 
  1100 
  1101   // C functions need aligned stack
  1101   // C functions need aligned stack
  1102   __ bic(SP, SP, StackAlignmentInBytes - 1);
  1102   __ bic(SP, SP, StackAlignmentInBytes - 1);
  1103   // Multiply by BytesPerLong instead of BytesPerWord, because calling convention
  1103   // Multiply by BytesPerLong instead of BytesPerWord, because calling convention
  1106 
  1106 
  1107 #ifdef __ABI_HARD__
  1107 #ifdef __ABI_HARD__
  1108   // Allocate more stack space to accomodate all GP as well as FP registers:
  1108   // Allocate more stack space to accomodate all GP as well as FP registers:
  1109   // 4 * wordSize
  1109   // 4 * wordSize
  1110   // 8 * BytesPerLong
  1110   // 8 * BytesPerLong
  1111   int reg_arguments = round_to((4*wordSize) + (8*BytesPerLong), StackAlignmentInBytes);
  1111   int reg_arguments = align_up((4*wordSize) + (8*BytesPerLong), StackAlignmentInBytes);
  1112 #else
  1112 #else
  1113   // Reserve at least 4 words on the stack for loading
  1113   // Reserve at least 4 words on the stack for loading
  1114   // of parameters passed on registers (R0-R3).
  1114   // of parameters passed on registers (R0-R3).
  1115   // See generate_slow_signature_handler().
  1115   // See generate_slow_signature_handler().
  1116   // It is also used for JNIEnv & class additional parameters.
  1116   // It is also used for JNIEnv & class additional parameters.