Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index b36f4f059332b93b0be6eeea2fc52f9bb0b07b2e..867a4bcbc02e2067b380b163e7708695ac34ad92 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -981,7 +981,6 @@ void MacroAssembler::Set(const Operand& dst, intptr_t x) { |
movp(dst, kScratchRegister); |
} |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
movp(dst, Immediate(static_cast<int32_t>(x))); |
} |
} |
@@ -2622,7 +2621,6 @@ void MacroAssembler::Push(Register src) { |
if (kPointerSize == kInt64Size) { |
pushq(src); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
// x32 uses 64-bit push for rbp in the prologue. |
ASSERT(src.code() != rbp.code()); |
leal(rsp, Operand(rsp, -4)); |
@@ -2635,7 +2633,6 @@ void MacroAssembler::Push(const Operand& src) { |
if (kPointerSize == kInt64Size) { |
pushq(src); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
movp(kScratchRegister, src); |
leal(rsp, Operand(rsp, -4)); |
movp(Operand(rsp, 0), kScratchRegister); |
@@ -2643,11 +2640,20 @@ void MacroAssembler::Push(const Operand& src) { |
} |
+void MacroAssembler::PushQuad(const Operand& src) { |
+ if (kPointerSize == kInt64Size) { |
+ pushq(src); |
+ } else { |
+ movp(kScratchRegister, src); |
+ pushq(kScratchRegister); |
+ } |
+} |
+ |
+ |
void MacroAssembler::Push(Immediate value) { |
if (kPointerSize == kInt64Size) { |
pushq(value); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
leal(rsp, Operand(rsp, -4)); |
movp(Operand(rsp, 0), value); |
} |
@@ -2658,7 +2664,6 @@ void MacroAssembler::PushImm32(int32_t imm32) { |
if (kPointerSize == kInt64Size) { |
pushq_imm32(imm32); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
leal(rsp, Operand(rsp, -4)); |
movp(Operand(rsp, 0), Immediate(imm32)); |
} |
@@ -2669,7 +2674,6 @@ void MacroAssembler::Pop(Register dst) { |
if (kPointerSize == kInt64Size) { |
popq(dst); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
// x32 uses 64-bit pop for rbp in the epilogue. |
ASSERT(dst.code() != rbp.code()); |
movp(dst, Operand(rsp, 0)); |
@@ -2682,7 +2686,6 @@ void MacroAssembler::Pop(const Operand& dst) { |
if (kPointerSize == kInt64Size) { |
popq(dst); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
Register scratch = dst.AddressUsesRegister(kScratchRegister) |
? kSmiConstantRegister : kScratchRegister; |
movp(scratch, Operand(rsp, 0)); |
@@ -2698,6 +2701,16 @@ void MacroAssembler::Pop(const Operand& dst) { |
} |
+void MacroAssembler::PopQuad(const Operand& dst) { |
+ if (kPointerSize == kInt64Size) { |
+ popq(dst); |
+ } else { |
+ popq(kScratchRegister); |
+ movp(dst, kScratchRegister); |
+ } |
+} |
+ |
+ |
void MacroAssembler::LoadSharedFunctionInfoSpecialField(Register dst, |
Register base, |
int offset) { |
@@ -2739,7 +2752,6 @@ void MacroAssembler::Jump(const Operand& op) { |
if (kPointerSize == kInt64Size) { |
jmp(op); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
movp(kScratchRegister, op); |
jmp(kScratchRegister); |
} |
@@ -2781,7 +2793,6 @@ void MacroAssembler::Call(const Operand& op) { |
if (kPointerSize == kInt64Size) { |
call(op); |
} else { |
- ASSERT(kPointerSize == kInt32Size); |
movp(kScratchRegister, op); |
call(kScratchRegister); |
} |