Chromium Code Reviews| Index: src/ia32/stub-cache-ia32.cc |
| =================================================================== |
| --- src/ia32/stub-cache-ia32.cc (revision 7494) |
| +++ src/ia32/stub-cache-ia32.cc (working copy) |
| @@ -1464,7 +1464,7 @@ |
| if (argc == 1) { // Otherwise fall through to call builtin. |
| Label exit, attempt_to_grow_elements; |
| - Label with_write_barrier; |
| + NearLabel with_write_barrier; |
| // Get the array's length into eax and calculate new length. |
| __ mov(eax, FieldOperand(edx, JSArray::kLengthOffset)); |
| @@ -1498,17 +1498,9 @@ |
| __ bind(&with_write_barrier); |
| - __ IncrementalMarkingRecordWrite(ebx, |
| - ecx, |
| - edx, |
| - OMIT_SMI_CHECK, |
| - PRESERVE_OBJECT, |
| - DESTROY_VALUE, |
| - PRESERVE_SCRATCH); |
| + __ RecordWrite(ebx, edx, ecx, |
| + EMIT_REMEMBERED_SET, kDontSaveFPRegs, OMIT_SMI_CHECK); |
|
Vyacheslav Egorov (Chromium)
2011/04/06 11:46:40
strange formatting
Erik Corry
2011/04/06 12:31:28
Done.
|
| - __ InNewSpace(ebx, ecx, equal, &exit); |
| - |
| - __ RecordWriteHelper(ebx, edx, ecx, kDontSaveFPRegs); |
| __ ret((argc + 1) * kPointerSize); |
| __ bind(&attempt_to_grow_elements); |
| @@ -1547,13 +1539,10 @@ |
| Immediate(Factory::the_hole_value())); |
| } |
| - __ IncrementalMarkingRecordWrite(ebx, |
| - ecx, |
| - edx, |
| - INLINE_SMI_CHECK, |
| - PRESERVE_OBJECT, |
| - DESTROY_VALUE, |
| - DESTROY_SCRATCH); |
| + // We know the hole is in old space, so we don't need to update the |
| + // remembered set. We also know that the hole is marked black by the |
| + // incremental marker, so we can omit the incremental marking record |
| + // write too. |
|
Vyacheslav Egorov (Chromium)
2011/04/06 11:46:40
this was not a record write for hole, it's record
Erik Corry
2011/04/06 12:31:28
Oops. Nice catch. Fixed. And comment added. Th
|
| // Restore receiver to edx as finish sequence assumes it's here. |
| __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); |
| @@ -2621,13 +2610,8 @@ |
| __ j(zero, &done); |
| __ mov(ecx, eax); |
| - __ IncrementalMarkingRecordWrite(ebx, |
| - ecx, |
| - edx, |
| - INLINE_SMI_CHECK, |
| - DESTROY_OBJECT, |
| - DESTROY_VALUE, |
| - DESTROY_SCRATCH); |
| + // Cells are always in the remembered set. |
| + __ RecordWrite(ebx, edx, ecx, OMIT_REMEMBERED_SET, kDontSaveFPRegs); |
| // Return the value (register eax). |
| __ bind(&done); |