| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 7ab076aa2d4c5facaba8471d492be81c22a0ba56..f106d5521e43bbd4b4cf45a9517eb272b422e926 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -4779,11 +4779,19 @@ Genesis::Genesis(Isolate* isolate,
|
| global_proxy = factory()->NewUninitializedJSGlobalProxy(proxy_size);
|
| }
|
|
|
| - // CreateNewGlobals.
|
| + // Create a remote placeholder for the global object.
|
| Handle<ObjectTemplateInfo> global_proxy_data =
|
| - v8::Utils::OpenHandle(*global_proxy_template);
|
| + Utils::OpenHandle(*global_proxy_template);
|
| Handle<FunctionTemplateInfo> global_constructor(
|
| FunctionTemplateInfo::cast(global_proxy_data->constructor()));
|
| +
|
| + Handle<ObjectTemplateInfo> global_object_template(
|
| + ObjectTemplateInfo::cast(global_constructor->prototype_template()));
|
| + Handle<JSObject> global_object =
|
| + ApiNatives::InstantiateRemoteObject(
|
| + global_object_template).ToHandleChecked();
|
| +
|
| + // (Re)initialize the global proxy object.
|
| Handle<SharedFunctionInfo> shared =
|
| FunctionTemplateInfo::GetOrCreateSharedFunctionInfo(isolate,
|
| global_constructor);
|
| @@ -4811,7 +4819,10 @@ Genesis::Genesis(Isolate* isolate,
|
| global_proxy->set_native_context(heap()->null_value());
|
|
|
| // DetachGlobal.
|
| - JSObject::ForceSetPrototype(global_proxy, factory()->null_value());
|
| + JSObject::ForceSetPrototype(global_proxy, global_object);
|
| +
|
| + // Hack.
|
| + global_proxy->map()->set_has_hidden_prototype(true);
|
|
|
| global_proxy_ = global_proxy;
|
| }
|
|
|