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 2143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2154 global, "Set", JS_SET_TYPE, JSSet::kSize, | 2154 global, "Set", JS_SET_TYPE, JSSet::kSize, |
2155 isolate->initial_object_prototype(), Builtins::kIllegal); | 2155 isolate->initial_object_prototype(), Builtins::kIllegal); |
2156 InstallWithIntrinsicDefaultProto(isolate, js_set_fun, | 2156 InstallWithIntrinsicDefaultProto(isolate, js_set_fun, |
2157 Context::JS_SET_FUN_INDEX); | 2157 Context::JS_SET_FUN_INDEX); |
2158 } | 2158 } |
2159 | 2159 |
2160 { // -- J S M o d u l e N a m e s p a c e | 2160 { // -- J S M o d u l e N a m e s p a c e |
2161 Handle<Map> map = | 2161 Handle<Map> map = |
2162 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize); | 2162 factory->NewMap(JS_MODULE_NAMESPACE_TYPE, JSModuleNamespace::kSize); |
2163 Map::SetPrototype(map, isolate->factory()->null_value()); | 2163 Map::SetPrototype(map, isolate->factory()->null_value()); |
| 2164 Map::EnsureDescriptorSlack(map, 2); |
2164 native_context()->set_js_module_namespace_map(*map); | 2165 native_context()->set_js_module_namespace_map(*map); |
2165 | 2166 |
2166 // Install @@toStringTag. | 2167 { // Install @@toStringTag. |
2167 PropertyAttributes attribs = | 2168 PropertyAttributes attribs = |
2168 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); | 2169 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY); |
2169 DataConstantDescriptor d(factory->to_string_tag_symbol(), | 2170 DataConstantDescriptor d(factory->to_string_tag_symbol(), |
2170 factory->NewStringFromAsciiChecked("Module"), | 2171 factory->NewStringFromAsciiChecked("Module"), |
2171 attribs); | 2172 attribs); |
2172 Map::EnsureDescriptorSlack(map, 1); | 2173 map->AppendDescriptor(&d); |
2173 map->AppendDescriptor(&d); | 2174 } |
2174 | 2175 |
2175 // TODO(neis): Implement and install @@iterator. | 2176 { // Install @@iterator. |
| 2177 Handle<JSFunction> iterator = SimpleCreateFunction( |
| 2178 isolate, factory->NewStringFromAsciiChecked("[Symbol.iterator]"), |
| 2179 Builtins::kModuleNamespaceIterator, 0, true); |
| 2180 iterator->shared()->set_native(true); |
| 2181 // TODO(neis): Is this really supposed to be writable? |
| 2182 DataConstantDescriptor d(factory->iterator_symbol(), iterator, DONT_ENUM); |
| 2183 map->AppendDescriptor(&d); |
| 2184 } |
2176 } | 2185 } |
2177 | 2186 |
2178 { // -- I t e r a t o r R e s u l t | 2187 { // -- I t e r a t o r R e s u l t |
2179 Handle<Map> map = | 2188 Handle<Map> map = |
2180 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize); | 2189 factory->NewMap(JS_OBJECT_TYPE, JSIteratorResult::kSize); |
2181 Map::SetPrototype(map, isolate->initial_object_prototype()); | 2190 Map::SetPrototype(map, isolate->initial_object_prototype()); |
2182 Map::EnsureDescriptorSlack(map, 2); | 2191 Map::EnsureDescriptorSlack(map, 2); |
2183 | 2192 |
2184 { // value | 2193 { // value |
2185 DataDescriptor d(factory->value_string(), JSIteratorResult::kValueIndex, | 2194 DataDescriptor d(factory->value_string(), JSIteratorResult::kValueIndex, |
(...skipping 589 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2775 generator_function_prototype, factory->constructor_string(), | 2784 generator_function_prototype, factory->constructor_string(), |
2776 generator_function_function, | 2785 generator_function_function, |
2777 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY)); | 2786 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY)); |
2778 | 2787 |
2779 native_context->sloppy_generator_function_map()->SetConstructor( | 2788 native_context->sloppy_generator_function_map()->SetConstructor( |
2780 *generator_function_function); | 2789 *generator_function_function); |
2781 native_context->strict_generator_function_map()->SetConstructor( | 2790 native_context->strict_generator_function_map()->SetConstructor( |
2782 *generator_function_function); | 2791 *generator_function_function); |
2783 } | 2792 } |
2784 | 2793 |
| 2794 { // -- F i x e d A r r a y I t e r a t o r |
| 2795 int size = JSFixedArrayIterator::kHeaderSize + |
| 2796 JSFixedArrayIterator::kInObjectPropertyCount * kPointerSize; |
| 2797 Handle<Map> map = factory->NewMap(JS_FIXED_ARRAY_ITERATOR_TYPE, size); |
| 2798 Map::SetPrototype(map, iterator_prototype); |
| 2799 Map::EnsureDescriptorSlack(map, |
| 2800 JSFixedArrayIterator::kInObjectPropertyCount); |
| 2801 map->SetInObjectProperties(JSFixedArrayIterator::kInObjectPropertyCount); |
| 2802 map->SetConstructor(native_context->object_function()); |
| 2803 |
| 2804 { // next |
| 2805 DataDescriptor d(factory->next_string(), JSFixedArrayIterator::kNextIndex, |
| 2806 DONT_ENUM, Representation::Tagged()); |
| 2807 map->AppendDescriptor(&d); |
| 2808 } |
| 2809 |
| 2810 native_context->set_fixed_array_iterator_map(*map); |
| 2811 } |
| 2812 |
2785 { // -- S e t I t e r a t o r | 2813 { // -- S e t I t e r a t o r |
2786 Handle<JSObject> set_iterator_prototype = | 2814 Handle<JSObject> set_iterator_prototype = |
2787 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); | 2815 isolate->factory()->NewJSObject(isolate->object_function(), TENURED); |
2788 JSObject::ForceSetPrototype(set_iterator_prototype, iterator_prototype); | 2816 JSObject::ForceSetPrototype(set_iterator_prototype, iterator_prototype); |
2789 Handle<JSFunction> set_iterator_function = InstallFunction( | 2817 Handle<JSFunction> set_iterator_function = InstallFunction( |
2790 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, | 2818 container, "SetIterator", JS_SET_ITERATOR_TYPE, JSSetIterator::kSize, |
2791 set_iterator_prototype, Builtins::kIllegal); | 2819 set_iterator_prototype, Builtins::kIllegal); |
2792 native_context->set_set_iterator_map(set_iterator_function->initial_map()); | 2820 native_context->set_set_iterator_map(set_iterator_function->initial_map()); |
2793 } | 2821 } |
2794 | 2822 |
(...skipping 1610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4405 } | 4433 } |
4406 | 4434 |
4407 | 4435 |
4408 // Called when the top-level V8 mutex is destroyed. | 4436 // Called when the top-level V8 mutex is destroyed. |
4409 void Bootstrapper::FreeThreadResources() { | 4437 void Bootstrapper::FreeThreadResources() { |
4410 DCHECK(!IsActive()); | 4438 DCHECK(!IsActive()); |
4411 } | 4439 } |
4412 | 4440 |
4413 } // namespace internal | 4441 } // namespace internal |
4414 } // namespace v8 | 4442 } // namespace v8 |
OLD | NEW |