LibWeb: Only set prototype once for object with IDL interface

Before this change, we were going through the chain of base classes for
each IDL interface object and having them set the prototype to their
prototype.

Instead of doing that, reorder things so that we set the right prototype
immediately in Foo::initialize(), and then don't bother in all the base
class overrides.

This knocks off a ~1% profile item on Speedometer 3.
This commit is contained in:
Andreas Kling 2025-04-20 16:22:57 +02:00 committed by Andreas Kling
commit a6dfc74e93
Notes: github-actions[bot] 2025-04-20 16:44:17 +00:00
417 changed files with 423 additions and 423 deletions

View file

@ -41,8 +41,8 @@ GC::Ref<WebIDL::CallbackType> ByteLengthQueuingStrategy::size()
void ByteLengthQueuingStrategy::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ByteLengthQueuingStrategy);
Base::initialize(realm);
}
}

View file

@ -41,8 +41,8 @@ GC::Ref<WebIDL::CallbackType> CountQueuingStrategy::size()
void CountQueuingStrategy::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CountQueuingStrategy);
Base::initialize(realm);
}
}

View file

@ -75,8 +75,8 @@ ReadableByteStreamController::ReadableByteStreamController(JS::Realm& realm)
void ReadableByteStreamController::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableByteStreamController);
Base::initialize(realm);
}
// https://streams.spec.whatwg.org/#rbs-controller-enqueue

View file

@ -217,8 +217,8 @@ void ReadableStream::error(JS::Value error)
void ReadableStream::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStream);
Base::initialize(realm);
}
void ReadableStream::visit_edges(Cell::Visitor& visitor)

View file

@ -51,8 +51,8 @@ ReadableStreamAsyncIterator::~ReadableStreamAsyncIterator() = default;
void ReadableStreamAsyncIterator::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStreamAsyncIterator);
Base::initialize(realm);
}
void ReadableStreamAsyncIterator::visit_edges(JS::Cell::Visitor& visitor)

View file

@ -27,8 +27,8 @@ ReadableStreamBYOBReader::ReadableStreamBYOBReader(JS::Realm& realm)
void ReadableStreamBYOBReader::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStreamBYOBReader);
Base::initialize(realm);
}
// https://streams.spec.whatwg.org/#byob-reader-constructor

View file

@ -31,8 +31,8 @@ ReadableStreamBYOBRequest::ReadableStreamBYOBRequest(JS::Realm& realm)
void ReadableStreamBYOBRequest::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStreamBYOBRequest);
Base::initialize(realm);
}
void ReadableStreamBYOBRequest::visit_edges(Cell::Visitor& visitor)

View file

@ -125,8 +125,8 @@ void ReadableStreamDefaultController::release_steps()
void ReadableStreamDefaultController::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStreamDefaultController);
Base::initialize(realm);
}
void ReadableStreamDefaultController::visit_edges(Cell::Visitor& visitor)

View file

@ -56,8 +56,8 @@ ReadableStreamDefaultReader::ReadableStreamDefaultReader(JS::Realm& realm)
void ReadableStreamDefaultReader::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ReadableStreamDefaultReader);
Base::initialize(realm);
}
void ReadableStreamDefaultReader::visit_edges(Cell::Visitor& visitor)

View file

@ -170,8 +170,8 @@ TransformStream::~TransformStream() = default;
void TransformStream::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(TransformStream);
Base::initialize(realm);
}
void TransformStream::visit_edges(Cell::Visitor& visitor)

View file

@ -24,8 +24,8 @@ TransformStreamDefaultController::~TransformStreamDefaultController() = default;
void TransformStreamDefaultController::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(TransformStreamDefaultController);
Base::initialize(realm);
}
void TransformStreamDefaultController::visit_edges(Cell::Visitor& visitor)

View file

@ -108,8 +108,8 @@ WritableStream::WritableStream(JS::Realm& realm)
void WritableStream::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(WritableStream);
Base::initialize(realm);
}
void WritableStream::visit_edges(Cell::Visitor& visitor)

View file

@ -30,8 +30,8 @@ void WritableStreamDefaultController::visit_edges(Visitor& visitor)
void WritableStreamDefaultController::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(WritableStreamDefaultController);
Base::initialize(realm);
}
// https://streams.spec.whatwg.org/#ws-default-controller-error

View file

@ -127,8 +127,8 @@ WritableStreamDefaultWriter::WritableStreamDefaultWriter(JS::Realm& realm)
void WritableStreamDefaultWriter::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(WritableStreamDefaultWriter);
Base::initialize(realm);
}
void WritableStreamDefaultWriter::visit_edges(Cell::Visitor& visitor)