| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 9bc2a8b327241b96fb31a1a6dd29a98ef4044973..437630d973f9fe5b180650f45ddb80aa26f5e3b8 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -156,7 +156,7 @@ class Genesis BASE_EMBEDDED {
|
| Heap* heap() const { return isolate_->heap(); }
|
|
|
| private:
|
| - Handle<Context> global_context_;
|
| + Handle<Context> native_context_;
|
| Isolate* isolate_;
|
|
|
| // There may be more than one active genesis object: When GC is
|
| @@ -164,7 +164,7 @@ class Genesis BASE_EMBEDDED {
|
| // processing callbacks which may create new environments.
|
| Genesis* previous_;
|
|
|
| - Handle<Context> global_context() { return global_context_; }
|
| + Handle<Context> native_context() { return native_context_; }
|
|
|
| // Creates some basic objects. Used for creating a context from scratch.
|
| void CreateRoots();
|
| @@ -228,13 +228,13 @@ class Genesis BASE_EMBEDDED {
|
|
|
| // Used both for deserialized and from-scratch contexts to add the extensions
|
| // provided.
|
| - static bool InstallExtensions(Handle<Context> global_context,
|
| + static bool InstallExtensions(Handle<Context> native_context,
|
| v8::ExtensionConfiguration* extensions);
|
| static bool InstallExtension(const char* name,
|
| ExtensionStates* extension_states);
|
| static bool InstallExtension(v8::RegisteredExtension* current,
|
| ExtensionStates* extension_states);
|
| - static void InstallSpecialObjects(Handle<Context> global_context);
|
| + static void InstallSpecialObjects(Handle<Context> native_context);
|
| bool InstallJSBuiltins(Handle<JSBuiltinsObject> builtins);
|
| bool ConfigureApiObject(Handle<JSObject> object,
|
| Handle<ObjectTemplateInfo> object_template);
|
| @@ -444,20 +444,20 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| // writable.
|
| Handle<Map> function_instance_map =
|
| CreateFunctionMap(ADD_WRITEABLE_PROTOTYPE);
|
| - global_context()->set_function_instance_map(*function_instance_map);
|
| + native_context()->set_function_instance_map(*function_instance_map);
|
|
|
| // Functions with this map will not have a 'prototype' property, and
|
| // can not be used as constructors.
|
| Handle<Map> function_without_prototype_map =
|
| CreateFunctionMap(DONT_ADD_PROTOTYPE);
|
| - global_context()->set_function_without_prototype_map(
|
| + native_context()->set_function_without_prototype_map(
|
| *function_without_prototype_map);
|
|
|
| // Allocate the function map. This map is temporary, used only for processing
|
| // of builtins.
|
| // Later the map is replaced with writable prototype map, allocated below.
|
| Handle<Map> function_map = CreateFunctionMap(ADD_READONLY_PROTOTYPE);
|
| - global_context()->set_function_map(*function_map);
|
| + native_context()->set_function_map(*function_map);
|
|
|
| // The final map for functions. Writeable prototype.
|
| // This map is installed in MakeFunctionInstancePrototypeWritable.
|
| @@ -477,14 +477,14 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| object_fun->set_initial_map(*object_function_map);
|
| object_function_map->set_constructor(*object_fun);
|
|
|
| - global_context()->set_object_function(*object_fun);
|
| + native_context()->set_object_function(*object_fun);
|
|
|
| // Allocate a new prototype for the object function.
|
| Handle<JSObject> prototype = factory->NewJSObject(
|
| isolate->object_function(),
|
| TENURED);
|
|
|
| - global_context()->set_initial_object_prototype(*prototype);
|
| + native_context()->set_initial_object_prototype(*prototype);
|
| SetPrototype(object_fun, prototype);
|
| }
|
|
|
| @@ -509,16 +509,16 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| empty_function->shared()->DontAdaptArguments();
|
|
|
| // Set prototypes for the function maps.
|
| - global_context()->function_map()->set_prototype(*empty_function);
|
| - global_context()->function_instance_map()->set_prototype(*empty_function);
|
| - global_context()->function_without_prototype_map()->
|
| + native_context()->function_map()->set_prototype(*empty_function);
|
| + native_context()->function_instance_map()->set_prototype(*empty_function);
|
| + native_context()->function_without_prototype_map()->
|
| set_prototype(*empty_function);
|
| function_instance_map_writable_prototype_->set_prototype(*empty_function);
|
|
|
| // Allocate the function map first and then patch the prototype later
|
| Handle<Map> empty_function_map = CreateFunctionMap(DONT_ADD_PROTOTYPE);
|
| empty_function_map->set_prototype(
|
| - global_context()->object_function()->prototype());
|
| + native_context()->object_function()->prototype());
|
| empty_function->set_map(*empty_function_map);
|
| return empty_function;
|
| }
|
| @@ -578,7 +578,7 @@ Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() {
|
| Handle<Code> code(isolate()->builtins()->builtin(
|
| Builtins::kStrictModePoisonPill));
|
| throw_type_error_function->set_map(
|
| - global_context()->function_map());
|
| + native_context()->function_map());
|
| throw_type_error_function->set_code(*code);
|
| throw_type_error_function->shared()->set_code(*code);
|
| throw_type_error_function->shared()->DontAdaptArguments();
|
| @@ -604,13 +604,13 @@ void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) {
|
| // Allocate map for the strict mode function instances.
|
| Handle<Map> strict_mode_function_instance_map =
|
| CreateStrictModeFunctionMap(ADD_WRITEABLE_PROTOTYPE, empty);
|
| - global_context()->set_strict_mode_function_instance_map(
|
| + native_context()->set_strict_mode_function_instance_map(
|
| *strict_mode_function_instance_map);
|
|
|
| // Allocate map for the prototype-less strict mode instances.
|
| Handle<Map> strict_mode_function_without_prototype_map =
|
| CreateStrictModeFunctionMap(DONT_ADD_PROTOTYPE, empty);
|
| - global_context()->set_strict_mode_function_without_prototype_map(
|
| + native_context()->set_strict_mode_function_without_prototype_map(
|
| *strict_mode_function_without_prototype_map);
|
|
|
| // Allocate map for the strict mode functions. This map is temporary, used
|
| @@ -618,7 +618,7 @@ void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) {
|
| // Later the map is replaced with writable prototype map, allocated below.
|
| Handle<Map> strict_mode_function_map =
|
| CreateStrictModeFunctionMap(ADD_READONLY_PROTOTYPE, empty);
|
| - global_context()->set_strict_mode_function_map(
|
| + native_context()->set_strict_mode_function_map(
|
| *strict_mode_function_map);
|
|
|
| // The final map for the strict mode functions. Writeable prototype.
|
| @@ -652,39 +652,39 @@ void Genesis::PoisonArgumentsAndCaller(Handle<Map> map) {
|
| }
|
|
|
|
|
| -static void AddToWeakGlobalContextList(Context* context) {
|
| - ASSERT(context->IsGlobalContext());
|
| +static void AddToWeakNativeContextList(Context* context) {
|
| + ASSERT(context->IsNativeContext());
|
| Heap* heap = context->GetIsolate()->heap();
|
| #ifdef DEBUG
|
| { // NOLINT
|
| ASSERT(context->get(Context::NEXT_CONTEXT_LINK)->IsUndefined());
|
| // Check that context is not in the list yet.
|
| - for (Object* current = heap->global_contexts_list();
|
| + for (Object* current = heap->native_contexts_list();
|
| !current->IsUndefined();
|
| current = Context::cast(current)->get(Context::NEXT_CONTEXT_LINK)) {
|
| ASSERT(current != context);
|
| }
|
| }
|
| #endif
|
| - context->set(Context::NEXT_CONTEXT_LINK, heap->global_contexts_list());
|
| - heap->set_global_contexts_list(context);
|
| + context->set(Context::NEXT_CONTEXT_LINK, heap->native_contexts_list());
|
| + heap->set_native_contexts_list(context);
|
| }
|
|
|
|
|
| void Genesis::CreateRoots() {
|
| - // Allocate the global context FixedArray first and then patch the
|
| + // Allocate the native context FixedArray first and then patch the
|
| // closure and extension object later (we need the empty function
|
| // and the global object, but in order to create those, we need the
|
| - // global context).
|
| - global_context_ = Handle<Context>::cast(isolate()->global_handles()->Create(
|
| - *factory()->NewGlobalContext()));
|
| - AddToWeakGlobalContextList(*global_context_);
|
| - isolate()->set_context(*global_context());
|
| + // native context).
|
| + native_context_ = Handle<Context>::cast(isolate()->global_handles()->Create(
|
| + *factory()->NewNativeContext()));
|
| + AddToWeakNativeContextList(*native_context_);
|
| + isolate()->set_context(*native_context());
|
|
|
| // Allocate the message listeners object.
|
| {
|
| v8::NeanderArray listeners;
|
| - global_context()->set_message_listeners(*listeners.value());
|
| + native_context()->set_message_listeners(*listeners.value());
|
| }
|
| }
|
|
|
| @@ -794,21 +794,21 @@ Handle<JSGlobalProxy> Genesis::CreateNewGlobals(
|
|
|
| void Genesis::HookUpGlobalProxy(Handle<GlobalObject> inner_global,
|
| Handle<JSGlobalProxy> global_proxy) {
|
| - // Set the global context for the global object.
|
| - inner_global->set_global_context(*global_context());
|
| + // Set the native context for the global object.
|
| + inner_global->set_native_context(*native_context());
|
| inner_global->set_global_receiver(*global_proxy);
|
| - global_proxy->set_context(*global_context());
|
| - global_context()->set_global_proxy(*global_proxy);
|
| + global_proxy->set_context(*native_context());
|
| + native_context()->set_global_proxy(*global_proxy);
|
| }
|
|
|
|
|
| void Genesis::HookUpInnerGlobal(Handle<GlobalObject> inner_global) {
|
| Handle<GlobalObject> inner_global_from_snapshot(
|
| - GlobalObject::cast(global_context_->extension()));
|
| - Handle<JSBuiltinsObject> builtins_global(global_context_->builtins());
|
| - global_context_->set_extension(*inner_global);
|
| - global_context_->set_global(*inner_global);
|
| - global_context_->set_security_token(*inner_global);
|
| + GlobalObject::cast(native_context_->extension()));
|
| + Handle<JSBuiltinsObject> builtins_global(native_context_->builtins());
|
| + native_context_->set_extension(*inner_global);
|
| + native_context_->set_global(*inner_global);
|
| + native_context_->set_security_token(*inner_global);
|
| static const PropertyAttributes attributes =
|
| static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
|
| ForceSetProperty(builtins_global,
|
| @@ -828,16 +828,16 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Handle<JSFunction> empty_function) {
|
| // --- G l o b a l C o n t e x t ---
|
| // Use the empty function as closure (no scope info).
|
| - global_context()->set_closure(*empty_function);
|
| - global_context()->set_previous(NULL);
|
| + native_context()->set_closure(*empty_function);
|
| + native_context()->set_previous(NULL);
|
| // Set extension and global object.
|
| - global_context()->set_extension(*inner_global);
|
| - global_context()->set_global(*inner_global);
|
| + native_context()->set_extension(*inner_global);
|
| + native_context()->set_global(*inner_global);
|
| // Security setup: Set the security token of the global object to
|
| // its the inner global. This makes the security check between two
|
| // different contexts fail by default even in case of global
|
| // object reinitialization.
|
| - global_context()->set_security_token(*inner_global);
|
| + native_context()->set_security_token(*inner_global);
|
|
|
| Isolate* isolate = inner_global->GetIsolate();
|
| Factory* factory = isolate->factory();
|
| @@ -849,7 +849,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| inner_global, object_name,
|
| isolate->object_function(), DONT_ENUM));
|
|
|
| - Handle<JSObject> global = Handle<JSObject>(global_context()->global());
|
| + Handle<JSObject> global = Handle<JSObject>(native_context()->global());
|
|
|
| // Install global Function object
|
| InstallFunction(global, "Function", JS_FUNCTION_TYPE, JSFunction::kSize,
|
| @@ -886,7 +886,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| // search for the 'Array' property on the global object and use that one
|
| // as the constructor. 'Array' property on a global object can be
|
| // overwritten by JS code.
|
| - global_context()->set_array_function(*array_function);
|
| + native_context()->set_array_function(*array_function);
|
| }
|
|
|
| { // --- N u m b e r ---
|
| @@ -894,7 +894,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| InstallFunction(global, "Number", JS_VALUE_TYPE, JSValue::kSize,
|
| isolate->initial_object_prototype(),
|
| Builtins::kIllegal, true);
|
| - global_context()->set_number_function(*number_fun);
|
| + native_context()->set_number_function(*number_fun);
|
| }
|
|
|
| { // --- B o o l e a n ---
|
| @@ -902,7 +902,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| InstallFunction(global, "Boolean", JS_VALUE_TYPE, JSValue::kSize,
|
| isolate->initial_object_prototype(),
|
| Builtins::kIllegal, true);
|
| - global_context()->set_boolean_function(*boolean_fun);
|
| + native_context()->set_boolean_function(*boolean_fun);
|
| }
|
|
|
| { // --- S t r i n g ---
|
| @@ -912,10 +912,10 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Builtins::kIllegal, true);
|
| string_fun->shared()->set_construct_stub(
|
| isolate->builtins()->builtin(Builtins::kStringConstructCode));
|
| - global_context()->set_string_function(*string_fun);
|
| + native_context()->set_string_function(*string_fun);
|
|
|
| Handle<Map> string_map =
|
| - Handle<Map>(global_context()->string_function()->initial_map());
|
| + Handle<Map>(native_context()->string_function()->initial_map());
|
| Handle<DescriptorArray> string_descriptors(factory->NewDescriptorArray(1));
|
| DescriptorArray::WhitenessWitness witness(*string_descriptors);
|
|
|
| @@ -938,7 +938,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| isolate->initial_object_prototype(),
|
| Builtins::kIllegal, true);
|
|
|
| - global_context()->set_date_function(*date_fun);
|
| + native_context()->set_date_function(*date_fun);
|
| }
|
|
|
|
|
| @@ -948,7 +948,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| InstallFunction(global, "RegExp", JS_REGEXP_TYPE, JSRegExp::kSize,
|
| isolate->initial_object_prototype(),
|
| Builtins::kIllegal, true);
|
| - global_context()->set_regexp_function(*regexp_fun);
|
| + native_context()->set_regexp_function(*regexp_fun);
|
|
|
| ASSERT(regexp_fun->has_initial_map());
|
| Handle<Map> initial_map(regexp_fun->initial_map());
|
| @@ -1008,7 +1008,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
| // RegExp prototype object is itself a RegExp.
|
| Handle<Map> proto_map = factory->CopyMap(initial_map);
|
| - proto_map->set_prototype(global_context()->initial_object_prototype());
|
| + proto_map->set_prototype(native_context()->initial_object_prototype());
|
| Handle<JSObject> proto = factory->NewJSObjectFromMap(proto_map);
|
| proto->InObjectPropertyAtPut(JSRegExp::kSourceFieldIndex,
|
| heap->query_colon_symbol());
|
| @@ -1032,7 +1032,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Handle<JSFunction> cons = factory->NewFunction(name,
|
| factory->the_hole_value());
|
| { MaybeObject* result = cons->SetInstancePrototype(
|
| - global_context()->initial_object_prototype());
|
| + native_context()->initial_object_prototype());
|
| if (result->IsFailure()) return false;
|
| }
|
| cons->SetInstanceClassName(*name);
|
| @@ -1041,7 +1041,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| CHECK_NOT_EMPTY_HANDLE(isolate,
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| global, name, json_object, DONT_ENUM));
|
| - global_context()->set_json_object(*json_object);
|
| + native_context()->set_json_object(*json_object);
|
| }
|
|
|
| { // --- arguments_boilerplate_
|
| @@ -1053,7 +1053,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| isolate->builtins()->builtin(Builtins::kIllegal));
|
| Handle<JSObject> prototype =
|
| Handle<JSObject>(
|
| - JSObject::cast(global_context()->object_function()->prototype()));
|
| + JSObject::cast(native_context()->object_function()->prototype()));
|
|
|
| Handle<JSFunction> function =
|
| factory->NewFunctionWithPrototype(symbol,
|
| @@ -1067,7 +1067,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| function->shared()->set_expected_nof_properties(2);
|
| Handle<JSObject> result = factory->NewJSObject(function);
|
|
|
| - global_context()->set_arguments_boilerplate(*result);
|
| + native_context()->set_arguments_boilerplate(*result);
|
| // Note: length must be added as the first property and
|
| // callee must be added as the second property.
|
| CHECK_NOT_EMPTY_HANDLE(isolate,
|
| @@ -1108,7 +1108,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| array = factory->NewFixedArray(0);
|
| elements->set(1, *array);
|
|
|
| - Handle<Map> old_map(global_context()->arguments_boilerplate()->map());
|
| + Handle<Map> old_map(native_context()->arguments_boilerplate()->map());
|
| Handle<Map> new_map = factory->CopyMap(old_map);
|
| new_map->set_pre_allocated_property_fields(2);
|
| Handle<JSObject> result = factory->NewJSObjectFromMap(new_map);
|
| @@ -1117,7 +1117,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| new_map->set_elements_kind(NON_STRICT_ARGUMENTS_ELEMENTS);
|
| result->set_elements(*elements);
|
| ASSERT(result->HasNonStrictArgumentsElements());
|
| - global_context()->set_aliased_arguments_boilerplate(*result);
|
| + native_context()->set_aliased_arguments_boilerplate(*result);
|
| }
|
|
|
| { // --- strict mode arguments boilerplate
|
| @@ -1163,17 +1163,17 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| }
|
|
|
| map->set_function_with_prototype(true);
|
| - map->set_prototype(global_context()->object_function()->prototype());
|
| + map->set_prototype(native_context()->object_function()->prototype());
|
| map->set_pre_allocated_property_fields(1);
|
| map->set_inobject_properties(1);
|
|
|
| // Copy constructor from the non-strict arguments boilerplate.
|
| map->set_constructor(
|
| - global_context()->arguments_boilerplate()->map()->constructor());
|
| + native_context()->arguments_boilerplate()->map()->constructor());
|
|
|
| // Allocate the arguments boilerplate object.
|
| Handle<JSObject> result = factory->NewJSObjectFromMap(map);
|
| - global_context()->set_strict_mode_arguments_boilerplate(*result);
|
| + native_context()->set_strict_mode_arguments_boilerplate(*result);
|
|
|
| // Add length property only for strict mode boilerplate.
|
| CHECK_NOT_EMPTY_HANDLE(isolate,
|
| @@ -1208,7 +1208,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
| Handle<String> name = factory->LookupAsciiSymbol("context_extension");
|
| context_extension_fun->shared()->set_instance_class_name(*name);
|
| - global_context()->set_context_extension_function(*context_extension_fun);
|
| + native_context()->set_context_extension_function(*context_extension_fun);
|
| }
|
|
|
|
|
| @@ -1220,7 +1220,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Handle<JSFunction> delegate =
|
| factory->NewFunction(factory->empty_symbol(), JS_OBJECT_TYPE,
|
| JSObject::kHeaderSize, code, true);
|
| - global_context()->set_call_as_function_delegate(*delegate);
|
| + native_context()->set_call_as_function_delegate(*delegate);
|
| delegate->shared()->DontAdaptArguments();
|
| }
|
|
|
| @@ -1232,21 +1232,21 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
| Handle<JSFunction> delegate =
|
| factory->NewFunction(factory->empty_symbol(), JS_OBJECT_TYPE,
|
| JSObject::kHeaderSize, code, true);
|
| - global_context()->set_call_as_constructor_delegate(*delegate);
|
| + native_context()->set_call_as_constructor_delegate(*delegate);
|
| delegate->shared()->DontAdaptArguments();
|
| }
|
|
|
| // Initialize the out of memory slot.
|
| - global_context()->set_out_of_memory(heap->false_value());
|
| + native_context()->set_out_of_memory(heap->false_value());
|
|
|
| // Initialize the data slot.
|
| - global_context()->set_data(heap->undefined_value());
|
| + native_context()->set_data(heap->undefined_value());
|
|
|
| {
|
| // Initialize the random seed slot.
|
| Handle<ByteArray> zeroed_byte_array(
|
| factory->NewByteArray(kRandomStateSize));
|
| - global_context()->set_random_seed(*zeroed_byte_array);
|
| + native_context()->set_random_seed(*zeroed_byte_array);
|
| memset(zeroed_byte_array->GetDataStartAddress(), 0, kRandomStateSize);
|
| }
|
| return true;
|
| @@ -1254,7 +1254,7 @@ bool Genesis::InitializeGlobal(Handle<GlobalObject> inner_global,
|
|
|
|
|
| void Genesis::InitializeExperimentalGlobal() {
|
| - Handle<JSObject> global = Handle<JSObject>(global_context()->global());
|
| + Handle<JSObject> global = Handle<JSObject>(native_context()->global());
|
|
|
| // TODO(mstarzinger): Move this into Genesis::InitializeGlobal once we no
|
| // longer need to live behind a flag, so functions get added to the snapshot.
|
| @@ -1357,7 +1357,7 @@ bool Genesis::CompileScriptCached(Vector<const char> name,
|
| // Set up the function context. Conceptually, we should clone the
|
| // function before overwriting the context but since we're in a
|
| // single-threaded environment it is not strictly necessary.
|
| - ASSERT(top_context->IsGlobalContext());
|
| + ASSERT(top_context->IsNativeContext());
|
| Handle<Context> context =
|
| Handle<Context>(use_runtime_context
|
| ? Handle<Context>(top_context->runtime_context())
|
| @@ -1381,9 +1381,9 @@ bool Genesis::CompileScriptCached(Vector<const char> name,
|
| #define INSTALL_NATIVE(Type, name, var) \
|
| Handle<String> var##_name = factory()->LookupAsciiSymbol(name); \
|
| Object* var##_native = \
|
| - global_context()->builtins()->GetPropertyNoExceptionThrown( \
|
| + native_context()->builtins()->GetPropertyNoExceptionThrown( \
|
| *var##_name); \
|
| - global_context()->set_##var(Type::cast(var##_native));
|
| + native_context()->set_##var(Type::cast(var##_native));
|
|
|
|
|
| void Genesis::InstallNativeFunctions() {
|
| @@ -1423,7 +1423,7 @@ bool Genesis::InstallNatives() {
|
|
|
| // Create a function for the builtins object. Allocate space for the
|
| // JavaScript builtins, a reference to the builtins object
|
| - // (itself) and a reference to the global_context directly in the object.
|
| + // (itself) and a reference to the native_context directly in the object.
|
| Handle<Code> code = Handle<Code>(
|
| isolate()->builtins()->builtin(Builtins::kIllegal));
|
| Handle<JSFunction> builtins_fun =
|
| @@ -1440,7 +1440,7 @@ bool Genesis::InstallNatives() {
|
| Handle<JSBuiltinsObject> builtins =
|
| Handle<JSBuiltinsObject>::cast(factory()->NewGlobalObject(builtins_fun));
|
| builtins->set_builtins(*builtins);
|
| - builtins->set_global_context(*global_context());
|
| + builtins->set_native_context(*native_context());
|
| builtins->set_global_receiver(*builtins);
|
|
|
| // Set up the 'global' properties of the builtins object. The
|
| @@ -1450,26 +1450,26 @@ bool Genesis::InstallNatives() {
|
| static const PropertyAttributes attributes =
|
| static_cast<PropertyAttributes>(READ_ONLY | DONT_DELETE);
|
| Handle<String> global_symbol = factory()->LookupAsciiSymbol("global");
|
| - Handle<Object> global_obj(global_context()->global());
|
| + Handle<Object> global_obj(native_context()->global());
|
| CHECK_NOT_EMPTY_HANDLE(isolate(),
|
| JSObject::SetLocalPropertyIgnoreAttributes(
|
| builtins, global_symbol, global_obj, attributes));
|
|
|
| // Set up the reference from the global object to the builtins object.
|
| - JSGlobalObject::cast(global_context()->global())->set_builtins(*builtins);
|
| + JSGlobalObject::cast(native_context()->global())->set_builtins(*builtins);
|
|
|
| - // Create a bridge function that has context in the global context.
|
| + // Create a bridge function that has context in the native context.
|
| Handle<JSFunction> bridge =
|
| factory()->NewFunction(factory()->empty_symbol(),
|
| factory()->undefined_value());
|
| - ASSERT(bridge->context() == *isolate()->global_context());
|
| + ASSERT(bridge->context() == *isolate()->native_context());
|
|
|
| // Allocate the builtins context.
|
| Handle<Context> context =
|
| factory()->NewFunctionContext(Context::MIN_CONTEXT_SLOTS, bridge);
|
| context->set_global(*builtins); // override builtins global object
|
|
|
| - global_context()->set_runtime_context(*context);
|
| + native_context()->set_runtime_context(*context);
|
|
|
| { // -- S c r i p t
|
| // Builtin functions for Script.
|
| @@ -1480,7 +1480,7 @@ bool Genesis::InstallNatives() {
|
| Handle<JSObject> prototype =
|
| factory()->NewJSObject(isolate()->object_function(), TENURED);
|
| SetPrototype(script_fun, prototype);
|
| - global_context()->set_script_function(*script_fun);
|
| + native_context()->set_script_function(*script_fun);
|
|
|
| Handle<Map> script_map = Handle<Map>(script_fun->initial_map());
|
|
|
| @@ -1625,7 +1625,7 @@ bool Genesis::InstallNatives() {
|
| Handle<JSObject> prototype =
|
| factory()->NewJSObject(isolate()->object_function(), TENURED);
|
| SetPrototype(opaque_reference_fun, prototype);
|
| - global_context()->set_opaque_reference_function(*opaque_reference_fun);
|
| + native_context()->set_opaque_reference_function(*opaque_reference_fun);
|
| }
|
|
|
| { // --- I n t e r n a l A r r a y ---
|
| @@ -1678,7 +1678,7 @@ bool Genesis::InstallNatives() {
|
| array_function->initial_map()->AppendDescriptor(&d, witness);
|
| }
|
|
|
| - global_context()->set_internal_array_function(*array_function);
|
| + native_context()->set_internal_array_function(*array_function);
|
| }
|
|
|
| if (FLAG_disable_native_files) {
|
| @@ -1701,10 +1701,10 @@ bool Genesis::InstallNatives() {
|
|
|
| // Store the map for the string prototype after the natives has been compiled
|
| // and the String function has been set up.
|
| - Handle<JSFunction> string_function(global_context()->string_function());
|
| + Handle<JSFunction> string_function(native_context()->string_function());
|
| ASSERT(JSObject::cast(
|
| string_function->initial_map()->prototype())->HasFastProperties());
|
| - global_context()->set_string_function_prototype_map(
|
| + native_context()->set_string_function_prototype_map(
|
| HeapObject::cast(string_function->initial_map()->prototype())->map());
|
|
|
| // Install Function.prototype.call and apply.
|
| @@ -1748,7 +1748,7 @@ bool Genesis::InstallNatives() {
|
| // RegExpResult initial map.
|
|
|
| // Find global.Array.prototype to inherit from.
|
| - Handle<JSFunction> array_constructor(global_context()->array_function());
|
| + Handle<JSFunction> array_constructor(native_context()->array_function());
|
| Handle<JSObject> array_prototype(
|
| JSObject::cast(array_constructor->instance_prototype()));
|
|
|
| @@ -1768,7 +1768,7 @@ bool Genesis::InstallNatives() {
|
| Map::SetDescriptors(initial_map, reresult_descriptors);
|
|
|
| {
|
| - JSFunction* array_function = global_context()->array_function();
|
| + JSFunction* array_function = native_context()->array_function();
|
| Handle<DescriptorArray> array_descriptors(
|
| array_function->initial_map()->instance_descriptors());
|
| String* length = heap()->length_symbol();
|
| @@ -1797,7 +1797,7 @@ bool Genesis::InstallNatives() {
|
| initial_map->set_pre_allocated_property_fields(2);
|
| initial_map->set_unused_property_fields(0);
|
|
|
| - global_context()->set_regexp_result_map(*initial_map);
|
| + native_context()->set_regexp_result_map(*initial_map);
|
| }
|
|
|
| #ifdef DEBUG
|
| @@ -1831,10 +1831,10 @@ bool Genesis::InstallExperimentalNatives() {
|
|
|
|
|
| static Handle<JSObject> ResolveBuiltinIdHolder(
|
| - Handle<Context> global_context,
|
| + Handle<Context> native_context,
|
| const char* holder_expr) {
|
| - Factory* factory = global_context->GetIsolate()->factory();
|
| - Handle<GlobalObject> global(global_context->global());
|
| + Factory* factory = native_context->GetIsolate()->factory();
|
| + Handle<GlobalObject> global(native_context->global());
|
| const char* period_pos = strchr(holder_expr, '.');
|
| if (period_pos == NULL) {
|
| return Handle<JSObject>::cast(
|
| @@ -1865,7 +1865,7 @@ void Genesis::InstallBuiltinFunctionIds() {
|
| #define INSTALL_BUILTIN_ID(holder_expr, fun_name, name) \
|
| { \
|
| Handle<JSObject> holder = ResolveBuiltinIdHolder( \
|
| - global_context(), #holder_expr); \
|
| + native_context(), #holder_expr); \
|
| BuiltinFunctionId id = k##name; \
|
| InstallBuiltinFunctionId(holder, #fun_name, id); \
|
| }
|
| @@ -1877,7 +1877,7 @@ void Genesis::InstallBuiltinFunctionIds() {
|
| // Do not forget to update macros.py with named constant
|
| // of cache id.
|
| #define JSFUNCTION_RESULT_CACHE_LIST(F) \
|
| - F(16, global_context()->regexp_function())
|
| + F(16, native_context()->regexp_function())
|
|
|
|
|
| static FixedArray* CreateCache(int size, Handle<JSFunction> factory_function) {
|
| @@ -1913,34 +1913,34 @@ void Genesis::InstallJSFunctionResultCaches() {
|
|
|
| #undef F
|
|
|
| - global_context()->set_jsfunction_result_caches(*caches);
|
| + native_context()->set_jsfunction_result_caches(*caches);
|
| }
|
|
|
|
|
| void Genesis::InitializeNormalizedMapCaches() {
|
| Handle<FixedArray> array(
|
| FACTORY->NewFixedArray(NormalizedMapCache::kEntries, TENURED));
|
| - global_context()->set_normalized_map_cache(NormalizedMapCache::cast(*array));
|
| + native_context()->set_normalized_map_cache(NormalizedMapCache::cast(*array));
|
| }
|
|
|
|
|
| -bool Bootstrapper::InstallExtensions(Handle<Context> global_context,
|
| +bool Bootstrapper::InstallExtensions(Handle<Context> native_context,
|
| v8::ExtensionConfiguration* extensions) {
|
| - Isolate* isolate = global_context->GetIsolate();
|
| + Isolate* isolate = native_context->GetIsolate();
|
| BootstrapperActive active;
|
| SaveContext saved_context(isolate);
|
| - isolate->set_context(*global_context);
|
| - if (!Genesis::InstallExtensions(global_context, extensions)) return false;
|
| - Genesis::InstallSpecialObjects(global_context);
|
| + isolate->set_context(*native_context);
|
| + if (!Genesis::InstallExtensions(native_context, extensions)) return false;
|
| + Genesis::InstallSpecialObjects(native_context);
|
| return true;
|
| }
|
|
|
|
|
| -void Genesis::InstallSpecialObjects(Handle<Context> global_context) {
|
| - Isolate* isolate = global_context->GetIsolate();
|
| +void Genesis::InstallSpecialObjects(Handle<Context> native_context) {
|
| + Isolate* isolate = native_context->GetIsolate();
|
| Factory* factory = isolate->factory();
|
| HandleScope scope;
|
| - Handle<JSGlobalObject> global(JSGlobalObject::cast(global_context->global()));
|
| + Handle<JSGlobalObject> global(JSGlobalObject::cast(native_context->global()));
|
| // Expose the natives in global if a name for it is specified.
|
| if (FLAG_expose_natives_as != NULL && strlen(FLAG_expose_natives_as) != 0) {
|
| Handle<String> natives = factory->LookupAsciiSymbol(FLAG_expose_natives_as);
|
| @@ -1969,10 +1969,10 @@ void Genesis::InstallSpecialObjects(Handle<Context> global_context) {
|
| // debugger but without tanking the whole context.
|
| if (!debug->Load()) return;
|
| // Set the security token for the debugger context to the same as
|
| - // the shell global context to allow calling between these (otherwise
|
| + // the shell native context to allow calling between these (otherwise
|
| // exposing debug global object doesn't make much sense).
|
| debug->debug_context()->set_security_token(
|
| - global_context->security_token());
|
| + native_context->security_token());
|
|
|
| Handle<String> debug_string =
|
| factory->LookupAsciiSymbol(FLAG_expose_debug_as);
|
| @@ -2011,7 +2011,7 @@ void Genesis::ExtensionStates::set_state(RegisteredExtension* extension,
|
| reinterpret_cast<void*>(static_cast<intptr_t>(state));
|
| }
|
|
|
| -bool Genesis::InstallExtensions(Handle<Context> global_context,
|
| +bool Genesis::InstallExtensions(Handle<Context> native_context,
|
| v8::ExtensionConfiguration* extensions) {
|
| // TODO(isolates): Extensions on multiple isolates may take a little more
|
| // effort. (The external API reads 'ignore'-- does that mean
|
| @@ -2136,8 +2136,8 @@ bool Genesis::InstallJSBuiltins(Handle<JSBuiltinsObject> builtins) {
|
| bool Genesis::ConfigureGlobalObjects(
|
| v8::Handle<v8::ObjectTemplate> global_proxy_template) {
|
| Handle<JSObject> global_proxy(
|
| - JSObject::cast(global_context()->global_proxy()));
|
| - Handle<JSObject> inner_global(JSObject::cast(global_context()->global()));
|
| + JSObject::cast(native_context()->global_proxy()));
|
| + Handle<JSObject> inner_global(JSObject::cast(native_context()->global()));
|
|
|
| if (!global_proxy_template.IsEmpty()) {
|
| // Configure the global proxy object.
|
| @@ -2297,9 +2297,9 @@ void Genesis::MakeFunctionInstancePrototypeWritable() {
|
| ASSERT(!strict_mode_function_instance_map_writable_prototype_.is_null());
|
|
|
| // Replace function instance maps to make prototype writable.
|
| - global_context()->set_function_map(
|
| + native_context()->set_function_map(
|
| *function_instance_map_writable_prototype_);
|
| - global_context()->set_strict_mode_function_map(
|
| + native_context()->set_strict_mode_function_map(
|
| *strict_mode_function_instance_map_writable_prototype_);
|
| }
|
|
|
| @@ -2325,10 +2325,10 @@ Genesis::Genesis(Isolate* isolate,
|
|
|
| Handle<Context> new_context = Snapshot::NewContextFromSnapshot();
|
| if (!new_context.is_null()) {
|
| - global_context_ =
|
| + native_context_ =
|
| Handle<Context>::cast(isolate->global_handles()->Create(*new_context));
|
| - AddToWeakGlobalContextList(*global_context_);
|
| - isolate->set_context(*global_context_);
|
| + AddToWeakNativeContextList(*native_context_);
|
| + isolate->set_context(*native_context_);
|
| isolate->counters()->contexts_created_by_snapshot()->Increment();
|
| Handle<GlobalObject> inner_global;
|
| Handle<JSGlobalProxy> global_proxy =
|
| @@ -2364,7 +2364,7 @@ Genesis::Genesis(Isolate* isolate,
|
| InitializeExperimentalGlobal();
|
| if (!InstallExperimentalNatives()) return;
|
|
|
| - result_ = global_context_;
|
| + result_ = native_context_;
|
| }
|
|
|
|
|
|
|