| Index: src/bootstrapper.cc
|
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc
|
| index 1b49ea5065a9b14abfaf2189a17a0ca2157e2727..42850acf72444368e1910552c5eee47b068b0d22 100644
|
| --- a/src/bootstrapper.cc
|
| +++ b/src/bootstrapper.cc
|
| @@ -328,7 +328,7 @@ static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) {
|
| // object.__proto__ = proto;
|
| Handle<Map> old_map = Handle<Map>(object->map());
|
| Handle<Map> new_map = Map::Copy(old_map, "SetObjectPrototype");
|
| - new_map->SetPrototype(proto, FAST_PROTOTYPE);
|
| + Map::SetPrototype(new_map, proto, FAST_PROTOTYPE);
|
| JSObject::MigrateToMap(object, new_map);
|
| }
|
|
|
| @@ -512,7 +512,7 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| Handle<Map> empty_function_map =
|
| CreateSloppyFunctionMap(FUNCTION_WITHOUT_PROTOTYPE);
|
| DCHECK(!empty_function_map->is_dictionary_map());
|
| - empty_function_map->SetPrototype(object_function_prototype);
|
| + Map::SetPrototype(empty_function_map, object_function_prototype);
|
| empty_function_map->set_is_prototype_map(true);
|
|
|
| empty_function->set_map(*empty_function_map);
|
| @@ -527,11 +527,13 @@ Handle<JSFunction> Genesis::CreateEmptyFunction(Isolate* isolate) {
|
| empty_function->shared()->DontAdaptArguments();
|
|
|
| // Set prototypes for the function maps.
|
| - native_context()->sloppy_function_map()->SetPrototype(empty_function);
|
| - native_context()->sloppy_function_without_prototype_map()->SetPrototype(
|
| - empty_function);
|
| -
|
| - sloppy_function_map_writable_prototype_->SetPrototype(empty_function);
|
| + Handle<Map> sloppy_function_map(native_context()->sloppy_function_map(),
|
| + isolate);
|
| + Handle<Map> sloppy_function_without_prototype_map(
|
| + native_context()->sloppy_function_without_prototype_map(), isolate);
|
| + Map::SetPrototype(sloppy_function_map, empty_function);
|
| + Map::SetPrototype(sloppy_function_without_prototype_map, empty_function);
|
| + Map::SetPrototype(sloppy_function_map_writable_prototype_, empty_function);
|
|
|
| // ES6 draft 03-17-2015, section 8.2.2 step 12
|
| AddRestrictedFunctionProperties(empty_function_map);
|
| @@ -652,7 +654,7 @@ Handle<Map> Genesis::CreateStrictFunctionMap(
|
| Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
|
| SetStrictFunctionInstanceDescriptor(map, function_mode);
|
| map->set_function_with_prototype(IsFunctionModeWithPrototype(function_mode));
|
| - map->SetPrototype(empty_function);
|
| + Map::SetPrototype(map, empty_function);
|
| return map;
|
| }
|
|
|
| @@ -662,7 +664,7 @@ Handle<Map> Genesis::CreateStrongFunctionMap(
|
| Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
|
| SetStrongFunctionInstanceDescriptor(map);
|
| map->set_function_with_prototype(is_constructor);
|
| - map->SetPrototype(empty_function);
|
| + Map::SetPrototype(map, empty_function);
|
| map->set_is_extensible(is_constructor);
|
| // TODO(rossberg): mark strong
|
| return map;
|
| @@ -1113,7 +1115,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
|
| Smi::FromInt(0),
|
| SKIP_WRITE_BARRIER); // It's a Smi.
|
| proto_map->set_is_prototype_map(true);
|
| - initial_map->SetPrototype(proto);
|
| + Map::SetPrototype(initial_map, proto);
|
| factory->SetRegExpIrregexpData(Handle<JSRegExp>::cast(proto),
|
| JSRegExp::IRREGEXP, factory->empty_string(),
|
| JSRegExp::Flags(0), 0);
|
| @@ -1302,7 +1304,7 @@ void Genesis::InitializeGlobal(Handle<GlobalObject> global_object,
|
| map->set_function_with_prototype(true);
|
| DCHECK_EQ(native_context()->object_function()->prototype(),
|
| *isolate->initial_object_prototype());
|
| - map->SetPrototype(isolate->initial_object_prototype());
|
| + Map::SetPrototype(map, isolate->initial_object_prototype());
|
| map->set_pre_allocated_property_fields(1);
|
| map->set_inobject_properties(1);
|
|
|
| @@ -2086,26 +2088,30 @@ bool Genesis::InstallNatives() {
|
| Handle<Map> strict_function_map(native_context()->strict_function_map());
|
| Handle<Map> sloppy_generator_function_map =
|
| Map::Copy(strict_function_map, "SloppyGeneratorFunction");
|
| - sloppy_generator_function_map->SetPrototype(generator_function_prototype);
|
| + Map::SetPrototype(sloppy_generator_function_map,
|
| + generator_function_prototype);
|
| native_context()->set_sloppy_generator_function_map(
|
| *sloppy_generator_function_map);
|
|
|
| Handle<Map> strict_generator_function_map =
|
| Map::Copy(strict_function_map, "StrictGeneratorFunction");
|
| - strict_generator_function_map->SetPrototype(generator_function_prototype);
|
| + Map::SetPrototype(strict_generator_function_map,
|
| + generator_function_prototype);
|
| native_context()->set_strict_generator_function_map(
|
| *strict_generator_function_map);
|
|
|
| Handle<Map> strong_function_map(native_context()->strong_function_map());
|
| Handle<Map> strong_generator_function_map =
|
| Map::Copy(strong_function_map, "StrongGeneratorFunction");
|
| - strong_generator_function_map->SetPrototype(generator_function_prototype);
|
| + Map::SetPrototype(strong_generator_function_map,
|
| + generator_function_prototype);
|
| native_context()->set_strong_generator_function_map(
|
| *strong_generator_function_map);
|
|
|
| Handle<JSFunction> object_function(native_context()->object_function());
|
| Handle<Map> generator_object_prototype_map = Map::Create(isolate(), 0);
|
| - generator_object_prototype_map->SetPrototype(generator_object_prototype);
|
| + Map::SetPrototype(generator_object_prototype_map,
|
| + generator_object_prototype);
|
| native_context()->set_generator_object_prototype_map(
|
| *generator_object_prototype_map);
|
| }
|
| @@ -2207,7 +2213,7 @@ bool Genesis::InstallNatives() {
|
|
|
| // Set prototype on map.
|
| initial_map->set_non_instance_prototype(false);
|
| - initial_map->SetPrototype(array_prototype);
|
| + Map::SetPrototype(initial_map, array_prototype);
|
|
|
| // Update map with length accessor from Array and add "index" and "input".
|
| Map::EnsureDescriptorSlack(initial_map, 3);
|
|
|