Chromium Code Reviews| 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. |