equal
deleted
inserted
replaced
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. |