| 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 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 // This map is installed in MakeFunctionInstancePrototypeWritable. | 476 // This map is installed in MakeFunctionInstancePrototypeWritable. |
| 477 sloppy_function_map_writable_prototype_ = | 477 sloppy_function_map_writable_prototype_ = |
| 478 CreateFunctionMap(FUNCTION_WITH_WRITEABLE_PROTOTYPE); | 478 CreateFunctionMap(FUNCTION_WITH_WRITEABLE_PROTOTYPE); |
| 479 | 479 |
| 480 Factory* factory = isolate->factory(); | 480 Factory* factory = isolate->factory(); |
| 481 | 481 |
| 482 Handle<String> object_name = factory->Object_string(); | 482 Handle<String> object_name = factory->Object_string(); |
| 483 | 483 |
| 484 { // --- O b j e c t --- | 484 { // --- O b j e c t --- |
| 485 Handle<JSFunction> object_fun = factory->NewFunction(object_name); | 485 Handle<JSFunction> object_fun = factory->NewFunction(object_name); |
| 486 int unused = JSObject::kInitialGlobalObjectUnusedPropertiesCount; |
| 487 int instance_size = JSObject::kHeaderSize + kPointerSize * unused; |
| 486 Handle<Map> object_function_map = | 488 Handle<Map> object_function_map = |
| 487 factory->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); | 489 factory->NewMap(JS_OBJECT_TYPE, instance_size); |
| 490 object_function_map->set_inobject_properties(unused); |
| 488 JSFunction::SetInitialMap(object_fun, object_function_map, | 491 JSFunction::SetInitialMap(object_fun, object_function_map, |
| 489 isolate->factory()->null_value()); | 492 isolate->factory()->null_value()); |
| 490 object_function_map->set_unused_property_fields( | 493 object_function_map->set_unused_property_fields(unused); |
| 491 JSObject::kInitialGlobalObjectUnusedPropertiesCount); | |
| 492 | 494 |
| 493 native_context()->set_object_function(*object_fun); | 495 native_context()->set_object_function(*object_fun); |
| 494 | 496 |
| 495 // Allocate a new prototype for the object function. | 497 // Allocate a new prototype for the object function. |
| 496 Handle<JSObject> prototype = factory->NewJSObject( | 498 Handle<JSObject> prototype = factory->NewJSObject( |
| 497 isolate->object_function(), | 499 isolate->object_function(), |
| 498 TENURED); | 500 TENURED); |
| 499 Handle<Map> map = Map::Copy(handle(prototype->map())); | 501 Handle<Map> map = Map::Copy(handle(prototype->map())); |
| 500 map->set_is_prototype_map(true); | 502 map->set_is_prototype_map(true); |
| 501 prototype->set_map(*map); | 503 prototype->set_map(*map); |
| (...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 InstallFunction(global, "Map", JS_MAP_TYPE, JSMap::kSize, | 1148 InstallFunction(global, "Map", JS_MAP_TYPE, JSMap::kSize, |
| 1147 isolate->initial_object_prototype(), Builtins::kIllegal); | 1149 isolate->initial_object_prototype(), Builtins::kIllegal); |
| 1148 | 1150 |
| 1149 // -- S e t | 1151 // -- S e t |
| 1150 InstallFunction(global, "Set", JS_SET_TYPE, JSSet::kSize, | 1152 InstallFunction(global, "Set", JS_SET_TYPE, JSSet::kSize, |
| 1151 isolate->initial_object_prototype(), Builtins::kIllegal); | 1153 isolate->initial_object_prototype(), Builtins::kIllegal); |
| 1152 | 1154 |
| 1153 { // Set up the iterator result object | 1155 { // Set up the iterator result object |
| 1154 STATIC_ASSERT(JSGeneratorObject::kResultPropertyCount == 2); | 1156 STATIC_ASSERT(JSGeneratorObject::kResultPropertyCount == 2); |
| 1155 Handle<JSFunction> object_function(native_context()->object_function()); | 1157 Handle<JSFunction> object_function(native_context()->object_function()); |
| 1156 DCHECK(object_function->initial_map()->inobject_properties() == 0); | |
| 1157 Handle<Map> iterator_result_map = | 1158 Handle<Map> iterator_result_map = |
| 1158 Map::Create(object_function, JSGeneratorObject::kResultPropertyCount); | 1159 Map::Create(object_function, JSGeneratorObject::kResultPropertyCount); |
| 1159 DCHECK(iterator_result_map->inobject_properties() == | |
| 1160 JSGeneratorObject::kResultPropertyCount); | |
| 1161 Map::EnsureDescriptorSlack(iterator_result_map, | 1160 Map::EnsureDescriptorSlack(iterator_result_map, |
| 1162 JSGeneratorObject::kResultPropertyCount); | 1161 JSGeneratorObject::kResultPropertyCount); |
| 1163 | 1162 |
| 1164 FieldDescriptor value_descr(factory->value_string(), | 1163 FieldDescriptor value_descr(factory->value_string(), |
| 1165 JSGeneratorObject::kResultValuePropertyIndex, | 1164 JSGeneratorObject::kResultValuePropertyIndex, |
| 1166 NONE, Representation::Tagged()); | 1165 NONE, Representation::Tagged()); |
| 1167 iterator_result_map->AppendDescriptor(&value_descr); | 1166 iterator_result_map->AppendDescriptor(&value_descr); |
| 1168 | 1167 |
| 1169 FieldDescriptor done_descr(factory->done_string(), | 1168 FieldDescriptor done_descr(factory->done_string(), |
| 1170 JSGeneratorObject::kResultDonePropertyIndex, | 1169 JSGeneratorObject::kResultDonePropertyIndex, |
| 1171 NONE, Representation::Tagged()); | 1170 NONE, Representation::Tagged()); |
| 1172 iterator_result_map->AppendDescriptor(&done_descr); | 1171 iterator_result_map->AppendDescriptor(&done_descr); |
| 1173 | 1172 |
| 1173 iterator_result_map->set_instance_size(JSGeneratorObject::kResultSize); |
| 1174 iterator_result_map->set_unused_property_fields(0); | 1174 iterator_result_map->set_unused_property_fields(0); |
| 1175 iterator_result_map->set_inobject_properties( |
| 1176 JSGeneratorObject::kResultPropertyCount); |
| 1177 iterator_result_map->set_pre_allocated_property_fields( |
| 1178 JSGeneratorObject::kResultPropertyCount); |
| 1175 DCHECK_EQ(JSGeneratorObject::kResultSize, | 1179 DCHECK_EQ(JSGeneratorObject::kResultSize, |
| 1176 iterator_result_map->instance_size()); | 1180 iterator_result_map->instance_size()); |
| 1177 native_context()->set_iterator_result_map(*iterator_result_map); | 1181 native_context()->set_iterator_result_map(*iterator_result_map); |
| 1178 } | 1182 } |
| 1179 | 1183 |
| 1180 // -- W e a k M a p | 1184 // -- W e a k M a p |
| 1181 InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize, | 1185 InstallFunction(global, "WeakMap", JS_WEAK_MAP_TYPE, JSWeakMap::kSize, |
| 1182 isolate->initial_object_prototype(), Builtins::kIllegal); | 1186 isolate->initial_object_prototype(), Builtins::kIllegal); |
| 1183 // -- W e a k S e t | 1187 // -- W e a k S e t |
| 1184 InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, | 1188 InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, |
| (...skipping 1544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2729 return from + sizeof(NestingCounterType); | 2733 return from + sizeof(NestingCounterType); |
| 2730 } | 2734 } |
| 2731 | 2735 |
| 2732 | 2736 |
| 2733 // Called when the top-level V8 mutex is destroyed. | 2737 // Called when the top-level V8 mutex is destroyed. |
| 2734 void Bootstrapper::FreeThreadResources() { | 2738 void Bootstrapper::FreeThreadResources() { |
| 2735 DCHECK(!IsActive()); | 2739 DCHECK(!IsActive()); |
| 2736 } | 2740 } |
| 2737 | 2741 |
| 2738 } } // namespace v8::internal | 2742 } } // namespace v8::internal |
| OLD | NEW |