deps: V8: cherry-pick 6b1b9bca2a8 · nodejs/node@5761724
@@ -1626,21 +1626,24 @@ void MacroAssembler::LoadIsolateField(Register dst, IsolateFieldId id) {
16261626}
1627162716281628void MacroAssembler::MultiPush(RegList regs) {
1629-int16_t stack_offset = 0;
1629+int16_t num_to_push = regs.Count();
1630+int16_t stack_offset = num_to_push * kSystemPointerSize;
163016311632+Sub_d(sp, sp, Operand(stack_offset));
16311633for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
16321634if ((regs.bits() & (1 << i)) != 0) {
16331635 stack_offset -= kSystemPointerSize;
16341636St_d(ToRegister(i), MemOperand(sp, stack_offset));
16351637 }
16361638 }
1637-addi_d(sp, sp, stack_offset);
16381639}
1639164016401641void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {
16411642DCHECK((regs1 & regs2).is_empty());
1642-int16_t stack_offset = 0;
1643+int16_t num_to_push = regs1.Count() + regs2.Count();
1644+int16_t stack_offset = num_to_push * kSystemPointerSize;
164316451646+Sub_d(sp, sp, Operand(stack_offset));
16441647for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
16451648if ((regs1.bits() & (1 << i)) != 0) {
16461649 stack_offset -= kSystemPointerSize;
@@ -1653,15 +1656,16 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {
16531656St_d(ToRegister(i), MemOperand(sp, stack_offset));
16541657 }
16551658 }
1656-addi_d(sp, sp, stack_offset);
16571659}
1658166016591661void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {
16601662DCHECK((regs1 & regs2).is_empty());
16611663DCHECK((regs1 & regs3).is_empty());
16621664DCHECK((regs2 & regs3).is_empty());
1663-int16_t stack_offset = 0;
1665+int16_t num_to_push = regs1.Count() + regs2.Count() + regs3.Count();
1666+int16_t stack_offset = num_to_push * kSystemPointerSize;
166416671668+Sub_d(sp, sp, Operand(stack_offset));
16651669for (int16_t i = kNumRegisters - 1; i >= 0; i--) {
16661670if ((regs1.bits() & (1 << i)) != 0) {
16671671 stack_offset -= kSystemPointerSize;
@@ -1680,7 +1684,6 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {
16801684St_d(ToRegister(i), MemOperand(sp, stack_offset));
16811685 }
16821686 }
1683-addi_d(sp, sp, stack_offset);
16841687}
1685168816861689void MacroAssembler::MultiPop(RegList regs) {
@@ -4125,9 +4128,8 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) {
4125412841264129void MacroAssembler::LeaveFrame(StackFrame::Type type) {
41274130ASM_CODE_COMMENT(this);
4128-addi_d(sp, fp, 2 * kSystemPointerSize);
4129-Ld_d(ra, MemOperand(fp, 1 * kSystemPointerSize));
4130-Ld_d(fp, MemOperand(fp, 0 * kSystemPointerSize));
4131+Move(sp, fp);
4132+Pop(ra, fp);
41314133}
4132413441334135void MacroAssembler::EnterExitFrame(Register scratch, int stack_space,