1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 11:48:10 +00:00

LibJS+LibWeb: Use Object::set_prototype() in more places

This commit is contained in:
Linus Groh 2021-10-02 14:32:37 +01:00
parent 84c9f3e0d0
commit ba6e4c7ae1
5 changed files with 5 additions and 10 deletions

View file

@ -1568,8 +1568,7 @@ namespace Web::Bindings {
@wrapper_class@::@wrapper_class@(JS::GlobalObject& global_object, @fully_qualified_name@& impl)
: @wrapper_base_class@(global_object, impl)
{
auto success = internal_set_prototype_of(&static_cast<WindowObject&>(global_object).ensure_web_prototype<@prototype_class@>("@name@")).release_value();
VERIFY(success);
set_prototype(&static_cast<WindowObject&>(global_object).ensure_web_prototype<@prototype_class@>("@name@"));
}
)~~~");
}

View file

@ -82,7 +82,7 @@ void ECMAScriptFunctionObject::initialize(GlobalObject& global_object)
break;
case FunctionKind::Generator:
// prototype is "g1.prototype" in figure-2 (https://tc39.es/ecma262/img/figure-2.png)
(void)prototype->internal_set_prototype_of(global_object.generator_object_prototype());
set_prototype(global_object.generator_object_prototype());
break;
}
define_direct_property(vm.names.prototype, prototype, Attribute::Writable);

View file

@ -142,8 +142,7 @@ void GlobalObject::initialize_global_object()
static_cast<ObjectPrototype*>(m_object_prototype)->initialize(*this);
auto success = Object::internal_set_prototype_of(m_object_prototype).release_value();
VERIFY(success);
Object::set_prototype(m_object_prototype);
// This must be initialized before allocating AggregateErrorPrototype, which uses ErrorPrototype as its prototype.
m_error_prototype = heap().allocate<ErrorPrototype>(*this, *this);

View file

@ -48,9 +48,7 @@ Object::Object(ConstructWithoutPrototypeTag, GlobalObject& global_object)
Object::Object(Object& prototype)
{
m_shape = prototype.global_object().empty_object_shape();
// FIXME: Factor out step 9 into a simple prototype setter and use that
auto success = internal_set_prototype_of(&prototype).release_value();
VERIFY(success);
set_prototype(&prototype);
}
Object::Object(Shape& shape)

View file

@ -54,8 +54,7 @@ void WindowObject::initialize_global_object()
{
Base::initialize_global_object();
auto success = Object::internal_set_prototype_of(&ensure_web_prototype<EventTargetPrototype>("EventTarget")).release_value();
VERIFY(success);
Object::set_prototype(&ensure_web_prototype<EventTargetPrototype>("EventTarget"));
// FIXME: These should be native accessors, not properties
define_direct_property("window", this, JS::Attribute::Enumerable);