| Index: src/ic/ia32/handler-compiler-ia32.cc
|
| diff --git a/src/ic/ia32/handler-compiler-ia32.cc b/src/ic/ia32/handler-compiler-ia32.cc
|
| index d5221cb1ed3189224c485c67ceefe049945c68ab..7cdcaa8646ddc518db0f3b7c12e946fbe393f99b 100644
|
| --- a/src/ic/ia32/handler-compiler-ia32.cc
|
| +++ b/src/ic/ia32/handler-compiler-ia32.cc
|
| @@ -229,7 +229,7 @@ void PropertyHandlerCompiler::GenerateCheckPropertyCell(
|
| DCHECK(cell->value()->IsTheHole());
|
| Factory* factory = masm->isolate()->factory();
|
| Handle<WeakCell> weak_cell = factory->NewWeakCell(cell);
|
| - __ LoadWeakValue(scratch, weak_cell, miss);
|
| + __ LoadWeakValueNoReadBarrier(scratch, weak_cell, miss);
|
| __ cmp(FieldOperand(scratch, PropertyCell::kValueOffset),
|
| Immediate(factory->the_hole_value()));
|
| __ j(not_equal, miss);
|
| @@ -363,7 +363,7 @@ void NamedStoreHandlerCompiler::GenerateRestoreMap(Handle<Map> transition,
|
| Handle<WeakCell> cell = Map::WeakCellForMap(transition);
|
| Register map_reg = StoreTransitionDescriptor::MapRegister();
|
| DCHECK(!map_reg.is(scratch));
|
| - __ LoadWeakValue(map_reg, cell, miss);
|
| + __ LoadWeakValue(map_reg, cell, scratch, miss);
|
| if (transition->CanBeDeprecated()) {
|
| __ mov(scratch, FieldOperand(map_reg, Map::kBitField3Offset));
|
| __ and_(scratch, Immediate(Map::Deprecated::kMask));
|
| @@ -567,7 +567,7 @@ void NamedLoadHandlerCompiler::GenerateLoadCallback(
|
| isolate()->factory()->NewWeakCell(Handle<HeapObject>::cast(data));
|
| // The callback is alive if this instruction is executed,
|
| // so the weak cell is not cleared and points to data.
|
| - __ GetWeakValue(scratch2(), cell);
|
| + __ GetWeakValue(scratch2(), scratch1(), cell);
|
| __ push(scratch2());
|
| }
|
| __ push(Immediate(isolate()->factory()->undefined_value())); // ReturnValue
|
| @@ -740,7 +740,7 @@ Handle<Code> NamedLoadHandlerCompiler::CompileLoadGlobal(
|
| // Get the value from the cell.
|
| Register result = StoreDescriptor::ValueRegister();
|
| Handle<WeakCell> weak_cell = factory()->NewWeakCell(cell);
|
| - __ LoadWeakValue(result, weak_cell, &miss);
|
| + __ LoadWeakValue(result, weak_cell, scratch1(), &miss);
|
| __ mov(result, FieldOperand(result, PropertyCell::kValueOffset));
|
|
|
| // Check for deleted property if property can actually be deleted.
|
|
|