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/base/ieee754.h" | 9 #include "src/base/ieee754.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 2454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2465 global, "Set", JS_SET_TYPE, JSSet::kSize, | 2465 global, "Set", JS_SET_TYPE, JSSet::kSize, |
2466 isolate->initial_object_prototype(), Builtins::kIllegal); | 2466 isolate->initial_object_prototype(), Builtins::kIllegal); |
2467 InstallWithIntrinsicDefaultProto(isolate, js_set_fun, | 2467 InstallWithIntrinsicDefaultProto(isolate, js_set_fun, |
2468 Context::JS_SET_FUN_INDEX); | 2468 Context::JS_SET_FUN_INDEX); |
2469 } | 2469 } |
2470 | 2470 |
2471 { // -- J S M o d u l e N a m e s p a c e | 2471 { // -- J S M o d u l e N a m e s p a c e |
2472 Handle<Map> map = | 2472 Handle<Map> map = |
2473 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize); | 2473 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize); |
2474 Map::SetPrototype(map, isolate->factory()->null_value()); | 2474 Map::SetPrototype(map, isolate->factory()->null_value()); |
2475 Map::EnsureDescriptorSlack(map, 2); | 2475 Map::EnsureDescriptorSlack(map, 1); |
2476 native_context()->set_js_module_namespace_map(*map); | 2476 native_context()->set_js_module_namespace_map(*map); |
2477 | 2477 |
2478 { // Install @@toStringTag. | 2478 { // Install @@toStringTag. |
2479 PropertyAttributes attribs = | 2479 PropertyAttributes attribs = |
2480 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); | 2480 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); |
2481 DataConstantDescriptor d(factory->to_string_tag_symbol(), | 2481 DataConstantDescriptor d(factory->to_string_tag_symbol(), |
2482 factory->NewStringFromAsciiChecked("Module"), | 2482 factory->NewStringFromAsciiChecked("Module"), |
2483 attribs); | 2483 attribs); |
2484 map->AppendDescriptor(&d); | 2484 map->AppendDescriptor(&d); |
2485 } | 2485 } |
2486 | |
2487 { // Install @@iterator. | |
2488 Handle<JSFunction> iterator = SimpleCreateFunction( | |
2489 isolate, factory->NewStringFromAsciiChecked("[Symbol.iterator]"), | |
2490 Builtins::kModuleNamespaceIterator, 0, true); | |
2491 iterator->shared()->set_native(true); | |
2492 // TODO(neis): Is this really supposed to be writable? | |
2493 DataConstantDescriptor d(factory->iterator_symbol(), iterator, DONT_ENUM); | |
2494 map->AppendDescriptor(&d); | |
2495 } | |
2496 } | 2486 } |
2497 | 2487 |
2498 { // -- I t e r a t o r R e s u l t | 2488 { // -- I t e r a t o r R e s u l t |
2499 Handle<Map> map = | 2489 Handle<Map> map = |
2500 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize); | 2490 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize); |
2501 Map::SetPrototype(map, isolate->initial_object_prototype()); | 2491 Map::SetPrototype(map, isolate->initial_object_prototype()); |
2502 Map::EnsureDescriptorSlack(map, 2); | 2492 Map::EnsureDescriptorSlack(map, 2); |
2503 | 2493 |
2504 { // value | 2494 { // value |
2505 DataDescriptor d(factory->value_string(), JSIteratorResult::kValueIndex, | 2495 DataDescriptor d(factory->value_string(), JSIteratorResult::kValueIndex, |
(...skipping 575 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3081 generator_function_prototype, factory->constructor_string(), | 3071 generator_function_prototype, factory->constructor_string(), |
3082 generator_function_function, | 3072 generator_function_function, |
3083 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY)); | 3073 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY)); |
3084 | 3074 |
3085 native_context->sloppy_generator_function_map()->SetConstructor( | 3075 native_context->sloppy_generator_function_map()->SetConstructor( |
3086 *generator_function_function); | 3076 *generator_function_function); |
3087 native_context->strict_generator_function_map()->SetConstructor( | 3077 native_context->strict_generator_function_map()->SetConstructor( |
3088 *generator_function_function); | 3078 *generator_function_function); |
3089 } | 3079 } |
3090 | 3080 |
3091 { // -- F i x e d A r r a y I t e r a t o r | |
3092 int size = JSFixedArrayIterator::kHeaderSize + | |
3093 JSFixedArrayIterator::kInObjectPropertyCount * kPointerSize; | |
3094 Handle<Map> map = factory->NewMap(JS_FIXED_ARRAY_ITERATOR_TYPE, size); | |
3095 Map::SetPrototype(map, iterator_prototype); | |
3096 Map::EnsureDescriptorSlack(map, | |
3097 JSFixedArrayIterator::kInObjectPropertyCount); | |
3098 map->SetInObjectProperties(JSFixedArrayIterator::kInObjectPropertyCount); | |
3099 map->SetConstructor(native_context->object_function()); | |
3100 | |
3101 { // next | |
3102 DataDescriptor d(factory->next_string(), JSFixedArrayIterator::kNextIndex, | |
3103 DONT_ENUM, Representation::Tagged()); | |
3104 map->AppendDescriptor(&d); | |
3105 } | |
3106 | |
3107 native_context->set_fixed_array_iterator_map(*map); | |
3108 } | |
3109 | |
3110 { // -- S e t I t e r a t o r | 3081 { // -- S e t I t e r a t o r |
3111 Handle<JSObject> set_iterator_prototype = | 3082 Handle<JSObject> set_iterator_prototype = |
3112 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); | 3083 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); |
3113 JSObject::ForceSetPrototype(set_iterator_prototype, iterator_prototype); | 3084 JSObject::ForceSetPrototype(set_iterator_prototype, iterator_prototype); |
3114 Handle<JSFunction> set_iterator_function = InstallFunction( | 3085 Handle<JSFunction> set_iterator_function = InstallFunction( |
3115 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, | 3086 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, |
3116 set_iterator_prototype, Builtins::kIllegal); | 3087 set_iterator_prototype, Builtins::kIllegal); |
3117 native_context->set_set_iterator_map(set_iterator_function->initial_map()); | 3088 native_context->set_set_iterator_map(set_iterator_function->initial_map()); |
3118 } | 3089 } |
3119 | 3090 |
(...skipping 1564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4684 } | 4655 } |
4685 | 4656 |
4686 | 4657 |
4687 // Called when the top-level V8 mutex is destroyed. | 4658 // Called when the top-level V8 mutex is destroyed. |
4688 void Bootstrapper::FreeThreadResources() { | 4659 void Bootstrapper::FreeThreadResources() { |
4689 DCHECK(!IsActive()); | 4660 DCHECK(!IsActive()); |
4690 } | 4661 } |
4691 | 4662 |
4692 } // namespace internal | 4663 } // namespace internal |
4693 } // namespace v8 | 4664 } // namespace v8 |
OLD | NEW |