| Index: src/ia32/stub-cache-ia32.cc
|
| ===================================================================
|
| --- src/ia32/stub-cache-ia32.cc (revision 3749)
|
| +++ src/ia32/stub-cache-ia32.cc (working copy)
|
| @@ -1255,21 +1255,18 @@
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : name
|
| + // -- edx : receiver
|
| // -- esp[0] : return address
|
| - // -- esp[4] : receiver
|
| // -----------------------------------
|
| Label miss;
|
|
|
| - // Get the object from the stack.
|
| - __ mov(ebx, Operand(esp, 1 * kPointerSize));
|
| -
|
| // Generate store field code. Trashes the name register.
|
| GenerateStoreField(masm(),
|
| Builtins::StoreIC_ExtendStorage,
|
| object,
|
| index,
|
| transition,
|
| - ebx, ecx, edx,
|
| + edx, ecx, ebx,
|
| &miss);
|
|
|
| // Handle store cache miss.
|
| @@ -1289,26 +1286,23 @@
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : name
|
| + // -- edx : receiver
|
| // -- esp[0] : return address
|
| - // -- esp[4] : receiver
|
| // -----------------------------------
|
| Label miss;
|
|
|
| - // Get the object from the stack.
|
| - __ mov(ebx, Operand(esp, 1 * kPointerSize));
|
| -
|
| // Check that the object isn't a smi.
|
| - __ test(ebx, Immediate(kSmiTagMask));
|
| + __ test(edx, Immediate(kSmiTagMask));
|
| __ j(zero, &miss, not_taken);
|
|
|
| // Check that the map of the object hasn't changed.
|
| - __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
|
| + __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| Immediate(Handle<Map>(object->map())));
|
| __ j(not_equal, &miss, not_taken);
|
|
|
| // Perform global security token check if needed.
|
| if (object->IsJSGlobalProxy()) {
|
| - __ CheckAccessGlobalProxy(ebx, edx, &miss);
|
| + __ CheckAccessGlobalProxy(edx, ebx, &miss);
|
| }
|
|
|
| // Stub never generated for non-global objects that require access
|
| @@ -1316,7 +1310,7 @@
|
| ASSERT(object->IsJSGlobalProxy() || !object->IsAccessCheckNeeded());
|
|
|
| __ pop(ebx); // remove the return address
|
| - __ push(Operand(esp, 0)); // receiver
|
| + __ push(edx); // receiver
|
| __ push(Immediate(Handle<AccessorInfo>(callback))); // callback info
|
| __ push(ecx); // name
|
| __ push(eax); // value
|
| @@ -1342,26 +1336,23 @@
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : name
|
| + // -- edx : receiver
|
| // -- esp[0] : return address
|
| - // -- esp[4] : receiver
|
| // -----------------------------------
|
| Label miss;
|
|
|
| - // Get the object from the stack.
|
| - __ mov(ebx, Operand(esp, 1 * kPointerSize));
|
| -
|
| // Check that the object isn't a smi.
|
| - __ test(ebx, Immediate(kSmiTagMask));
|
| + __ test(edx, Immediate(kSmiTagMask));
|
| __ j(zero, &miss, not_taken);
|
|
|
| // Check that the map of the object hasn't changed.
|
| - __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
|
| + __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| Immediate(Handle<Map>(receiver->map())));
|
| __ j(not_equal, &miss, not_taken);
|
|
|
| // Perform global security token check if needed.
|
| if (receiver->IsJSGlobalProxy()) {
|
| - __ CheckAccessGlobalProxy(ebx, edx, &miss);
|
| + __ CheckAccessGlobalProxy(edx, ebx, &miss);
|
| }
|
|
|
| // Stub never generated for non-global objects that require access
|
| @@ -1369,7 +1360,7 @@
|
| ASSERT(receiver->IsJSGlobalProxy() || !receiver->IsAccessCheckNeeded());
|
|
|
| __ pop(ebx); // remove the return address
|
| - __ push(Operand(esp, 0)); // receiver
|
| + __ push(edx); // receiver
|
| __ push(ecx); // name
|
| __ push(eax); // value
|
| __ push(ebx); // restore return address
|
| @@ -1395,14 +1386,13 @@
|
| // ----------- S t a t e -------------
|
| // -- eax : value
|
| // -- ecx : name
|
| + // -- edx : receiver
|
| // -- esp[0] : return address
|
| - // -- esp[4] : receiver
|
| // -----------------------------------
|
| Label miss;
|
|
|
| // Check that the map of the global has not changed.
|
| - __ mov(ebx, Operand(esp, kPointerSize));
|
| - __ cmp(FieldOperand(ebx, HeapObject::kMapOffset),
|
| + __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| Immediate(Handle<Map>(object->map())));
|
| __ j(not_equal, &miss, not_taken);
|
|
|
|
|