| Index: src/code-stubs-hydrogen.cc
|
| diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc
|
| index f776abc043cb8d7e8f4c26f4ad4365819df2f5c8..743241f1cd48a64af89fca8e19ac82a00ad41c62 100644
|
| --- a/src/code-stubs-hydrogen.cc
|
| +++ b/src/code-stubs-hydrogen.cc
|
| @@ -1338,22 +1338,20 @@ HValue* CodeStubGraphBuilder<StoreGlobalStub>::BuildCodeInitializedStub() {
|
| Add<HLoadNamedField>(proxy, nullptr, HObjectAccess::ForMap());
|
| HValue* global =
|
| Add<HLoadNamedField>(proxy_map, nullptr, HObjectAccess::ForPrototype());
|
| - Handle<Map> placeholder_map = isolate()->factory()->meta_map();
|
| - HValue* cell = Add<HConstant>(Map::WeakCellForMap(placeholder_map));
|
| - HValue* expected_map =
|
| - Add<HLoadNamedField>(cell, nullptr, HObjectAccess::ForWeakCellValue());
|
| - HValue* map =
|
| - Add<HLoadNamedField>(global, nullptr, HObjectAccess::ForMap());
|
| - IfBuilder map_check(this);
|
| - map_check.IfNot<HCompareObjectEqAndBranch>(expected_map, map);
|
| - map_check.ThenDeopt(Deoptimizer::kUnknownMap);
|
| - map_check.End();
|
| + HValue* current_global = Add<HLoadNamedField>(
|
| + context(), nullptr,
|
| + HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX));
|
| + IfBuilder global_check(this);
|
| + global_check.IfNot<HCompareObjectEqAndBranch>(global, current_global);
|
| + global_check.ThenDeopt(Deoptimizer::kCrossContextGlobalStore);
|
| + global_check.End();
|
| }
|
|
|
| HValue* weak_cell = Add<HConstant>(isolate()->factory()->NewWeakCell(
|
| StoreGlobalStub::property_cell_placeholder(isolate())));
|
| HValue* cell = Add<HLoadNamedField>(weak_cell, nullptr,
|
| HObjectAccess::ForWeakCellValue());
|
| + Add<HCheckHeapObject>(cell);
|
| HObjectAccess access(HObjectAccess::ForCellPayload(isolate()));
|
| HValue* cell_contents = Add<HLoadNamedField>(cell, nullptr, access);
|
|
|
|
|