Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1787)

Unified Diff: src/ic/ia32/handler-compiler-ia32.cc

Issue 893073006: Add map-based read barrier to WeakCell Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix merge Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ia32/macro-assembler-ia32.cc ('k') | src/ic/ia32/ic-compiler-ia32.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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.
« no previous file with comments | « src/ia32/macro-assembler-ia32.cc ('k') | src/ic/ia32/ic-compiler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698