Index: src/x64/code-stubs-x64.cc |
diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc |
index 40025d343764459272edb2e1e4e4b862ab3707da..8868c7a88adc6c9136d66e29ddce79e837a05ac7 100644 |
--- a/src/x64/code-stubs-x64.cc |
+++ b/src/x64/code-stubs-x64.cc |
@@ -6636,11 +6636,11 @@ void RecordWriteStub::CheckNeedsToInformIncrementalMarker( |
void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) { |
// ----------- S t a t e ------------- |
// -- rax : element value to store |
- // -- rbx : array literal |
- // -- rdi : map of array literal |
// -- rcx : element index as smi |
- // -- rdx : array literal index in function |
// -- rsp[0] : return address |
+ // -- rsp[8] : array literal index in function |
+ // -- rsp[16]: array literal |
+ // clobbers rbx, rdx, rdi |
// ----------------------------------- |
Label element_done; |
@@ -6649,6 +6649,11 @@ void StoreArrayLiteralElementStub::Generate(MacroAssembler* masm) { |
Label slow_elements; |
Label fast_elements; |
+ // Get array literal index, array literal and its map. |
+ __ movq(rdx, Operand(rsp, 1 * kPointerSize)); |
+ __ movq(rbx, Operand(rsp, 2 * kPointerSize)); |
+ __ movq(rdi, FieldOperand(rbx, JSObject::kMapOffset)); |
+ |
__ CheckFastElements(rdi, &double_elements); |
// FAST_*_SMI_ELEMENTS or FAST_*_ELEMENTS |