| Index: src/ia32/code-stubs-ia32.cc
|
| ===================================================================
|
| --- src/ia32/code-stubs-ia32.cc (revision 10387)
|
| +++ src/ia32/code-stubs-ia32.cc (working copy)
|
| @@ -4540,7 +4540,8 @@
|
| // megamorphic.
|
| __ cmp(ecx, Immediate(UninitializedSentinel(isolate)));
|
| __ j(equal, &initialize, Label::kNear);
|
| - // MegamorphicSentinel is a root so no write-barrier is needed.
|
| + // MegamorphicSentinel is an immortal immovable object (undefined) so no
|
| + // write-barrier is needed.
|
| __ mov(FieldOperand(ebx, JSGlobalPropertyCell::kValueOffset),
|
| Immediate(MegamorphicSentinel(isolate)));
|
| __ jmp(&call, Label::kNear);
|
| @@ -4548,14 +4549,7 @@
|
| // An uninitialized cache is patched with the function.
|
| __ bind(&initialize);
|
| __ mov(FieldOperand(ebx, JSGlobalPropertyCell::kValueOffset), edi);
|
| - __ mov(ecx, edi);
|
| - __ RecordWriteField(ebx,
|
| - JSGlobalPropertyCell::kValueOffset,
|
| - ecx,
|
| - edx,
|
| - kDontSaveFPRegs,
|
| - OMIT_REMEMBERED_SET, // Cells are rescanned.
|
| - OMIT_SMI_CHECK);
|
| + // No need for a write barrier here - cells are rescanned.
|
|
|
| __ bind(&call);
|
| }
|
| @@ -4587,6 +4581,8 @@
|
| // non-function case.
|
| __ mov(ebx, Operand(esp, 0));
|
| __ mov(ebx, Operand(ebx, 1));
|
| + // MegamorphicSentinel is an immortal immovable object (undefined) so no
|
| + // write barrier is needed.
|
| __ mov(FieldOperand(ebx, JSGlobalPropertyCell::kValueOffset),
|
| Immediate(MegamorphicSentinel(isolate)));
|
| }
|
|
|