Index: src/arm64/macro-assembler-arm64.cc |
diff --git a/src/arm64/macro-assembler-arm64.cc b/src/arm64/macro-assembler-arm64.cc |
index ea6b3567e3fd7286f17d06245c0ce4a9d1bc5a93..eb8f0d282ef43f5056d80a367ed53cc01d99bc97 100644 |
--- a/src/arm64/macro-assembler-arm64.cc |
+++ b/src/arm64/macro-assembler-arm64.cc |
@@ -812,6 +812,17 @@ void MacroAssembler::Pop(const CPURegister& dst0, const CPURegister& dst1, |
} |
+void MacroAssembler::Push(const Register& src0, const FPRegister& src1) { |
+ int size = src0.SizeInBytes() + src1.SizeInBytes(); |
+ |
+ PushPreamble(size); |
+ // Reserve room for src0 and push src1. |
+ str(src1, MemOperand(StackPointer(), -size, PreIndex)); |
+ // Fill the gap with src0. |
+ str(src0, MemOperand(StackPointer(), src1.SizeInBytes())); |
+} |
+ |
+ |
void MacroAssembler::PushPopQueue::PushQueued( |
PreambleDirective preamble_directive) { |
if (queued_.empty()) return; |
@@ -2915,8 +2926,7 @@ void MacroAssembler::TruncateDoubleToI(Register result, |
TryConvertDoubleToInt64(result, double_input, &done); |
// If we fell through then inline version didn't succeed - call stub instead. |
- Push(lr); |
- Push(double_input); // Put input on stack. |
+ Push(lr, double_input); |
DoubleToIStub stub(isolate(), |
jssp, |