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/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/extensions/externalize-string-extension.h" | 9 #include "src/extensions/externalize-string-extension.h" |
10 #include "src/extensions/free-buffer-extension.h" | 10 #include "src/extensions/free-buffer-extension.h" |
(...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1202 { // length | 1202 { // length |
1203 FieldDescriptor d(factory->length_string(), Heap::kArgumentsLengthIndex, | 1203 FieldDescriptor d(factory->length_string(), Heap::kArgumentsLengthIndex, |
1204 DONT_ENUM, Representation::Tagged()); | 1204 DONT_ENUM, Representation::Tagged()); |
1205 map->AppendDescriptor(&d); | 1205 map->AppendDescriptor(&d); |
1206 } | 1206 } |
1207 { // callee | 1207 { // callee |
1208 FieldDescriptor d(factory->callee_string(), Heap::kArgumentsCalleeIndex, | 1208 FieldDescriptor d(factory->callee_string(), Heap::kArgumentsCalleeIndex, |
1209 DONT_ENUM, Representation::Tagged()); | 1209 DONT_ENUM, Representation::Tagged()); |
1210 map->AppendDescriptor(&d); | 1210 map->AppendDescriptor(&d); |
1211 } | 1211 } |
| 1212 // @@iterator method is added later. |
1212 | 1213 |
1213 map->set_function_with_prototype(true); | 1214 map->set_function_with_prototype(true); |
1214 map->set_pre_allocated_property_fields(2); | 1215 map->set_pre_allocated_property_fields(2); |
1215 map->set_inobject_properties(2); | 1216 map->set_inobject_properties(2); |
1216 native_context()->set_sloppy_arguments_map(*map); | 1217 native_context()->set_sloppy_arguments_map(*map); |
1217 | 1218 |
1218 DCHECK(!function->has_initial_map()); | 1219 DCHECK(!function->has_initial_map()); |
1219 JSFunction::SetInitialMap(function, map, | 1220 JSFunction::SetInitialMap(function, map, |
1220 isolate->initial_object_prototype()); | 1221 isolate->initial_object_prototype()); |
1221 | 1222 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1260 map->AppendDescriptor(&d); | 1261 map->AppendDescriptor(&d); |
1261 } | 1262 } |
1262 { // callee | 1263 { // callee |
1263 CallbacksDescriptor d(factory->callee_string(), callee, attributes); | 1264 CallbacksDescriptor d(factory->callee_string(), callee, attributes); |
1264 map->AppendDescriptor(&d); | 1265 map->AppendDescriptor(&d); |
1265 } | 1266 } |
1266 { // caller | 1267 { // caller |
1267 CallbacksDescriptor d(factory->caller_string(), caller, attributes); | 1268 CallbacksDescriptor d(factory->caller_string(), caller, attributes); |
1268 map->AppendDescriptor(&d); | 1269 map->AppendDescriptor(&d); |
1269 } | 1270 } |
| 1271 // @@iterator method is added later. |
1270 | 1272 |
1271 map->set_function_with_prototype(true); | 1273 map->set_function_with_prototype(true); |
1272 map->set_prototype(native_context()->object_function()->prototype()); | 1274 map->set_prototype(native_context()->object_function()->prototype()); |
1273 map->set_pre_allocated_property_fields(1); | 1275 map->set_pre_allocated_property_fields(1); |
1274 map->set_inobject_properties(1); | 1276 map->set_inobject_properties(1); |
1275 | 1277 |
1276 // Copy constructor from the sloppy arguments boilerplate. | 1278 // Copy constructor from the sloppy arguments boilerplate. |
1277 map->set_constructor( | 1279 map->set_constructor( |
1278 native_context()->sloppy_arguments_map()->constructor()); | 1280 native_context()->sloppy_arguments_map()->constructor()); |
1279 | 1281 |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1594 observers_end_perform_splice); | 1596 observers_end_perform_splice); |
1595 INSTALL_NATIVE(JSFunction, "NativeObjectObserve", | 1597 INSTALL_NATIVE(JSFunction, "NativeObjectObserve", |
1596 native_object_observe); | 1598 native_object_observe); |
1597 INSTALL_NATIVE(JSFunction, "NativeObjectGetNotifier", | 1599 INSTALL_NATIVE(JSFunction, "NativeObjectGetNotifier", |
1598 native_object_get_notifier); | 1600 native_object_get_notifier); |
1599 INSTALL_NATIVE(JSFunction, "NativeObjectNotifierPerformChange", | 1601 INSTALL_NATIVE(JSFunction, "NativeObjectNotifierPerformChange", |
1600 native_object_notifier_perform_change); | 1602 native_object_notifier_perform_change); |
1601 | 1603 |
1602 INSTALL_NATIVE(Symbol, "symbolIterator", iterator_symbol); | 1604 INSTALL_NATIVE(Symbol, "symbolIterator", iterator_symbol); |
1603 INSTALL_NATIVE(Symbol, "symbolUnscopables", unscopables_symbol); | 1605 INSTALL_NATIVE(Symbol, "symbolUnscopables", unscopables_symbol); |
| 1606 INSTALL_NATIVE(JSFunction, "ArrayValues", array_values_iterator); |
1604 | 1607 |
1605 INSTALL_NATIVE_MATH(abs) | 1608 INSTALL_NATIVE_MATH(abs) |
1606 INSTALL_NATIVE_MATH(acos) | 1609 INSTALL_NATIVE_MATH(acos) |
1607 INSTALL_NATIVE_MATH(asin) | 1610 INSTALL_NATIVE_MATH(asin) |
1608 INSTALL_NATIVE_MATH(atan) | 1611 INSTALL_NATIVE_MATH(atan) |
1609 INSTALL_NATIVE_MATH(atan2) | 1612 INSTALL_NATIVE_MATH(atan2) |
1610 INSTALL_NATIVE_MATH(ceil) | 1613 INSTALL_NATIVE_MATH(ceil) |
1611 INSTALL_NATIVE_MATH(cos) | 1614 INSTALL_NATIVE_MATH(cos) |
1612 INSTALL_NATIVE_MATH(exp) | 1615 INSTALL_NATIVE_MATH(exp) |
1613 INSTALL_NATIVE_MATH(floor) | 1616 INSTALL_NATIVE_MATH(floor) |
(...skipping 422 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2036 initial_map->AppendDescriptor(&input_field); | 2039 initial_map->AppendDescriptor(&input_field); |
2037 } | 2040 } |
2038 | 2041 |
2039 initial_map->set_inobject_properties(2); | 2042 initial_map->set_inobject_properties(2); |
2040 initial_map->set_pre_allocated_property_fields(2); | 2043 initial_map->set_pre_allocated_property_fields(2); |
2041 initial_map->set_unused_property_fields(0); | 2044 initial_map->set_unused_property_fields(0); |
2042 | 2045 |
2043 native_context()->set_regexp_result_map(*initial_map); | 2046 native_context()->set_regexp_result_map(*initial_map); |
2044 } | 2047 } |
2045 | 2048 |
| 2049 // Add @@iterator method to the arguments object maps. |
| 2050 { |
| 2051 PropertyAttributes attribs = DONT_ENUM; |
| 2052 Handle<AccessorInfo> arguments_iterator = |
| 2053 Accessors::ArgumentsIteratorInfo(isolate(), attribs); |
| 2054 { |
| 2055 CallbacksDescriptor d(Handle<Name>(native_context()->iterator_symbol()), |
| 2056 arguments_iterator, attribs); |
| 2057 Handle<Map> map(native_context()->sloppy_arguments_map()); |
| 2058 Map::EnsureDescriptorSlack(map, 1); |
| 2059 map->AppendDescriptor(&d); |
| 2060 } |
| 2061 { |
| 2062 CallbacksDescriptor d(Handle<Name>(native_context()->iterator_symbol()), |
| 2063 arguments_iterator, attribs); |
| 2064 Handle<Map> map(native_context()->aliased_arguments_map()); |
| 2065 Map::EnsureDescriptorSlack(map, 1); |
| 2066 map->AppendDescriptor(&d); |
| 2067 } |
| 2068 { |
| 2069 CallbacksDescriptor d(Handle<Name>(native_context()->iterator_symbol()), |
| 2070 arguments_iterator, attribs); |
| 2071 Handle<Map> map(native_context()->strict_arguments_map()); |
| 2072 Map::EnsureDescriptorSlack(map, 1); |
| 2073 map->AppendDescriptor(&d); |
| 2074 } |
| 2075 } |
| 2076 |
2046 #ifdef VERIFY_HEAP | 2077 #ifdef VERIFY_HEAP |
2047 builtins->ObjectVerify(); | 2078 builtins->ObjectVerify(); |
2048 #endif | 2079 #endif |
2049 | 2080 |
2050 return true; | 2081 return true; |
2051 } | 2082 } |
2052 | 2083 |
2053 | 2084 |
2054 #define INSTALL_EXPERIMENTAL_NATIVE(i, flag, file) \ | 2085 #define INSTALL_EXPERIMENTAL_NATIVE(i, flag, file) \ |
2055 if (FLAG_harmony_##flag && \ | 2086 if (FLAG_harmony_##flag && \ |
(...skipping 639 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2695 return from + sizeof(NestingCounterType); | 2726 return from + sizeof(NestingCounterType); |
2696 } | 2727 } |
2697 | 2728 |
2698 | 2729 |
2699 // Called when the top-level V8 mutex is destroyed. | 2730 // Called when the top-level V8 mutex is destroyed. |
2700 void Bootstrapper::FreeThreadResources() { | 2731 void Bootstrapper::FreeThreadResources() { |
2701 DCHECK(!IsActive()); | 2732 DCHECK(!IsActive()); |
2702 } | 2733 } |
2703 | 2734 |
2704 } } // namespace v8::internal | 2735 } } // namespace v8::internal |
OLD | NEW |