| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 5fee78310d4575e97d723900a44d590c8bf70603..c3e9d24e11ad0bbee5c6ea81df61bd6c1955ca5c 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -238,7 +238,7 @@ class Genesis BASE_EMBEDDED {
|
| void InstallTypedArray(const char* name, ElementsKind elements_kind,
|
| Handle<JSFunction>* fun);
|
| bool InstallExperimentalNatives();
|
| - bool InstallExtraNatives();
|
| + bool InstallExtraNatives(ContextType context_type);
|
| bool InstallDebuggerNatives();
|
| void InstallBuiltinFunctionIds();
|
| void InstallExperimentalBuiltinFunctionIds();
|
| @@ -2100,12 +2100,6 @@ bool Genesis::InstallNatives(ContextType context_type) {
|
| "utils container for native scripts");
|
| native_context()->set_natives_utils_object(*utils);
|
|
|
| - Handle<JSObject> extras_binding =
|
| - factory()->NewJSObject(isolate()->object_function());
|
| - JSObject::NormalizeProperties(extras_binding, CLEAR_INOBJECT_PROPERTIES, 2,
|
| - "container for binding to/from extra natives");
|
| - native_context()->set_extras_binding_object(*extras_binding);
|
| -
|
| if (FLAG_expose_natives_as != NULL) {
|
| Handle<String> utils_key = factory()->NewStringFromAsciiChecked("utils");
|
| JSObject::AddProperty(builtins, utils_key, utils, NONE);
|
| @@ -2613,7 +2607,19 @@ bool Genesis::InstallExperimentalNatives() {
|
| }
|
|
|
|
|
| -bool Genesis::InstallExtraNatives() {
|
| +bool Genesis::InstallExtraNatives(ContextType context_type) {
|
| + if (context_type == THIN_CONTEXT) {
|
| + return true;
|
| + }
|
| +
|
| + HandleScope scope(isolate());
|
| +
|
| + Handle<JSObject> extras_binding =
|
| + factory()->NewJSObject(isolate()->object_function());
|
| + JSObject::NormalizeProperties(extras_binding, CLEAR_INOBJECT_PROPERTIES, 2,
|
| + "container for binding to/from extra natives");
|
| + native_context()->set_extras_binding_object(*extras_binding);
|
| +
|
| for (int i = ExtraNatives::GetDebuggerCount();
|
| i < ExtraNatives::GetBuiltinsCount(); i++) {
|
| if (!Bootstrapper::CompileExtraBuiltin(isolate(), i)) return false;
|
| @@ -3218,6 +3224,7 @@ Genesis::Genesis(Isolate* isolate,
|
| InitializeNormalizedMapCaches();
|
|
|
| if (!InstallNatives(context_type)) return;
|
| + if (!InstallExtraNatives(context_type)) return;
|
|
|
| MakeFunctionInstancePrototypeWritable();
|
|
|
| @@ -3227,14 +3234,13 @@ Genesis::Genesis(Isolate* isolate,
|
| isolate->counters()->contexts_created_from_scratch()->Increment();
|
| }
|
|
|
| - // Install experimental and extra natives. Do not include them into the
|
| + // Install experimental natives. Do not include them into the
|
| // snapshot as we should be able to turn them off at runtime. Re-installing
|
| // them after they have already been deserialized would also fail.
|
| if (context_type == FULL_CONTEXT) {
|
| if (!isolate->serializer_enabled()) {
|
| InitializeExperimentalGlobal();
|
| if (!InstallExperimentalNatives()) return;
|
| - if (!InstallExtraNatives()) return;
|
| // By now the utils object is useless and can be removed.
|
| native_context()->set_natives_utils_object(
|
| isolate->heap()->undefined_value());
|
|
|