| 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 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 CreateIteratorMaps(); | 160 void CreateIteratorMaps(); |
| 161 void CreateJSProxyMaps(); |
| 161 | 162 |
| 162 // Make the "arguments" and "caller" properties throw a TypeError on access. | 163 // Make the "arguments" and "caller" properties throw a TypeError on access. |
| 163 void AddRestrictedFunctionProperties(Handle<Map> map); | 164 void AddRestrictedFunctionProperties(Handle<Map> map); |
| 164 | 165 |
| 165 // Creates the global objects using the global proxy and the template passed | 166 // Creates the global objects using the global proxy and the template passed |
| 166 // in through the API. We call this regardless of whether we are building a | 167 // in through the API. We call this regardless of whether we are building a |
| 167 // context from scratch or using a deserialized one from the partial snapshot | 168 // context from scratch or using a deserialized one from the partial snapshot |
| 168 // but in the latter case we don't use the objects it produces directly, as | 169 // but in the latter case we don't use the objects it produces directly, as |
| 169 // we have to used the deserialized ones that are linked together with the | 170 // we have to used the deserialized ones that are linked together with the |
| 170 // rest of the context snapshot. | 171 // rest of the context snapshot. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 | 211 |
| 211 void InstallTypedArray(const char* name, ElementsKind elements_kind, | 212 void InstallTypedArray(const char* name, ElementsKind elements_kind, |
| 212 Handle<JSFunction>* fun); | 213 Handle<JSFunction>* fun); |
| 213 bool InstallExperimentalNatives(); | 214 bool InstallExperimentalNatives(); |
| 214 bool InstallExtraNatives(); | 215 bool InstallExtraNatives(); |
| 215 bool InstallExperimentalExtraNatives(); | 216 bool InstallExperimentalExtraNatives(); |
| 216 bool InstallDebuggerNatives(); | 217 bool InstallDebuggerNatives(); |
| 217 void InstallBuiltinFunctionIds(); | 218 void InstallBuiltinFunctionIds(); |
| 218 void InstallExperimentalBuiltinFunctionIds(); | 219 void InstallExperimentalBuiltinFunctionIds(); |
| 219 void InitializeNormalizedMapCaches(); | 220 void InitializeNormalizedMapCaches(); |
| 220 void InstallJSProxyMaps(); | |
| 221 | 221 |
| 222 enum ExtensionTraversalState { | 222 enum ExtensionTraversalState { |
| 223 UNVISITED, VISITED, INSTALLED | 223 UNVISITED, VISITED, INSTALLED |
| 224 }; | 224 }; |
| 225 | 225 |
| 226 class ExtensionStates { | 226 class ExtensionStates { |
| 227 public: | 227 public: |
| 228 ExtensionStates(); | 228 ExtensionStates(); |
| 229 ExtensionTraversalState get_state(RegisteredExtension* extension); | 229 ExtensionTraversalState get_state(RegisteredExtension* extension); |
| 230 void set_state(RegisteredExtension* extension, | 230 void set_state(RegisteredExtension* extension, |
| (...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 native_context()->set_strict_generator_function_map( | 747 native_context()->set_strict_generator_function_map( |
| 748 *strict_generator_function_map); | 748 *strict_generator_function_map); |
| 749 | 749 |
| 750 Handle<JSFunction> object_function(native_context()->object_function()); | 750 Handle<JSFunction> object_function(native_context()->object_function()); |
| 751 Handle<Map> generator_object_prototype_map = Map::Create(isolate(), 0); | 751 Handle<Map> generator_object_prototype_map = Map::Create(isolate(), 0); |
| 752 Map::SetPrototype(generator_object_prototype_map, generator_object_prototype); | 752 Map::SetPrototype(generator_object_prototype_map, generator_object_prototype); |
| 753 native_context()->set_generator_object_prototype_map( | 753 native_context()->set_generator_object_prototype_map( |
| 754 *generator_object_prototype_map); | 754 *generator_object_prototype_map); |
| 755 } | 755 } |
| 756 | 756 |
| 757 void Genesis::CreateJSProxyMaps() { |
| 758 // Allocate the different maps for all Proxy types. |
| 759 // Next to the default proxy, we need maps indicating callable and |
| 760 // constructable proxies. |
| 761 Handle<Map> proxy_function_map = |
| 762 Map::Copy(isolate()->sloppy_function_without_prototype_map(), "Proxy"); |
| 763 proxy_function_map->set_is_constructor(true); |
| 764 native_context()->set_proxy_function_map(*proxy_function_map); |
| 765 |
| 766 Handle<Map> proxy_map = |
| 767 factory()->NewMap(JS_PROXY_TYPE, JSProxy::kSize, FAST_ELEMENTS); |
| 768 proxy_map->set_dictionary_map(true); |
| 769 native_context()->set_proxy_map(*proxy_map); |
| 770 |
| 771 Handle<Map> proxy_callable_map = Map::Copy(proxy_map, "callable Proxy"); |
| 772 proxy_callable_map->set_is_callable(); |
| 773 native_context()->set_proxy_callable_map(*proxy_callable_map); |
| 774 proxy_callable_map->SetConstructor(native_context()->function_function()); |
| 775 |
| 776 Handle<Map> proxy_constructor_map = |
| 777 Map::Copy(proxy_callable_map, "constructor Proxy"); |
| 778 proxy_constructor_map->set_is_constructor(true); |
| 779 native_context()->set_proxy_constructor_map(*proxy_constructor_map); |
| 780 } |
| 757 | 781 |
| 758 static void ReplaceAccessors(Handle<Map> map, | 782 static void ReplaceAccessors(Handle<Map> map, |
| 759 Handle<String> name, | 783 Handle<String> name, |
| 760 PropertyAttributes attributes, | 784 PropertyAttributes attributes, |
| 761 Handle<AccessorPair> accessor_pair) { | 785 Handle<AccessorPair> accessor_pair) { |
| 762 DescriptorArray* descriptors = map->instance_descriptors(); | 786 DescriptorArray* descriptors = map->instance_descriptors(); |
| 763 int idx = descriptors->SearchWithCache(map->GetIsolate(), *name, *map); | 787 int idx = descriptors->SearchWithCache(map->GetIsolate(), *name, *map); |
| 764 AccessorConstantDescriptor descriptor(name, accessor_pair, attributes); | 788 AccessorConstantDescriptor descriptor(name, accessor_pair, attributes); |
| 765 descriptors->Replace(idx, &descriptor); | 789 descriptors->Replace(idx, &descriptor); |
| 766 } | 790 } |
| (...skipping 812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1579 } | 1603 } |
| 1580 | 1604 |
| 1581 { // -- W e a k S e t | 1605 { // -- W e a k S e t |
| 1582 Handle<JSFunction> js_weak_set_fun = InstallFunction( | 1606 Handle<JSFunction> js_weak_set_fun = InstallFunction( |
| 1583 global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, | 1607 global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, |
| 1584 isolate->initial_object_prototype(), Builtins::kIllegal); | 1608 isolate->initial_object_prototype(), Builtins::kIllegal); |
| 1585 InstallWithIntrinsicDefaultProto(isolate, js_weak_set_fun, | 1609 InstallWithIntrinsicDefaultProto(isolate, js_weak_set_fun, |
| 1586 Context::JS_WEAK_SET_FUN_INDEX); | 1610 Context::JS_WEAK_SET_FUN_INDEX); |
| 1587 } | 1611 } |
| 1588 | 1612 |
| 1613 { // -- P r o x y |
| 1614 CreateJSProxyMaps(); |
| 1615 |
| 1616 Handle<String> name = factory->Proxy_string(); |
| 1617 Handle<Code> code(isolate->builtins()->ProxyConstructor()); |
| 1618 |
| 1619 Handle<JSFunction> proxy_function = |
| 1620 factory->NewFunction(isolate->proxy_function_map(), |
| 1621 factory->Proxy_string(), MaybeHandle<Code>(code)); |
| 1622 |
| 1623 JSFunction::SetInitialMap( |
| 1624 proxy_function, Handle<Map>(native_context()->proxy_map(), isolate), |
| 1625 factory->null_value()); |
| 1626 |
| 1627 proxy_function->shared()->set_construct_stub( |
| 1628 *isolate->builtins()->ProxyConstructor_ConstructStub()); |
| 1629 proxy_function->shared()->set_internal_formal_parameter_count(2); |
| 1630 proxy_function->shared()->set_length(2); |
| 1631 |
| 1632 native_context()->set_proxy_function(*proxy_function); |
| 1633 InstallFunction(global, name, proxy_function, factory->Object_string()); |
| 1634 } |
| 1635 |
| 1636 { // -- R e f l e c t |
| 1637 Handle<String> reflect_string = factory->InternalizeUtf8String("Reflect"); |
| 1638 Handle<JSObject> reflect = |
| 1639 factory->NewJSObject(isolate->object_function(), TENURED); |
| 1640 JSObject::AddProperty(global, reflect_string, reflect, DONT_ENUM); |
| 1641 |
| 1642 Handle<JSFunction> define_property = |
| 1643 SimpleInstallFunction(reflect, factory->defineProperty_string(), |
| 1644 Builtins::kReflectDefineProperty, 3, true); |
| 1645 native_context()->set_reflect_define_property(*define_property); |
| 1646 |
| 1647 Handle<JSFunction> delete_property = |
| 1648 SimpleInstallFunction(reflect, factory->deleteProperty_string(), |
| 1649 Builtins::kReflectDeleteProperty, 2, true); |
| 1650 native_context()->set_reflect_delete_property(*delete_property); |
| 1651 |
| 1652 Handle<JSFunction> apply = SimpleInstallFunction( |
| 1653 reflect, factory->apply_string(), Builtins::kReflectApply, 3, false); |
| 1654 native_context()->set_reflect_apply(*apply); |
| 1655 |
| 1656 Handle<JSFunction> construct = |
| 1657 SimpleInstallFunction(reflect, factory->construct_string(), |
| 1658 Builtins::kReflectConstruct, 2, false); |
| 1659 native_context()->set_reflect_construct(*construct); |
| 1660 |
| 1661 SimpleInstallFunction(reflect, factory->get_string(), Builtins::kReflectGet, |
| 1662 2, false); |
| 1663 SimpleInstallFunction(reflect, factory->getOwnPropertyDescriptor_string(), |
| 1664 Builtins::kReflectGetOwnPropertyDescriptor, 2, true); |
| 1665 SimpleInstallFunction(reflect, factory->getPrototypeOf_string(), |
| 1666 Builtins::kReflectGetPrototypeOf, 1, true); |
| 1667 SimpleInstallFunction(reflect, factory->has_string(), Builtins::kReflectHas, |
| 1668 2, true); |
| 1669 SimpleInstallFunction(reflect, factory->isExtensible_string(), |
| 1670 Builtins::kReflectIsExtensible, 1, true); |
| 1671 SimpleInstallFunction(reflect, factory->ownKeys_string(), |
| 1672 Builtins::kReflectOwnKeys, 1, true); |
| 1673 SimpleInstallFunction(reflect, factory->preventExtensions_string(), |
| 1674 Builtins::kReflectPreventExtensions, 1, true); |
| 1675 SimpleInstallFunction(reflect, factory->set_string(), Builtins::kReflectSet, |
| 1676 3, false); |
| 1677 SimpleInstallFunction(reflect, factory->setPrototypeOf_string(), |
| 1678 Builtins::kReflectSetPrototypeOf, 2, true); |
| 1679 } |
| 1680 |
| 1589 { // --- B o u n d F u n c t i o n | 1681 { // --- B o u n d F u n c t i o n |
| 1590 Handle<Map> map = | 1682 Handle<Map> map = |
| 1591 factory->NewMap(JS_BOUND_FUNCTION_TYPE, JSBoundFunction::kSize); | 1683 factory->NewMap(JS_BOUND_FUNCTION_TYPE, JSBoundFunction::kSize); |
| 1592 map->set_is_callable(); | 1684 map->set_is_callable(); |
| 1593 Map::SetPrototype(map, empty_function); | 1685 Map::SetPrototype(map, empty_function); |
| 1594 | 1686 |
| 1595 PropertyAttributes roc_attribs = | 1687 PropertyAttributes roc_attribs = |
| 1596 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); | 1688 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); |
| 1597 Map::EnsureDescriptorSlack(map, 2); | 1689 Map::EnsureDescriptorSlack(map, 2); |
| 1598 | 1690 |
| (...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2298 factory()->match_symbol()); | 2390 factory()->match_symbol()); |
| 2299 InstallPublicSymbol(factory(), native_context(), "replace", | 2391 InstallPublicSymbol(factory(), native_context(), "replace", |
| 2300 factory()->replace_symbol()); | 2392 factory()->replace_symbol()); |
| 2301 InstallPublicSymbol(factory(), native_context(), "search", | 2393 InstallPublicSymbol(factory(), native_context(), "search", |
| 2302 factory()->search_symbol()); | 2394 factory()->search_symbol()); |
| 2303 InstallPublicSymbol(factory(), native_context(), "split", | 2395 InstallPublicSymbol(factory(), native_context(), "split", |
| 2304 factory()->split_symbol()); | 2396 factory()->split_symbol()); |
| 2305 } | 2397 } |
| 2306 | 2398 |
| 2307 | 2399 |
| 2308 void Genesis::InitializeGlobal_harmony_reflect() { | |
| 2309 Factory* factory = isolate()->factory(); | |
| 2310 | |
| 2311 // We currently use some of the Reflect functions internally, even when | |
| 2312 // the --harmony-reflect flag is not given. | |
| 2313 | |
| 2314 Handle<JSFunction> define_property = | |
| 2315 SimpleCreateFunction(isolate(), factory->defineProperty_string(), | |
| 2316 Builtins::kReflectDefineProperty, 3, true); | |
| 2317 native_context()->set_reflect_define_property(*define_property); | |
| 2318 | |
| 2319 Handle<JSFunction> delete_property = | |
| 2320 SimpleCreateFunction(isolate(), factory->deleteProperty_string(), | |
| 2321 Builtins::kReflectDeleteProperty, 2, true); | |
| 2322 native_context()->set_reflect_delete_property(*delete_property); | |
| 2323 | |
| 2324 Handle<JSFunction> apply = SimpleCreateFunction( | |
| 2325 isolate(), factory->apply_string(), Builtins::kReflectApply, 3, false); | |
| 2326 native_context()->set_reflect_apply(*apply); | |
| 2327 | |
| 2328 Handle<JSFunction> construct = | |
| 2329 SimpleCreateFunction(isolate(), factory->construct_string(), | |
| 2330 Builtins::kReflectConstruct, 2, false); | |
| 2331 native_context()->set_reflect_construct(*construct); | |
| 2332 | |
| 2333 if (!FLAG_harmony_reflect) return; | |
| 2334 | |
| 2335 Handle<JSGlobalObject> global(JSGlobalObject::cast( | |
| 2336 native_context()->global_object())); | |
| 2337 Handle<String> reflect_string = factory->NewStringFromStaticChars("Reflect"); | |
| 2338 Handle<JSObject> reflect = | |
| 2339 factory->NewJSObject(isolate()->object_function(), TENURED); | |
| 2340 JSObject::AddProperty(global, reflect_string, reflect, DONT_ENUM); | |
| 2341 | |
| 2342 InstallFunction(reflect, define_property, factory->defineProperty_string()); | |
| 2343 InstallFunction(reflect, delete_property, factory->deleteProperty_string()); | |
| 2344 InstallFunction(reflect, apply, factory->apply_string()); | |
| 2345 InstallFunction(reflect, construct, factory->construct_string()); | |
| 2346 | |
| 2347 SimpleInstallFunction(reflect, factory->get_string(), | |
| 2348 Builtins::kReflectGet, 2, false); | |
| 2349 SimpleInstallFunction(reflect, factory->getOwnPropertyDescriptor_string(), | |
| 2350 Builtins::kReflectGetOwnPropertyDescriptor, 2, true); | |
| 2351 SimpleInstallFunction(reflect, factory->getPrototypeOf_string(), | |
| 2352 Builtins::kReflectGetPrototypeOf, 1, true); | |
| 2353 SimpleInstallFunction(reflect, factory->has_string(), | |
| 2354 Builtins::kReflectHas, 2, true); | |
| 2355 SimpleInstallFunction(reflect, factory->isExtensible_string(), | |
| 2356 Builtins::kReflectIsExtensible, 1, true); | |
| 2357 SimpleInstallFunction(reflect, factory->ownKeys_string(), | |
| 2358 Builtins::kReflectOwnKeys, 1, true); | |
| 2359 SimpleInstallFunction(reflect, factory->preventExtensions_string(), | |
| 2360 Builtins::kReflectPreventExtensions, 1, true); | |
| 2361 SimpleInstallFunction(reflect, factory->set_string(), | |
| 2362 Builtins::kReflectSet, 3, false); | |
| 2363 SimpleInstallFunction(reflect, factory->setPrototypeOf_string(), | |
| 2364 Builtins::kReflectSetPrototypeOf, 2, true); | |
| 2365 } | |
| 2366 | |
| 2367 | |
| 2368 void Genesis::InitializeGlobal_harmony_sharedarraybuffer() { | 2400 void Genesis::InitializeGlobal_harmony_sharedarraybuffer() { |
| 2369 if (!FLAG_harmony_sharedarraybuffer) return; | 2401 if (!FLAG_harmony_sharedarraybuffer) return; |
| 2370 | 2402 |
| 2371 Handle<JSGlobalObject> global(native_context()->global_object()); | 2403 Handle<JSGlobalObject> global(native_context()->global_object()); |
| 2372 Handle<JSFunction> shared_array_buffer_fun = | 2404 Handle<JSFunction> shared_array_buffer_fun = |
| 2373 InstallArrayBuffer(global, "SharedArrayBuffer"); | 2405 InstallArrayBuffer(global, "SharedArrayBuffer"); |
| 2374 native_context()->set_shared_array_buffer_fun(*shared_array_buffer_fun); | 2406 native_context()->set_shared_array_buffer_fun(*shared_array_buffer_fun); |
| 2375 } | 2407 } |
| 2376 | 2408 |
| 2377 | 2409 |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2428 JSGlobalObject::cast(native_context()->global_object())); | 2460 JSGlobalObject::cast(native_context()->global_object())); |
| 2429 Isolate* isolate = global->GetIsolate(); | 2461 Isolate* isolate = global->GetIsolate(); |
| 2430 Factory* factory = isolate->factory(); | 2462 Factory* factory = isolate->factory(); |
| 2431 | 2463 |
| 2432 Handle<JSFunction> object_function = isolate->object_function(); | 2464 Handle<JSFunction> object_function = isolate->object_function(); |
| 2433 SimpleInstallFunction(object_function, | 2465 SimpleInstallFunction(object_function, |
| 2434 factory->getOwnPropertyDescriptors_string(), | 2466 factory->getOwnPropertyDescriptors_string(), |
| 2435 Builtins::kObjectGetOwnPropertyDescriptors, 1, false); | 2467 Builtins::kObjectGetOwnPropertyDescriptors, 1, false); |
| 2436 } | 2468 } |
| 2437 | 2469 |
| 2438 void Genesis::InstallJSProxyMaps() { | |
| 2439 // Allocate the different maps for all Proxy types. | |
| 2440 // Next to the default proxy, we need maps indicating callable and | |
| 2441 // constructable proxies. | |
| 2442 | |
| 2443 Handle<Map> proxy_function_map = | |
| 2444 Map::Copy(isolate()->sloppy_function_without_prototype_map(), "Proxy"); | |
| 2445 proxy_function_map->set_is_constructor(true); | |
| 2446 native_context()->set_proxy_function_map(*proxy_function_map); | |
| 2447 | |
| 2448 Handle<Map> proxy_map = | |
| 2449 factory()->NewMap(JS_PROXY_TYPE, JSProxy::kSize, FAST_ELEMENTS); | |
| 2450 proxy_map->set_dictionary_map(true); | |
| 2451 native_context()->set_proxy_map(*proxy_map); | |
| 2452 | |
| 2453 Handle<Map> proxy_callable_map = Map::Copy(proxy_map, "callable Proxy"); | |
| 2454 proxy_callable_map->set_is_callable(); | |
| 2455 native_context()->set_proxy_callable_map(*proxy_callable_map); | |
| 2456 proxy_callable_map->SetConstructor(native_context()->function_function()); | |
| 2457 | |
| 2458 Handle<Map> proxy_constructor_map = | |
| 2459 Map::Copy(proxy_callable_map, "constructor Proxy"); | |
| 2460 proxy_constructor_map->set_is_constructor(true); | |
| 2461 native_context()->set_proxy_constructor_map(*proxy_constructor_map); | |
| 2462 } | |
| 2463 | |
| 2464 | |
| 2465 void Genesis::InitializeGlobal_harmony_proxies() { | |
| 2466 if (!FLAG_harmony_proxies) return; | |
| 2467 Handle<JSGlobalObject> global( | |
| 2468 JSGlobalObject::cast(native_context()->global_object())); | |
| 2469 Isolate* isolate = global->GetIsolate(); | |
| 2470 Factory* factory = isolate->factory(); | |
| 2471 | |
| 2472 InstallJSProxyMaps(); | |
| 2473 | |
| 2474 // Create the Proxy object. | |
| 2475 Handle<String> name = factory->Proxy_string(); | |
| 2476 Handle<Code> code(isolate->builtins()->ProxyConstructor()); | |
| 2477 | |
| 2478 Handle<JSFunction> proxy_function = | |
| 2479 factory->NewFunction(isolate->proxy_function_map(), | |
| 2480 factory->Proxy_string(), MaybeHandle<Code>(code)); | |
| 2481 | |
| 2482 JSFunction::SetInitialMap(proxy_function, | |
| 2483 Handle<Map>(native_context()->proxy_map(), isolate), | |
| 2484 factory->null_value()); | |
| 2485 | |
| 2486 proxy_function->shared()->set_construct_stub( | |
| 2487 *isolate->builtins()->ProxyConstructor_ConstructStub()); | |
| 2488 proxy_function->shared()->set_internal_formal_parameter_count(2); | |
| 2489 proxy_function->shared()->set_length(2); | |
| 2490 | |
| 2491 native_context()->set_proxy_function(*proxy_function); | |
| 2492 InstallFunction(global, name, proxy_function, factory->Object_string()); | |
| 2493 } | |
| 2494 | |
| 2495 void Genesis::InitializeGlobal_harmony_array_prototype_values() { | 2470 void Genesis::InitializeGlobal_harmony_array_prototype_values() { |
| 2496 if (!FLAG_harmony_array_prototype_values) return; | 2471 if (!FLAG_harmony_array_prototype_values) return; |
| 2497 Handle<JSFunction> array_constructor(native_context()->array_function()); | 2472 Handle<JSFunction> array_constructor(native_context()->array_function()); |
| 2498 Handle<JSObject> array_prototype( | 2473 Handle<JSObject> array_prototype( |
| 2499 JSObject::cast(array_constructor->instance_prototype())); | 2474 JSObject::cast(array_constructor->instance_prototype())); |
| 2500 Handle<Object> values_iterator = | 2475 Handle<Object> values_iterator = |
| 2501 JSObject::GetProperty(array_prototype, factory()->iterator_symbol()) | 2476 JSObject::GetProperty(array_prototype, factory()->iterator_symbol()) |
| 2502 .ToHandleChecked(); | 2477 .ToHandleChecked(); |
| 2503 DCHECK(values_iterator->IsJSFunction()); | 2478 DCHECK(values_iterator->IsJSFunction()); |
| 2504 JSObject::AddProperty(array_prototype, factory()->values_string(), | 2479 JSObject::AddProperty(array_prototype, factory()->values_string(), |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2938 Map::EnsureDescriptorSlack(map, 1); | 2913 Map::EnsureDescriptorSlack(map, 1); |
| 2939 map->AppendDescriptor(&d); | 2914 map->AppendDescriptor(&d); |
| 2940 } | 2915 } |
| 2941 } | 2916 } |
| 2942 | 2917 |
| 2943 return true; | 2918 return true; |
| 2944 } | 2919 } |
| 2945 | 2920 |
| 2946 | 2921 |
| 2947 bool Genesis::InstallExperimentalNatives() { | 2922 bool Genesis::InstallExperimentalNatives() { |
| 2948 static const char* harmony_proxies_natives[] = {"native proxy.js", nullptr}; | |
| 2949 static const char* harmony_regexps_natives[] = {"native harmony-regexp.js", | 2923 static const char* harmony_regexps_natives[] = {"native harmony-regexp.js", |
| 2950 nullptr}; | 2924 nullptr}; |
| 2951 static const char* harmony_iterator_close_natives[] = {nullptr}; | 2925 static const char* harmony_iterator_close_natives[] = {nullptr}; |
| 2952 static const char* harmony_sloppy_natives[] = {nullptr}; | 2926 static const char* harmony_sloppy_natives[] = {nullptr}; |
| 2953 static const char* harmony_sloppy_function_natives[] = {nullptr}; | 2927 static const char* harmony_sloppy_function_natives[] = {nullptr}; |
| 2954 static const char* harmony_sloppy_let_natives[] = {nullptr}; | 2928 static const char* harmony_sloppy_let_natives[] = {nullptr}; |
| 2955 static const char* harmony_species_natives[] = {"native harmony-species.js", | 2929 static const char* harmony_species_natives[] = {"native harmony-species.js", |
| 2956 nullptr}; | 2930 nullptr}; |
| 2957 static const char* harmony_tailcalls_natives[] = {nullptr}; | 2931 static const char* harmony_tailcalls_natives[] = {nullptr}; |
| 2958 static const char* harmony_unicode_regexps_natives[] = { | 2932 static const char* harmony_unicode_regexps_natives[] = { |
| 2959 "native harmony-unicode-regexps.js", nullptr}; | 2933 "native harmony-unicode-regexps.js", nullptr}; |
| 2960 static const char* harmony_reflect_natives[] = {"native harmony-reflect.js", | |
| 2961 nullptr}; | |
| 2962 static const char* harmony_object_observe_natives[] = { | 2934 static const char* harmony_object_observe_natives[] = { |
| 2963 "native harmony-object-observe.js", nullptr}; | 2935 "native harmony-object-observe.js", nullptr}; |
| 2964 static const char* harmony_sharedarraybuffer_natives[] = { | 2936 static const char* harmony_sharedarraybuffer_natives[] = { |
| 2965 "native harmony-sharedarraybuffer.js", "native harmony-atomics.js", NULL}; | 2937 "native harmony-sharedarraybuffer.js", "native harmony-atomics.js", NULL}; |
| 2966 static const char* harmony_simd_natives[] = {"native harmony-simd.js", | 2938 static const char* harmony_simd_natives[] = {"native harmony-simd.js", |
| 2967 nullptr}; | 2939 nullptr}; |
| 2968 static const char* harmony_do_expressions_natives[] = {nullptr}; | 2940 static const char* harmony_do_expressions_natives[] = {nullptr}; |
| 2969 static const char* harmony_regexp_subclass_natives[] = {nullptr}; | 2941 static const char* harmony_regexp_subclass_natives[] = {nullptr}; |
| 2970 static const char* harmony_regexp_lookbehind_natives[] = {nullptr}; | 2942 static const char* harmony_regexp_lookbehind_natives[] = {nullptr}; |
| 2971 static const char* harmony_instanceof_natives[] = {nullptr}; | 2943 static const char* harmony_instanceof_natives[] = {nullptr}; |
| (...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3646 } | 3618 } |
| 3647 | 3619 |
| 3648 | 3620 |
| 3649 // Called when the top-level V8 mutex is destroyed. | 3621 // Called when the top-level V8 mutex is destroyed. |
| 3650 void Bootstrapper::FreeThreadResources() { | 3622 void Bootstrapper::FreeThreadResources() { |
| 3651 DCHECK(!IsActive()); | 3623 DCHECK(!IsActive()); |
| 3652 } | 3624 } |
| 3653 | 3625 |
| 3654 } // namespace internal | 3626 } // namespace internal |
| 3655 } // namespace v8 | 3627 } // namespace v8 |
| OLD | NEW |