Index: src/stub-cache-ia32.cc |
=================================================================== |
--- src/stub-cache-ia32.cc (revision 787) |
+++ src/stub-cache-ia32.cc (working copy) |
@@ -401,16 +401,6 @@ |
return; |
} |
- // Adjust for the number of properties stored in the object. Even in the |
- // face of a transition we can use the old map here because the size of the |
- // object and the number of in-object properties is not going to change. |
- index -= object->map()->inobject_properties(); |
- |
- if (index >= 0) { |
- // Get the properties array (optimistically). |
- __ mov(scratch, FieldOperand(receiver_reg, JSObject::kPropertiesOffset)); |
- } |
- |
if (transition != NULL) { |
// Update the map of the object; no write barrier updating is |
// needed because the map is never in new space. |
@@ -418,6 +408,11 @@ |
Immediate(Handle<Map>(transition))); |
} |
+ // Adjust for the number of properties stored in the object. Even in the |
+ // face of a transition we can use the old map here because the size of the |
+ // object and the number of in-object properties is not going to change. |
+ index -= object->map()->inobject_properties(); |
+ |
if (index < 0) { |
// Set the property straight into the object. |
int offset = object->map()->instance_size() + (index * kPointerSize); |
@@ -430,6 +425,8 @@ |
} else { |
// Write to the properties array. |
int offset = index * kPointerSize + Array::kHeaderSize; |
+ // Get the properties array (optimistically). |
+ __ mov(scratch, FieldOperand(receiver_reg, JSObject::kPropertiesOffset)); |
iposva
2008/11/20 01:10:57
Moving the load of the properties pointer down her
Feng Qian
2008/11/20 16:30:47
Running V8 bench suite (Richards, DeltaBlue, Crypt
|
__ mov(FieldOperand(scratch, offset), eax); |
// Update the write barrier for the array address. |