Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(542)

Unified Diff: src/ia32/stub-cache-ia32.cc

Issue 555162: StoreIC interface changed on ia32 to take receiver in edx, not on stack. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ia32/ic-ia32.cc ('k') | src/ia32/virtual-frame-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « src/ia32/ic-ia32.cc ('k') | src/ia32/virtual-frame-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698