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

Unified Diff: src/crankshaft/hydrogen.cc

Issue 2454513003: Revert of [compiler] Properly validate stable map assumption for globals. (Closed)
Patch Set: Created 4 years, 2 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/compiler/js-global-object-specialization.cc ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/crankshaft/hydrogen.cc
diff --git a/src/crankshaft/hydrogen.cc b/src/crankshaft/hydrogen.cc
index d43c03285047fe51adbbec36dcab6c0714d630e3..7182b6586c9f4a17af0bffc7b13373a80a4a4065 100644
--- a/src/crankshaft/hydrogen.cc
+++ b/src/crankshaft/hydrogen.cc
@@ -6522,19 +6522,11 @@
access = access.WithRepresentation(Representation::Smi());
break;
case PropertyCellConstantType::kStableMap: {
- // First check that the previous value of the {cell} still has the
- // map that we are about to check the new {value} for. If not, then
- // the stable map assumption was invalidated and we cannot continue
- // with the optimized code.
- Handle<HeapObject> cell_value(HeapObject::cast(cell->value()));
- Handle<Map> cell_value_map(cell_value->map());
- HCheckMaps* cell_value_check = Add<HCheckMaps>(
- Add<HConstant>(cell_value, Representation::HeapObject()),
- cell_value_map);
- cell_value_check->ClearDependsOnFlag(kElementsKind);
- // Now check that the new {value} is a HeapObject with the same map.
+ // The map may no longer be stable, deopt if it's ever different from
+ // what is currently there, which will allow for restablization.
+ Handle<Map> map(HeapObject::cast(cell->value())->map());
Add<HCheckHeapObject>(value);
- value = Add<HCheckMaps>(value, cell_value_map);
+ value = Add<HCheckMaps>(value, map);
access = access.WithRepresentation(Representation::HeapObject());
break;
}
« no previous file with comments | « src/compiler/js-global-object-specialization.cc ('k') | src/crankshaft/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698