Index: src/x64/ic-x64.cc |
=================================================================== |
--- src/x64/ic-x64.cc (revision 2535) |
+++ src/x64/ic-x64.cc (working copy) |
@@ -183,12 +183,10 @@ |
__ movq(rax, Operand(rsp, kPointerSize)); |
__ movq(rcx, Operand(rsp, 2 * kPointerSize)); |
- |
- // Move the return address below the arguments. |
__ pop(rbx); |
- __ push(rcx); |
- __ push(rax); |
- __ push(rbx); |
+ __ push(rcx); // receiver |
+ __ push(rax); // name |
+ __ push(rbx); // return address |
// Perform tail call to the entry. |
__ TailCallRuntime(f, 2); |
@@ -369,19 +367,19 @@ |
// -- rsp[16] : receiver |
// ----------------------------------- |
- // Move the return address below the arguments. |
__ pop(rcx); |
- __ push(Operand(rsp, 1 * kPointerSize)); |
- __ push(Operand(rsp, 1 * kPointerSize)); |
- __ push(rax); |
- __ push(rcx); |
+ __ push(Operand(rsp, 1 * kPointerSize)); // receiver |
+ __ push(Operand(rsp, 1 * kPointerSize)); // key |
+ __ push(rax); // value |
+ __ push(rcx); // return address |
// Do tail-call to runtime routine. |
__ TailCallRuntime(f, 3); |
} |
void KeyedStoreIC::GenerateExtendStorage(MacroAssembler* masm) { |
- Generate(masm, ExternalReference(IC_Utility(kKeyedStoreIC_Miss))); |
+ __ int3(); |
+ __ movq(rax, Immediate(0xdead1234)); |
} |
@@ -584,11 +582,10 @@ |
__ movq(rax, Operand(rsp, kPointerSize)); |
- // Move the return address below the arguments. |
__ pop(rbx); |
- __ push(rax); |
- __ push(rcx); |
- __ push(rbx); |
+ __ push(rax); // receiver |
+ __ push(rcx); // name |
+ __ push(rbx); // return address |
// Perform tail call to the entry. |
__ TailCallRuntime(f, 2); |
@@ -654,19 +651,33 @@ |
// -- rsp[0] : return address |
// -- rsp[8] : receiver |
// ----------------------------------- |
- // Move the return address below the arguments. |
__ pop(rbx); |
- __ push(Operand(rsp, 0)); |
- __ push(rcx); |
- __ push(rax); |
- __ push(rbx); |
+ __ push(Operand(rsp, 0)); // receiver |
+ __ push(rcx); // name |
+ __ push(rax); // value |
+ __ push(rbx); // return address |
// Perform tail call to the entry. |
__ TailCallRuntime(f, 3); |
} |
void StoreIC::GenerateExtendStorage(MacroAssembler* masm) { |
- Generate(masm, ExternalReference(IC_Utility(kStoreIC_Miss))); |
+ // ----------- S t a t e ------------- |
+ // -- rax : value |
+ // -- rcx : Map (target of map transition) |
+ // -- rsp[0] : return address |
+ // -- rsp[8] : receiver |
+ // ----------------------------------- |
+ |
+ __ pop(rbx); |
+ __ push(Operand(rsp, 0)); // receiver |
+ __ push(rcx); // transition map |
+ __ push(rax); // value |
+ __ push(rbx); // return address |
+ |
+ // Perform tail call to the entry. |
+ __ TailCallRuntime( |
+ ExternalReference(IC_Utility(kSharedStoreIC_ExtendStorage)), 3); |
} |
void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |