Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index 6e609934c0b109a18dc91b5b38a740f09e5869b3..576e2f4f1769c348780960d6824f56fd9a332110 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -1384,19 +1384,19 @@ Handle<Code> CallStubCompiler::CompileArrayPushCall( |
__ CheckFastSmiOnlyElements(rbx, &call_builtin); |
// rdx: receiver |
// rbx: map |
+ __ movq(r9, rdi); // Backup rdi as it is going to be trashed. |
__ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, |
FAST_ELEMENTS, |
rbx, |
- r10, |
+ rdi, |
&call_builtin); |
ElementsTransitionGenerator::GenerateSmiOnlyToObject(masm()); |
+ __ movq(rdi, r9); |
__ bind(&fast_object); |
} else { |
__ CheckFastObjectElements(rbx, &call_builtin); |
} |
- __ CheckFastObjectElements(rbx, &call_builtin); |
- |
// Save new length. |
__ Integer32ToSmiField(FieldOperand(rdx, JSArray::kLengthOffset), rax); |