Chromium Code Reviews| Index: src/bootstrapper.cc |
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
| index f76aa35bbea0674adbc27d5b3da24a21c7fae67d..9c60a0b24a60588789827b48c8f20e033f2dc60a 100644 |
| --- a/src/bootstrapper.cc |
| +++ b/src/bootstrapper.cc |
| @@ -597,6 +597,15 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) { |
| native_context()->set_initial_array_prototype(*object_function_prototype); |
| Accessors::FunctionSetPrototype(object_fun, object_function_prototype) |
| .Assert(); |
| + |
| + // Set up the map for Object.create(null) instances. |
| + Handle<Map> slow_object_with_null_prototype_map = |
| + Map::CopyInitialMap(handle(object_fun->initial_map(), isolate)); |
| + slow_object_with_null_prototype_map->set_dictionary_map(true); |
| + Map::SetPrototype(slow_object_with_null_prototype_map, |
| + isolate->factory()->null_value()); |
| + native_context()->set_slow_object_with_null_prototype_map( |
| + *slow_object_with_null_prototype_map); |
|
Toon Verwaest
2017/03/14 13:27:47
This already exists?
Camillo Bruni
2017/03/17 16:40:55
just moved to here, so it's available earlier in t
|
| } |
| // Allocate the empty function as the prototype for function - ES6 19.2.3 |
| @@ -4050,20 +4059,13 @@ bool Genesis::InstallNatives(GlobalContextType context_type) { |
| // Store the map for the %ObjectPrototype% after the natives has been compiled |
| // and the Object function has been set up. |
| - Handle<JSFunction> object_function(native_context()->object_function()); |
| - DCHECK(JSObject::cast(object_function->initial_map()->prototype()) |
| - ->HasFastProperties()); |
| - native_context()->set_object_function_prototype_map( |
| - HeapObject::cast(object_function->initial_map()->prototype())->map()); |
| - |
| - // Set up the map for Object.create(null) instances. |
| - Handle<Map> slow_object_with_null_prototype_map = |
| - Map::CopyInitialMap(handle(object_function->initial_map(), isolate())); |
| - slow_object_with_null_prototype_map->set_dictionary_map(true); |
| - Map::SetPrototype(slow_object_with_null_prototype_map, |
| - isolate()->factory()->null_value()); |
| - native_context()->set_slow_object_with_null_prototype_map( |
| - *slow_object_with_null_prototype_map); |
| + { |
| + Handle<JSFunction> object_function(native_context()->object_function()); |
| + DCHECK(JSObject::cast(object_function->initial_map()->prototype()) |
| + ->HasFastProperties()); |
| + native_context()->set_object_function_prototype_map( |
| + HeapObject::cast(object_function->initial_map()->prototype())->map()); |
| + } |
| // Store the map for the %StringPrototype% after the natives has been compiled |
| // and the String function has been set up. |