| OLD | NEW |
| 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/code-stubs.h" | 9 #include "src/code-stubs.h" |
| 10 #include "src/extensions/externalize-string-extension.h" | 10 #include "src/extensions/externalize-string-extension.h" |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 // Creates some basic objects. Used for creating a context from scratch. | 150 // Creates some basic objects. Used for creating a context from scratch. |
| 151 void CreateRoots(); | 151 void CreateRoots(); |
| 152 // Creates the empty function. Used for creating a context from scratch. | 152 // Creates the empty function. Used for creating a context from scratch. |
| 153 Handle<JSFunction> CreateEmptyFunction(Isolate* isolate); | 153 Handle<JSFunction> CreateEmptyFunction(Isolate* isolate); |
| 154 // Creates the ThrowTypeError function. ECMA 5th Ed. 13.2.3 | 154 // Creates the ThrowTypeError function. ECMA 5th Ed. 13.2.3 |
| 155 Handle<JSFunction> GetRestrictedFunctionPropertiesThrower(); | 155 Handle<JSFunction> GetRestrictedFunctionPropertiesThrower(); |
| 156 Handle<JSFunction> GetStrictArgumentsPoisonFunction(); | 156 Handle<JSFunction> GetStrictArgumentsPoisonFunction(); |
| 157 Handle<JSFunction> GetThrowTypeErrorIntrinsic(Builtins::Name builtin_name); | 157 Handle<JSFunction> GetThrowTypeErrorIntrinsic(Builtins::Name builtin_name); |
| 158 | 158 |
| 159 void CreateStrictModeFunctionMaps(Handle<JSFunction> empty); | 159 void CreateStrictModeFunctionMaps(Handle<JSFunction> empty); |
| 160 void CreateStrongModeFunctionMaps(Handle<JSFunction> empty); | |
| 161 void CreateIteratorMaps(); | 160 void CreateIteratorMaps(); |
| 162 | 161 |
| 163 // Make the "arguments" and "caller" properties throw a TypeError on access. | 162 // Make the "arguments" and "caller" properties throw a TypeError on access. |
| 164 void AddRestrictedFunctionProperties(Handle<Map> map); | 163 void AddRestrictedFunctionProperties(Handle<Map> map); |
| 165 | 164 |
| 166 // Creates the global objects using the global proxy and the template passed | 165 // Creates the global objects using the global proxy and the template passed |
| 167 // in through the API. We call this regardless of whether we are building a | 166 // in through the API. We call this regardless of whether we are building a |
| 168 // context from scratch or using a deserialized one from the partial snapshot | 167 // context from scratch or using a deserialized one from the partial snapshot |
| 169 // but in the latter case we don't use the objects it produces directly, as | 168 // but in the latter case we don't use the objects it produces directly, as |
| 170 // we have to used the deserialized ones that are linked together with the | 169 // we have to used the deserialized ones that are linked together with the |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 } | 276 } |
| 278 | 277 |
| 279 Handle<Map> CreateSloppyFunctionMap(FunctionMode function_mode); | 278 Handle<Map> CreateSloppyFunctionMap(FunctionMode function_mode); |
| 280 | 279 |
| 281 void SetFunctionInstanceDescriptor(Handle<Map> map, | 280 void SetFunctionInstanceDescriptor(Handle<Map> map, |
| 282 FunctionMode function_mode); | 281 FunctionMode function_mode); |
| 283 void MakeFunctionInstancePrototypeWritable(); | 282 void MakeFunctionInstancePrototypeWritable(); |
| 284 | 283 |
| 285 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, | 284 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, |
| 286 Handle<JSFunction> empty_function); | 285 Handle<JSFunction> empty_function); |
| 287 Handle<Map> CreateStrongFunctionMap(Handle<JSFunction> empty_function, | |
| 288 bool is_constructor); | |
| 289 | 286 |
| 290 | 287 |
| 291 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, | 288 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, |
| 292 FunctionMode function_mode); | 289 FunctionMode function_mode); |
| 293 void SetStrongFunctionInstanceDescriptor(Handle<Map> map); | 290 void SetStrongFunctionInstanceDescriptor(Handle<Map> map); |
| 294 | 291 |
| 295 static bool CallUtilsFunction(Isolate* isolate, const char* name); | 292 static bool CallUtilsFunction(Isolate* isolate, const char* name); |
| 296 | 293 |
| 297 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); | 294 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); |
| 298 | 295 |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 540 map->set_is_prototype_map(true); | 537 map->set_is_prototype_map(true); |
| 541 object_function_prototype->set_map(*map); | 538 object_function_prototype->set_map(*map); |
| 542 | 539 |
| 543 native_context()->set_initial_object_prototype(*object_function_prototype); | 540 native_context()->set_initial_object_prototype(*object_function_prototype); |
| 544 // For bootstrapping set the array prototype to be the same as the object | 541 // For bootstrapping set the array prototype to be the same as the object |
| 545 // prototype, otherwise the missing initial_array_prototype will cause | 542 // prototype, otherwise the missing initial_array_prototype will cause |
| 546 // assertions during startup. | 543 // assertions during startup. |
| 547 native_context()->set_initial_array_prototype(*object_function_prototype); | 544 native_context()->set_initial_array_prototype(*object_function_prototype); |
| 548 Accessors::FunctionSetPrototype(object_fun, object_function_prototype) | 545 Accessors::FunctionSetPrototype(object_fun, object_function_prototype) |
| 549 .Assert(); | 546 .Assert(); |
| 550 | |
| 551 // Allocate initial strong object map. | |
| 552 Handle<Map> strong_object_map = | |
| 553 Map::Copy(Handle<Map>(object_fun->initial_map()), "EmptyStrongObject"); | |
| 554 strong_object_map->set_is_strong(); | |
| 555 native_context()->set_js_object_strong_map(*strong_object_map); | |
| 556 } | 547 } |
| 557 | 548 |
| 558 // Allocate the empty function as the prototype for function - ES6 19.2.3 | 549 // Allocate the empty function as the prototype for function - ES6 19.2.3 |
| 559 Handle<Code> code(isolate->builtins()->EmptyFunction()); | 550 Handle<Code> code(isolate->builtins()->EmptyFunction()); |
| 560 Handle<JSFunction> empty_function = | 551 Handle<JSFunction> empty_function = |
| 561 factory->NewFunctionWithoutPrototype(factory->empty_string(), code); | 552 factory->NewFunctionWithoutPrototype(factory->empty_string(), code); |
| 562 | 553 |
| 563 // Allocate the function map first and then patch the prototype later | 554 // Allocate the function map first and then patch the prototype later |
| 564 Handle<Map> empty_function_map = | 555 Handle<Map> empty_function_map = |
| 565 CreateSloppyFunctionMap(FUNCTION_WITHOUT_PROTOTYPE); | 556 CreateSloppyFunctionMap(FUNCTION_WITHOUT_PROTOTYPE); |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 FunctionMode function_mode, Handle<JSFunction> empty_function) { | 706 FunctionMode function_mode, Handle<JSFunction> empty_function) { |
| 716 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); | 707 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); |
| 717 SetStrictFunctionInstanceDescriptor(map, function_mode); | 708 SetStrictFunctionInstanceDescriptor(map, function_mode); |
| 718 map->set_is_constructor(IsFunctionModeWithPrototype(function_mode)); | 709 map->set_is_constructor(IsFunctionModeWithPrototype(function_mode)); |
| 719 map->set_is_callable(); | 710 map->set_is_callable(); |
| 720 Map::SetPrototype(map, empty_function); | 711 Map::SetPrototype(map, empty_function); |
| 721 return map; | 712 return map; |
| 722 } | 713 } |
| 723 | 714 |
| 724 | 715 |
| 725 Handle<Map> Genesis::CreateStrongFunctionMap( | |
| 726 Handle<JSFunction> empty_function, bool is_constructor) { | |
| 727 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); | |
| 728 SetStrongFunctionInstanceDescriptor(map); | |
| 729 map->set_is_constructor(is_constructor); | |
| 730 Map::SetPrototype(map, empty_function); | |
| 731 map->set_is_callable(); | |
| 732 map->set_is_extensible(is_constructor); | |
| 733 map->set_is_strong(); | |
| 734 return map; | |
| 735 } | |
| 736 | |
| 737 | |
| 738 void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) { | 716 void Genesis::CreateStrictModeFunctionMaps(Handle<JSFunction> empty) { |
| 739 // Allocate map for the prototype-less strict mode instances. | 717 // Allocate map for the prototype-less strict mode instances. |
| 740 Handle<Map> strict_function_without_prototype_map = | 718 Handle<Map> strict_function_without_prototype_map = |
| 741 CreateStrictFunctionMap(FUNCTION_WITHOUT_PROTOTYPE, empty); | 719 CreateStrictFunctionMap(FUNCTION_WITHOUT_PROTOTYPE, empty); |
| 742 native_context()->set_strict_function_without_prototype_map( | 720 native_context()->set_strict_function_without_prototype_map( |
| 743 *strict_function_without_prototype_map); | 721 *strict_function_without_prototype_map); |
| 744 | 722 |
| 745 // Allocate map for the strict mode functions. This map is temporary, used | 723 // Allocate map for the strict mode functions. This map is temporary, used |
| 746 // only for processing of builtins. | 724 // only for processing of builtins. |
| 747 // Later the map is replaced with writable prototype map, allocated below. | 725 // Later the map is replaced with writable prototype map, allocated below. |
| 748 Handle<Map> strict_function_map = | 726 Handle<Map> strict_function_map = |
| 749 CreateStrictFunctionMap(FUNCTION_WITH_READONLY_PROTOTYPE, empty); | 727 CreateStrictFunctionMap(FUNCTION_WITH_READONLY_PROTOTYPE, empty); |
| 750 native_context()->set_strict_function_map(*strict_function_map); | 728 native_context()->set_strict_function_map(*strict_function_map); |
| 751 | 729 |
| 752 // The final map for the strict mode functions. Writeable prototype. | 730 // The final map for the strict mode functions. Writeable prototype. |
| 753 // This map is installed in MakeFunctionInstancePrototypeWritable. | 731 // This map is installed in MakeFunctionInstancePrototypeWritable. |
| 754 strict_function_map_writable_prototype_ = | 732 strict_function_map_writable_prototype_ = |
| 755 CreateStrictFunctionMap(FUNCTION_WITH_WRITEABLE_PROTOTYPE, empty); | 733 CreateStrictFunctionMap(FUNCTION_WITH_WRITEABLE_PROTOTYPE, empty); |
| 756 } | 734 } |
| 757 | 735 |
| 758 | 736 |
| 759 void Genesis::CreateStrongModeFunctionMaps(Handle<JSFunction> empty) { | |
| 760 // Allocate map for strong mode instances, which never have prototypes. | |
| 761 Handle<Map> strong_function_map = CreateStrongFunctionMap(empty, false); | |
| 762 native_context()->set_strong_function_map(*strong_function_map); | |
| 763 // Constructors do, though. | |
| 764 Handle<Map> strong_constructor_map = CreateStrongFunctionMap(empty, true); | |
| 765 native_context()->set_strong_constructor_map(*strong_constructor_map); | |
| 766 } | |
| 767 | |
| 768 | |
| 769 void Genesis::CreateIteratorMaps() { | 737 void Genesis::CreateIteratorMaps() { |
| 770 // Create iterator-related meta-objects. | 738 // Create iterator-related meta-objects. |
| 771 Handle<JSObject> iterator_prototype = | 739 Handle<JSObject> iterator_prototype = |
| 772 factory()->NewJSObject(isolate()->object_function(), TENURED); | 740 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 773 Handle<JSObject> generator_object_prototype = | 741 Handle<JSObject> generator_object_prototype = |
| 774 factory()->NewJSObject(isolate()->object_function(), TENURED); | 742 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 775 Handle<JSObject> generator_function_prototype = | 743 Handle<JSObject> generator_function_prototype = |
| 776 factory()->NewJSObject(isolate()->object_function(), TENURED); | 744 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 777 SetObjectPrototype(generator_object_prototype, iterator_prototype); | 745 SetObjectPrototype(generator_object_prototype, iterator_prototype); |
| 778 | 746 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 796 *sloppy_generator_function_map); | 764 *sloppy_generator_function_map); |
| 797 | 765 |
| 798 Handle<Map> strict_generator_function_map = | 766 Handle<Map> strict_generator_function_map = |
| 799 Map::Copy(strict_function_map, "StrictGeneratorFunction"); | 767 Map::Copy(strict_function_map, "StrictGeneratorFunction"); |
| 800 strict_generator_function_map->set_is_constructor(false); | 768 strict_generator_function_map->set_is_constructor(false); |
| 801 Map::SetPrototype(strict_generator_function_map, | 769 Map::SetPrototype(strict_generator_function_map, |
| 802 generator_function_prototype); | 770 generator_function_prototype); |
| 803 native_context()->set_strict_generator_function_map( | 771 native_context()->set_strict_generator_function_map( |
| 804 *strict_generator_function_map); | 772 *strict_generator_function_map); |
| 805 | 773 |
| 806 Handle<Map> strong_function_map(native_context()->strong_function_map()); | |
| 807 Handle<Map> strong_generator_function_map = | |
| 808 Map::Copy(strong_function_map, "StrongGeneratorFunction"); | |
| 809 strong_generator_function_map->set_is_constructor(false); | |
| 810 Map::SetPrototype(strong_generator_function_map, | |
| 811 generator_function_prototype); | |
| 812 native_context()->set_strong_generator_function_map( | |
| 813 *strong_generator_function_map); | |
| 814 | |
| 815 Handle<JSFunction> object_function(native_context()->object_function()); | 774 Handle<JSFunction> object_function(native_context()->object_function()); |
| 816 Handle<Map> generator_object_prototype_map = Map::Create(isolate(), 0); | 775 Handle<Map> generator_object_prototype_map = Map::Create(isolate(), 0); |
| 817 Map::SetPrototype(generator_object_prototype_map, generator_object_prototype); | 776 Map::SetPrototype(generator_object_prototype_map, generator_object_prototype); |
| 818 native_context()->set_generator_object_prototype_map( | 777 native_context()->set_generator_object_prototype_map( |
| 819 *generator_object_prototype_map); | 778 *generator_object_prototype_map); |
| 820 } | 779 } |
| 821 | 780 |
| 822 | 781 |
| 823 static void ReplaceAccessors(Handle<Map> map, | 782 static void ReplaceAccessors(Handle<Map> map, |
| 824 Handle<String> name, | 783 Handle<String> name, |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1167 | 1126 |
| 1168 // Install in the native context | 1127 // Install in the native context |
| 1169 native_context()->set_ordinary_has_instance(*has_instance); | 1128 native_context()->set_ordinary_has_instance(*has_instance); |
| 1170 | 1129 |
| 1171 // Install the "constructor" property on the %FunctionPrototype%. | 1130 // Install the "constructor" property on the %FunctionPrototype%. |
| 1172 JSObject::AddProperty(prototype, factory->constructor_string(), | 1131 JSObject::AddProperty(prototype, factory->constructor_string(), |
| 1173 function_fun, DONT_ENUM); | 1132 function_fun, DONT_ENUM); |
| 1174 | 1133 |
| 1175 sloppy_function_map_writable_prototype_->SetConstructor(*function_fun); | 1134 sloppy_function_map_writable_prototype_->SetConstructor(*function_fun); |
| 1176 strict_function_map_writable_prototype_->SetConstructor(*function_fun); | 1135 strict_function_map_writable_prototype_->SetConstructor(*function_fun); |
| 1177 native_context()->strong_function_map()->SetConstructor(*function_fun); | |
| 1178 } | 1136 } |
| 1179 | 1137 |
| 1180 { // --- A r r a y --- | 1138 { // --- A r r a y --- |
| 1181 Handle<JSFunction> array_function = | 1139 Handle<JSFunction> array_function = |
| 1182 InstallFunction(global, "Array", JS_ARRAY_TYPE, JSArray::kSize, | 1140 InstallFunction(global, "Array", JS_ARRAY_TYPE, JSArray::kSize, |
| 1183 isolate->initial_object_prototype(), | 1141 isolate->initial_object_prototype(), |
| 1184 Builtins::kArrayCode); | 1142 Builtins::kArrayCode); |
| 1185 array_function->shared()->DontAdaptArguments(); | 1143 array_function->shared()->DontAdaptArguments(); |
| 1186 array_function->shared()->set_builtin_function_id(kArrayCode); | 1144 array_function->shared()->set_builtin_function_id(kArrayCode); |
| 1187 | 1145 |
| (...skipping 22 matching lines...) Expand all Loading... |
| 1210 | 1168 |
| 1211 InstallWithIntrinsicDefaultProto(isolate, array_function, | 1169 InstallWithIntrinsicDefaultProto(isolate, array_function, |
| 1212 Context::ARRAY_FUNCTION_INDEX); | 1170 Context::ARRAY_FUNCTION_INDEX); |
| 1213 | 1171 |
| 1214 // Cache the array maps, needed by ArrayConstructorStub | 1172 // Cache the array maps, needed by ArrayConstructorStub |
| 1215 CacheInitialJSArrayMaps(native_context(), initial_map); | 1173 CacheInitialJSArrayMaps(native_context(), initial_map); |
| 1216 ArrayConstructorStub array_constructor_stub(isolate); | 1174 ArrayConstructorStub array_constructor_stub(isolate); |
| 1217 Handle<Code> code = array_constructor_stub.GetCode(); | 1175 Handle<Code> code = array_constructor_stub.GetCode(); |
| 1218 array_function->shared()->set_construct_stub(*code); | 1176 array_function->shared()->set_construct_stub(*code); |
| 1219 | 1177 |
| 1220 Handle<Map> initial_strong_map = | |
| 1221 Map::Copy(initial_map, "SetInstancePrototype"); | |
| 1222 initial_strong_map->set_is_strong(); | |
| 1223 CacheInitialJSArrayMaps(native_context(), initial_strong_map); | |
| 1224 | |
| 1225 Handle<JSFunction> is_arraylike = SimpleInstallFunction( | 1178 Handle<JSFunction> is_arraylike = SimpleInstallFunction( |
| 1226 array_function, isolate->factory()->InternalizeUtf8String("isArray"), | 1179 array_function, isolate->factory()->InternalizeUtf8String("isArray"), |
| 1227 Builtins::kArrayIsArray, 1, true); | 1180 Builtins::kArrayIsArray, 1, true); |
| 1228 native_context()->set_is_arraylike(*is_arraylike); | 1181 native_context()->set_is_arraylike(*is_arraylike); |
| 1229 } | 1182 } |
| 1230 | 1183 |
| 1231 { // --- N u m b e r --- | 1184 { // --- N u m b e r --- |
| 1232 Handle<JSFunction> number_fun = InstallFunction( | 1185 Handle<JSFunction> number_fun = InstallFunction( |
| 1233 global, "Number", JS_VALUE_TYPE, JSValue::kSize, | 1186 global, "Number", JS_VALUE_TYPE, JSValue::kSize, |
| 1234 isolate->initial_object_prototype(), Builtins::kNumberConstructor); | 1187 isolate->initial_object_prototype(), Builtins::kNumberConstructor); |
| (...skipping 895 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2130 *isolate->builtins()->GeneratorFunctionConstructor()); | 2083 *isolate->builtins()->GeneratorFunctionConstructor()); |
| 2131 generator_function_function->shared()->set_length(1); | 2084 generator_function_function->shared()->set_length(1); |
| 2132 InstallWithIntrinsicDefaultProto( | 2085 InstallWithIntrinsicDefaultProto( |
| 2133 isolate, generator_function_function, | 2086 isolate, generator_function_function, |
| 2134 Context::GENERATOR_FUNCTION_FUNCTION_INDEX); | 2087 Context::GENERATOR_FUNCTION_FUNCTION_INDEX); |
| 2135 | 2088 |
| 2136 native_context->sloppy_generator_function_map()->SetConstructor( | 2089 native_context->sloppy_generator_function_map()->SetConstructor( |
| 2137 *generator_function_function); | 2090 *generator_function_function); |
| 2138 native_context->strict_generator_function_map()->SetConstructor( | 2091 native_context->strict_generator_function_map()->SetConstructor( |
| 2139 *generator_function_function); | 2092 *generator_function_function); |
| 2140 native_context->strong_generator_function_map()->SetConstructor( | |
| 2141 *generator_function_function); | |
| 2142 } | 2093 } |
| 2143 | 2094 |
| 2144 { // -- S e t I t e r a t o r | 2095 { // -- S e t I t e r a t o r |
| 2145 Handle<JSObject> set_iterator_prototype = | 2096 Handle<JSObject> set_iterator_prototype = |
| 2146 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); | 2097 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); |
| 2147 SetObjectPrototype(set_iterator_prototype, iterator_prototype); | 2098 SetObjectPrototype(set_iterator_prototype, iterator_prototype); |
| 2148 Handle<JSFunction> set_iterator_function = InstallFunction( | 2099 Handle<JSFunction> set_iterator_function = InstallFunction( |
| 2149 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, | 2100 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, |
| 2150 set_iterator_prototype, Builtins::kIllegal); | 2101 set_iterator_prototype, Builtins::kIllegal); |
| 2151 native_context->set_set_iterator_map(set_iterator_function->initial_map()); | 2102 native_context->set_set_iterator_map(set_iterator_function->initial_map()); |
| (...skipping 1444 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3596 | 3547 |
| 3597 HookUpGlobalProxy(global_object, global_proxy); | 3548 HookUpGlobalProxy(global_object, global_proxy); |
| 3598 HookUpGlobalObject(global_object); | 3549 HookUpGlobalObject(global_object); |
| 3599 | 3550 |
| 3600 if (!ConfigureGlobalObjects(global_proxy_template)) return; | 3551 if (!ConfigureGlobalObjects(global_proxy_template)) return; |
| 3601 } else { | 3552 } else { |
| 3602 // We get here if there was no context snapshot. | 3553 // We get here if there was no context snapshot. |
| 3603 CreateRoots(); | 3554 CreateRoots(); |
| 3604 Handle<JSFunction> empty_function = CreateEmptyFunction(isolate); | 3555 Handle<JSFunction> empty_function = CreateEmptyFunction(isolate); |
| 3605 CreateStrictModeFunctionMaps(empty_function); | 3556 CreateStrictModeFunctionMaps(empty_function); |
| 3606 CreateStrongModeFunctionMaps(empty_function); | |
| 3607 CreateIteratorMaps(); | 3557 CreateIteratorMaps(); |
| 3608 Handle<JSGlobalObject> global_object = | 3558 Handle<JSGlobalObject> global_object = |
| 3609 CreateNewGlobals(global_proxy_template, global_proxy); | 3559 CreateNewGlobals(global_proxy_template, global_proxy); |
| 3610 HookUpGlobalProxy(global_object, global_proxy); | 3560 HookUpGlobalProxy(global_object, global_proxy); |
| 3611 InitializeGlobal(global_object, empty_function, context_type); | 3561 InitializeGlobal(global_object, empty_function, context_type); |
| 3612 InitializeNormalizedMapCaches(); | 3562 InitializeNormalizedMapCaches(); |
| 3613 | 3563 |
| 3614 if (!InstallNatives(context_type)) return; | 3564 if (!InstallNatives(context_type)) return; |
| 3615 | 3565 |
| 3616 MakeFunctionInstancePrototypeWritable(); | 3566 MakeFunctionInstancePrototypeWritable(); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3680 } | 3630 } |
| 3681 | 3631 |
| 3682 | 3632 |
| 3683 // Called when the top-level V8 mutex is destroyed. | 3633 // Called when the top-level V8 mutex is destroyed. |
| 3684 void Bootstrapper::FreeThreadResources() { | 3634 void Bootstrapper::FreeThreadResources() { |
| 3685 DCHECK(!IsActive()); | 3635 DCHECK(!IsActive()); |
| 3686 } | 3636 } |
| 3687 | 3637 |
| 3688 } // namespace internal | 3638 } // namespace internal |
| 3689 } // namespace v8 | 3639 } // namespace v8 |
| OLD | NEW |