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

Side by Side Diff: src/bootstrapper.cc

Issue 2094293002: Remove thin context as it's dead code (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 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 unified diff | Download patch
« no previous file with comments | « src/bootstrapper.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/bootstrapper.h" 5 #include "src/bootstrapper.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api-natives.h" 8 #include "src/api-natives.h"
9 #include "src/base/ieee754.h" 9 #include "src/base/ieee754.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 324
325 Handle<Context> Bootstrapper::CreateEnvironment( 325 Handle<Context> Bootstrapper::CreateEnvironment(
326 MaybeHandle<JSGlobalProxy> maybe_global_proxy, 326 MaybeHandle<JSGlobalProxy> maybe_global_proxy,
327 v8::Local<v8::ObjectTemplate> global_proxy_template, 327 v8::Local<v8::ObjectTemplate> global_proxy_template,
328 v8::ExtensionConfiguration* extensions, size_t context_snapshot_index, 328 v8::ExtensionConfiguration* extensions, size_t context_snapshot_index,
329 GlobalContextType context_type) { 329 GlobalContextType context_type) {
330 HandleScope scope(isolate_); 330 HandleScope scope(isolate_);
331 Genesis genesis(isolate_, maybe_global_proxy, global_proxy_template, 331 Genesis genesis(isolate_, maybe_global_proxy, global_proxy_template,
332 extensions, context_snapshot_index, context_type); 332 extensions, context_snapshot_index, context_type);
333 Handle<Context> env = genesis.result(); 333 Handle<Context> env = genesis.result();
334 if (env.is_null() || 334 if (env.is_null() || !InstallExtensions(env, extensions)) {
335 (context_type != THIN_CONTEXT && !InstallExtensions(env, extensions))) {
336 return Handle<Context>(); 335 return Handle<Context>();
337 } 336 }
338 return scope.CloseAndEscape(env); 337 return scope.CloseAndEscape(env);
339 } 338 }
340 339
341 340
342 static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) { 341 static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) {
343 // object.__proto__ = proto; 342 // object.__proto__ = proto;
344 Handle<Map> old_map = Handle<Map>(object->map()); 343 Handle<Map> old_map = Handle<Map>(object->map());
345 Handle<Map> new_map = Map::Copy(old_map, "SetObjectPrototype"); 344 Handle<Map> new_map = Map::Copy(old_map, "SetObjectPrototype");
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
1633 global, "URIError", JS_ERROR_TYPE, JSObject::kHeaderSize, 1632 global, "URIError", JS_ERROR_TYPE, JSObject::kHeaderSize,
1634 isolate->initial_object_prototype(), Builtins::kIllegal); 1633 isolate->initial_object_prototype(), Builtins::kIllegal);
1635 InstallWithIntrinsicDefaultProto(isolate, uri_error_fun, 1634 InstallWithIntrinsicDefaultProto(isolate, uri_error_fun,
1636 Context::URI_ERROR_FUNCTION_INDEX); 1635 Context::URI_ERROR_FUNCTION_INDEX);
1637 } 1636 }
1638 1637
1639 // Initialize the embedder data slot. 1638 // Initialize the embedder data slot.
1640 Handle<FixedArray> embedder_data = factory->NewFixedArray(3); 1639 Handle<FixedArray> embedder_data = factory->NewFixedArray(3);
1641 native_context()->set_embedder_data(*embedder_data); 1640 native_context()->set_embedder_data(*embedder_data);
1642 1641
1643 if (context_type == THIN_CONTEXT) return;
1644
1645 { // -- J S O N 1642 { // -- J S O N
1646 Handle<String> name = factory->InternalizeUtf8String("JSON"); 1643 Handle<String> name = factory->InternalizeUtf8String("JSON");
1647 Handle<JSFunction> cons = factory->NewFunction(name); 1644 Handle<JSFunction> cons = factory->NewFunction(name);
1648 JSFunction::SetInstancePrototype(cons, 1645 JSFunction::SetInstancePrototype(cons,
1649 Handle<Object>(native_context()->initial_object_prototype(), isolate)); 1646 Handle<Object>(native_context()->initial_object_prototype(), isolate));
1650 Handle<JSObject> json_object = factory->NewJSObject(cons, TENURED); 1647 Handle<JSObject> json_object = factory->NewJSObject(cons, TENURED);
1651 DCHECK(json_object->IsJSObject()); 1648 DCHECK(json_object->IsJSObject());
1652 JSObject::AddProperty(global, name, json_object, DONT_ENUM); 1649 JSObject::AddProperty(global, name, json_object, DONT_ENUM);
1653 SimpleInstallFunction(json_object, "parse", Builtins::kJsonParse, 2, false); 1650 SimpleInstallFunction(json_object, "parse", Builtins::kJsonParse, 2, false);
1654 SimpleInstallFunction(json_object, "stringify", Builtins::kJsonStringify, 3, 1651 SimpleInstallFunction(json_object, "stringify", Builtins::kJsonStringify, 3,
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after
2352 HandleScope scope(isolate()); 2349 HandleScope scope(isolate());
2353 Handle<String> natives_key = 2350 Handle<String> natives_key =
2354 factory()->InternalizeUtf8String(FLAG_expose_natives_as); 2351 factory()->InternalizeUtf8String(FLAG_expose_natives_as);
2355 uint32_t dummy_index; 2352 uint32_t dummy_index;
2356 if (natives_key->AsArrayIndex(&dummy_index)) break; 2353 if (natives_key->AsArrayIndex(&dummy_index)) break;
2357 Handle<Object> utils = isolate()->natives_utils_object(); 2354 Handle<Object> utils = isolate()->natives_utils_object();
2358 Handle<JSObject> global = isolate()->global_object(); 2355 Handle<JSObject> global = isolate()->global_object();
2359 JSObject::AddProperty(global, natives_key, utils, DONT_ENUM); 2356 JSObject::AddProperty(global, natives_key, utils, DONT_ENUM);
2360 break; 2357 break;
2361 } 2358 }
2362 case THIN_CONTEXT:
2363 break;
2364 } 2359 }
2365 2360
2366 // The utils object can be removed for cases that reach this point. 2361 // The utils object can be removed for cases that reach this point.
2367 native_context()->set_natives_utils_object(heap()->undefined_value()); 2362 native_context()->set_natives_utils_object(heap()->undefined_value());
2368 } 2363 }
2369 2364
2370 2365
2371 void Bootstrapper::ExportFromRuntime(Isolate* isolate, 2366 void Bootstrapper::ExportFromRuntime(Isolate* isolate,
2372 Handle<JSObject> container) { 2367 Handle<JSObject> container) {
2373 Factory* factory = isolate->factory(); 2368 Factory* factory = isolate->factory();
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
2907 2902
2908 InstallInternalArray(extras_utils, "InternalPackedArray", FAST_ELEMENTS); 2903 InstallInternalArray(extras_utils, "InternalPackedArray", FAST_ELEMENTS);
2909 2904
2910 int builtin_index = Natives::GetDebuggerCount(); 2905 int builtin_index = Natives::GetDebuggerCount();
2911 // Only run prologue.js and runtime.js at this point. 2906 // Only run prologue.js and runtime.js at this point.
2912 DCHECK_EQ(builtin_index, Natives::GetIndex("prologue")); 2907 DCHECK_EQ(builtin_index, Natives::GetIndex("prologue"));
2913 if (!Bootstrapper::CompileBuiltin(isolate(), builtin_index++)) return false; 2908 if (!Bootstrapper::CompileBuiltin(isolate(), builtin_index++)) return false;
2914 DCHECK_EQ(builtin_index, Natives::GetIndex("runtime")); 2909 DCHECK_EQ(builtin_index, Natives::GetIndex("runtime"));
2915 if (!Bootstrapper::CompileBuiltin(isolate(), builtin_index++)) return false; 2910 if (!Bootstrapper::CompileBuiltin(isolate(), builtin_index++)) return false;
2916 2911
2917 // A thin context is ready at this point.
2918 if (context_type == THIN_CONTEXT) return true;
2919
2920 { 2912 {
2921 // Builtin function for OpaqueReference -- a JSValue-based object, 2913 // Builtin function for OpaqueReference -- a JSValue-based object,
2922 // that keeps its field isolated from JavaScript code. It may store 2914 // that keeps its field isolated from JavaScript code. It may store
2923 // objects, that JavaScript code may not access. 2915 // objects, that JavaScript code may not access.
2924 Handle<JSFunction> opaque_reference_fun = factory()->NewFunction( 2916 Handle<JSFunction> opaque_reference_fun = factory()->NewFunction(
2925 factory()->empty_string(), isolate()->builtins()->Illegal(), 2917 factory()->empty_string(), isolate()->builtins()->Illegal(),
2926 isolate()->initial_object_prototype(), JS_VALUE_TYPE, JSValue::kSize); 2918 isolate()->initial_object_prototype(), JS_VALUE_TYPE, JSValue::kSize);
2927 Handle<JSObject> prototype = 2919 Handle<JSObject> prototype =
2928 factory()->NewJSObject(isolate()->object_function(), TENURED); 2920 factory()->NewJSObject(isolate()->object_function(), TENURED);
2929 Accessors::FunctionSetPrototype(opaque_reference_fun, prototype).Assert(); 2921 Accessors::FunctionSetPrototype(opaque_reference_fun, prototype).Assert();
(...skipping 946 matching lines...) Expand 10 before | Expand all | Expand 10 after
3876 Handle<JSGlobalObject> global_object = 3868 Handle<JSGlobalObject> global_object =
3877 CreateNewGlobals(global_proxy_template, global_proxy); 3869 CreateNewGlobals(global_proxy_template, global_proxy);
3878 HookUpGlobalProxy(global_object, global_proxy); 3870 HookUpGlobalProxy(global_object, global_proxy);
3879 InitializeGlobal(global_object, empty_function, context_type); 3871 InitializeGlobal(global_object, empty_function, context_type);
3880 InitializeNormalizedMapCaches(); 3872 InitializeNormalizedMapCaches();
3881 3873
3882 if (!InstallNatives(context_type)) return; 3874 if (!InstallNatives(context_type)) return;
3883 3875
3884 MakeFunctionInstancePrototypeWritable(); 3876 MakeFunctionInstancePrototypeWritable();
3885 3877
3886 if (context_type != THIN_CONTEXT) { 3878 if (!InstallExtraNatives()) return;
3887 if (!InstallExtraNatives()) return; 3879 if (!ConfigureGlobalObjects(global_proxy_template)) return;
3888 if (!ConfigureGlobalObjects(global_proxy_template)) return; 3880
3889 }
3890 isolate->counters()->contexts_created_from_scratch()->Increment(); 3881 isolate->counters()->contexts_created_from_scratch()->Increment();
3891 // Re-initialize the counter because it got incremented during snapshot 3882 // Re-initialize the counter because it got incremented during snapshot
3892 // creation. 3883 // creation.
3893 isolate->native_context()->set_errors_thrown(Smi::FromInt(0)); 3884 isolate->native_context()->set_errors_thrown(Smi::FromInt(0));
3894 } 3885 }
3895 3886
3896 // Install experimental natives. Do not include them into the 3887 // Install experimental natives. Do not include them into the
3897 // snapshot as we should be able to turn them off at runtime. Re-installing 3888 // snapshot as we should be able to turn them off at runtime. Re-installing
3898 // them after they have already been deserialized would also fail. 3889 // them after they have already been deserialized would also fail.
3899 if (context_type == FULL_CONTEXT) { 3890 if (context_type == FULL_CONTEXT) {
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
3948 } 3939 }
3949 3940
3950 3941
3951 // Called when the top-level V8 mutex is destroyed. 3942 // Called when the top-level V8 mutex is destroyed.
3952 void Bootstrapper::FreeThreadResources() { 3943 void Bootstrapper::FreeThreadResources() {
3953 DCHECK(!IsActive()); 3944 DCHECK(!IsActive());
3954 } 3945 }
3955 3946
3956 } // namespace internal 3947 } // namespace internal
3957 } // namespace v8 3948 } // namespace v8
OLDNEW
« no previous file with comments | « src/bootstrapper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698