Index: src/x64/ic-x64.cc |
diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc |
index 27a96674cf7d02c8d40235e8e8549c6f6f3c1985..1e94927448e1cf35fdb2143631607182f2a7f622 100644 |
--- a/src/x64/ic-x64.cc |
+++ b/src/x64/ic-x64.cc |
@@ -712,12 +712,11 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm, |
// Writing a non-smi, check whether array allows non-smi elements. |
// r9: receiver's map |
__ CheckFastObjectElements(r9, &slow, Label::kNear); |
- __ lea(rcx, |
- FieldOperand(rbx, rcx, times_pointer_size, FixedArray::kHeaderSize)); |
- __ movq(Operand(rcx, 0), rax); |
- __ movq(rdx, rax); |
- __ RecordWrite( |
- rbx, rcx, rdx, kDontSaveFPRegs, EMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
+ __ movq(FieldOperand(rbx, rcx, times_pointer_size, FixedArray::kHeaderSize), |
+ rax); |
+ __ movq(rdx, rax); // Preserve the value which is returned. |
+ __ RecordWriteArray( |
+ rbx, rax, rcx, kDontSaveFPRegs, EMIT_REMEMBERED_SET, OMIT_SMI_CHECK); |
__ ret(0); |
__ bind(&fast_double_with_map_check); |