deps: V8: cherry-pick 6b1b9bca2a8 · nodejs/node@5761724

@@ -1626,21 +1626,24 @@ void MacroAssembler::LoadIsolateField(Register dst, IsolateFieldId id) {

16261626

}

1627162716281628

void 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));

16311633

for (int16_t i = kNumRegisters - 1; i >= 0; i--) {

16321634

if ((regs.bits() & (1 << i)) != 0) {

16331635

stack_offset -= kSystemPointerSize;

16341636

St_d(ToRegister(i), MemOperand(sp, stack_offset));

16351637

}

16361638

}

1637-

addi_d(sp, sp, stack_offset);

16381639

}

1639164016401641

void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {

16411642

DCHECK((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));

16441647

for (int16_t i = kNumRegisters - 1; i >= 0; i--) {

16451648

if ((regs1.bits() & (1 << i)) != 0) {

16461649

stack_offset -= kSystemPointerSize;

@@ -1653,15 +1656,16 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2) {

16531656

St_d(ToRegister(i), MemOperand(sp, stack_offset));

16541657

}

16551658

}

1656-

addi_d(sp, sp, stack_offset);

16571659

}

1658166016591661

void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {

16601662

DCHECK((regs1 & regs2).is_empty());

16611663

DCHECK((regs1 & regs3).is_empty());

16621664

DCHECK((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));

16651669

for (int16_t i = kNumRegisters - 1; i >= 0; i--) {

16661670

if ((regs1.bits() & (1 << i)) != 0) {

16671671

stack_offset -= kSystemPointerSize;

@@ -1680,7 +1684,6 @@ void MacroAssembler::MultiPush(RegList regs1, RegList regs2, RegList regs3) {

16801684

St_d(ToRegister(i), MemOperand(sp, stack_offset));

16811685

}

16821686

}

1683-

addi_d(sp, sp, stack_offset);

16841687

}

1685168816861689

void MacroAssembler::MultiPop(RegList regs) {

@@ -4125,9 +4128,8 @@ void MacroAssembler::EnterFrame(StackFrame::Type type) {

4125412841264129

void MacroAssembler::LeaveFrame(StackFrame::Type type) {

41274130

ASM_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

}

4132413441334135

void MacroAssembler::EnterExitFrame(Register scratch, int stack_space,