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
parent 7884e58b5c
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

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

View file

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

View file

@ -32,8 +32,8 @@ AnimationPlaybackEvent::AnimationPlaybackEvent(JS::Realm& realm, FlyString const
void AnimationPlaybackEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(AnimationPlaybackEvent);
Base::initialize(realm);
}
}

View file

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

View file

@ -84,8 +84,8 @@ DocumentTimeline::DocumentTimeline(JS::Realm& realm, DOM::Document& document, Hi
void DocumentTimeline::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DocumentTimeline);
Base::initialize(realm);
}
}

View file

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

View file

@ -14,10 +14,12 @@
#include <LibJS/Heap/Cell.h>
#include <LibJS/Runtime/VM.h>
#define WEB_SET_PROTOTYPE_FOR_INTERFACE_WITH_CUSTOM_NAME(interface_class, interface_name) \
do { \
static auto name = #interface_name##_fly_string; \
set_prototype(&Bindings::ensure_web_prototype<Bindings::interface_class##Prototype>(realm, name)); \
#define WEB_SET_PROTOTYPE_FOR_INTERFACE_WITH_CUSTOM_NAME(interface_class, interface_name) \
do { \
static auto name = #interface_name##_fly_string; \
if (!shape().prototype()) { \
set_prototype(&Bindings::ensure_web_prototype<Bindings::interface_class##Prototype>(realm, name)); \
} \
} while (0)
#define WEB_SET_PROTOTYPE_FOR_INTERFACE(interface_name) WEB_SET_PROTOTYPE_FOR_INTERFACE_WITH_CUSTOM_NAME(interface_name, interface_name)

View file

@ -32,8 +32,8 @@ AnimationEvent::AnimationEvent(JS::Realm& realm, FlyString const& type, Animatio
void AnimationEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(AnimationEvent);
Base::initialize(realm);
}
}

View file

@ -75,8 +75,8 @@ CSSAnimation::CSSAnimation(JS::Realm& realm)
void CSSAnimation::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSAnimation);
Base::initialize(realm);
}
}

View file

@ -24,8 +24,8 @@ void CSSConditionRule::for_each_effective_rule(TraversalOrder order, Function<vo
void CSSConditionRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSConditionRule);
Base::initialize(realm);
}
}

View file

@ -30,8 +30,8 @@ CSSFontFaceDescriptors::~CSSFontFaceDescriptors() = default;
void CSSFontFaceDescriptors::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSFontFaceDescriptors);
Base::initialize(realm);
}
// https://drafts.csswg.org/cssom/#dom-cssstyledeclaration-length

View file

@ -30,8 +30,8 @@ CSSFontFaceRule::CSSFontFaceRule(JS::Realm& realm, GC::Ref<CSSFontFaceDescriptor
void CSSFontFaceRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSFontFaceRule);
Base::initialize(realm);
}
bool CSSFontFaceRule::is_valid() const

View file

@ -24,8 +24,8 @@ CSSGroupingRule::CSSGroupingRule(JS::Realm& realm, CSSRuleList& rules, Type type
void CSSGroupingRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSGroupingRule);
Base::initialize(realm);
}
void CSSGroupingRule::visit_edges(Cell::Visitor& visitor)

View file

@ -39,8 +39,8 @@ CSSImportRule::CSSImportRule(JS::Realm& realm, URL url, GC::Ptr<DOM::Document> d
void CSSImportRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSImportRule);
Base::initialize(realm);
}
void CSSImportRule::visit_edges(Cell::Visitor& visitor)

View file

@ -34,8 +34,8 @@ void CSSKeyframeRule::visit_edges(Visitor& visitor)
void CSSKeyframeRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSKeyframeRule);
Base::initialize(realm);
}
String CSSKeyframeRule::serialized() const

View file

@ -36,8 +36,8 @@ void CSSKeyframesRule::visit_edges(Visitor& visitor)
void CSSKeyframesRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSKeyframesRule);
Base::initialize(realm);
}
String CSSKeyframesRule::serialized() const

View file

@ -37,8 +37,8 @@ CSSLayerBlockRule::CSSLayerBlockRule(JS::Realm& realm, FlyString name, CSSRuleLi
void CSSLayerBlockRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSLayerBlockRule);
Base::initialize(realm);
}
String CSSLayerBlockRule::serialized() const

View file

@ -26,8 +26,8 @@ CSSLayerStatementRule::CSSLayerStatementRule(JS::Realm& realm, Vector<FlyString>
void CSSLayerStatementRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSLayerStatementRule);
Base::initialize(realm);
}
String CSSLayerStatementRule::serialized() const

View file

@ -27,8 +27,8 @@ CSSMediaRule::CSSMediaRule(JS::Realm& realm, MediaList& media, CSSRuleList& rule
void CSSMediaRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSMediaRule);
Base::initialize(realm);
}
void CSSMediaRule::visit_edges(Cell::Visitor& visitor)

View file

@ -30,8 +30,8 @@ GC::Ref<CSSNamespaceRule> CSSNamespaceRule::create(JS::Realm& realm, Optional<Fl
void CSSNamespaceRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSNamespaceRule);
Base::initialize(realm);
}
// https://www.w3.org/TR/cssom/#serialize-a-css-rule

View file

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

View file

@ -36,8 +36,8 @@ Optional<String> CSSPropertyRule::initial_value() const
void CSSPropertyRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSPropertyRule);
Base::initialize(realm);
}
// https://www.w3.org/TR/cssom-1/#serialize-a-css-rule

View file

@ -42,8 +42,8 @@ GC::Ref<CSSRuleList> CSSRuleList::create_empty(JS::Realm& realm)
void CSSRuleList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSRuleList);
Base::initialize(realm);
}
void CSSRuleList::visit_edges(Cell::Visitor& visitor)

View file

@ -29,8 +29,8 @@ CSSStyleDeclaration::CSSStyleDeclaration(JS::Realm& realm, Computed computed, Re
void CSSStyleDeclaration::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSStyleDeclaration);
Base::initialize(realm);
}
// https://drafts.csswg.org/cssom/#update-style-attribute-for

View file

@ -77,8 +77,8 @@ CSSStyleProperties::CSSStyleProperties(JS::Realm& realm, Computed computed, Read
void CSSStyleProperties::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSStyleProperties);
Base::initialize(realm);
}
void CSSStyleProperties::visit_edges(Visitor& visitor)

View file

@ -32,8 +32,8 @@ CSSStyleRule::CSSStyleRule(JS::Realm& realm, SelectorList&& selectors, CSSStyleP
void CSSStyleRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSStyleRule);
Base::initialize(realm);
}
void CSSStyleRule::visit_edges(Cell::Visitor& visitor)

View file

@ -114,8 +114,8 @@ CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& me
void CSSStyleSheet::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSStyleSheet);
Base::initialize(realm);
}
void CSSStyleSheet::visit_edges(Cell::Visitor& visitor)

View file

@ -26,8 +26,8 @@ CSSSupportsRule::CSSSupportsRule(JS::Realm& realm, NonnullRefPtr<Supports>&& sup
void CSSSupportsRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSSupportsRule);
Base::initialize(realm);
}
String CSSSupportsRule::condition_text() const

View file

@ -126,8 +126,8 @@ CSSTransition::CSSTransition(JS::Realm& realm, DOM::Element& element, PropertyID
void CSSTransition::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CSSTransition);
Base::initialize(realm);
}
void CSSTransition::visit_edges(Cell::Visitor& visitor)

View file

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

View file

@ -56,9 +56,8 @@ FontFaceSet::FontFaceSet(JS::Realm& realm, GC::Ref<WebIDL::Promise> ready_promis
void FontFaceSet::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(FontFaceSet);
Base::initialize(realm);
}
void FontFaceSet::visit_edges(Cell::Visitor& visitor)

View file

@ -30,8 +30,8 @@ MediaList::MediaList(JS::Realm& realm, Vector<NonnullRefPtr<MediaQuery>>&& media
void MediaList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(MediaList);
Base::initialize(realm);
}
void MediaList::visit_edges(Visitor& visitor)

View file

@ -32,8 +32,8 @@ MediaQueryList::MediaQueryList(DOM::Document& document, Vector<NonnullRefPtr<Med
void MediaQueryList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(MediaQueryList);
Base::initialize(realm);
}
void MediaQueryList::visit_edges(Cell::Visitor& visitor)

View file

@ -35,8 +35,8 @@ MediaQueryListEvent::~MediaQueryListEvent() = default;
void MediaQueryListEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(MediaQueryListEvent);
Base::initialize(realm);
}
}

View file

@ -29,8 +29,8 @@ Screen::Screen(HTML::Window& window)
void Screen::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Screen);
Base::initialize(realm);
}
void Screen::visit_edges(Cell::Visitor& visitor)

View file

@ -20,8 +20,8 @@ ScreenOrientation::ScreenOrientation(JS::Realm& realm)
void ScreenOrientation::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ScreenOrientation);
Base::initialize(realm);
}
GC::Ref<ScreenOrientation> ScreenOrientation::create(JS::Realm& realm)

View file

@ -155,8 +155,8 @@ StyleSheetList::StyleSheetList(GC::Ref<DOM::Node> document_or_shadow_root)
void StyleSheetList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(StyleSheetList);
Base::initialize(realm);
}
void StyleSheetList::visit_edges(Cell::Visitor& visitor)

View file

@ -36,8 +36,8 @@ TransitionEvent::~TransitionEvent() = default;
void TransitionEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(TransitionEvent);
Base::initialize(realm);
}
}

View file

@ -30,8 +30,8 @@ VisualViewport::VisualViewport(DOM::Document& document)
void VisualViewport::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(VisualViewport);
Base::initialize(realm);
}
void VisualViewport::visit_edges(Cell::Visitor& visitor)

View file

@ -35,8 +35,8 @@ Clipboard::~Clipboard() = default;
void Clipboard::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Clipboard);
Base::initialize(realm);
}
// https://w3c.github.io/clipboard-apis/#os-specific-well-known-format

View file

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

View file

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

View file

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

View file

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

View file

@ -43,8 +43,8 @@ SecurityPolicyViolationEvent::~SecurityPolicyViolationEvent() = default;
void SecurityPolicyViolationEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(SecurityPolicyViolationEvent);
Base::initialize(realm);
}
}

View file

@ -32,7 +32,7 @@ Credential::Credential(JS::Realm& realm)
void Credential::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Credential);
Base::initialize(realm);
}
}

View file

@ -52,8 +52,8 @@ CredentialsContainer::CredentialsContainer(JS::Realm& realm)
void CredentialsContainer::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CredentialsContainer);
Base::initialize(realm);
}
}

View file

@ -33,8 +33,8 @@ FederatedCredential::FederatedCredential(JS::Realm& realm)
void FederatedCredential::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(FederatedCredential);
Base::initialize(realm);
}
}

View file

@ -38,8 +38,8 @@ PasswordCredential::PasswordCredential(JS::Realm& realm)
void PasswordCredential::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(PasswordCredential);
Base::initialize(realm);
}
}

View file

@ -34,8 +34,8 @@ Crypto::~Crypto() = default;
void Crypto::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Crypto);
Base::initialize(realm);
m_subtle = SubtleCrypto::create(realm);
}

View file

@ -52,8 +52,8 @@ CryptoKey::~CryptoKey()
void CryptoKey::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CryptoKey);
Base::initialize(realm);
}
void CryptoKey::visit_edges(Visitor& visitor)

View file

@ -58,8 +58,8 @@ SubtleCrypto::~SubtleCrypto() = default;
void SubtleCrypto::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(SubtleCrypto);
Base::initialize(realm);
}
// https://w3c.github.io/webcrypto/#dfn-normalize-an-algorithm

View file

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

View file

@ -30,8 +30,8 @@ AbortSignal::AbortSignal(JS::Realm& realm)
void AbortSignal::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(AbortSignal);
Base::initialize(realm);
}
// https://dom.spec.whatwg.org/#abortsignal-add

View file

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

View file

@ -44,8 +44,8 @@ Attr::Attr(Document& document, QualifiedName qualified_name, String value, Eleme
void Attr::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Attr);
Base::initialize(realm);
}
void Attr::visit_edges(Cell::Visitor& visitor)

View file

@ -21,8 +21,8 @@ CDATASection::~CDATASection() = default;
void CDATASection::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CDATASection);
Base::initialize(realm);
}
}

View file

@ -27,8 +27,8 @@ CharacterData::~CharacterData() = default;
void CharacterData::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(CharacterData);
Base::initialize(realm);
}
// https://dom.spec.whatwg.org/#dom-characterdata-data

View file

@ -27,8 +27,8 @@ WebIDL::ExceptionOr<GC::Ref<Comment>> Comment::construct_impl(JS::Realm& realm,
void Comment::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Comment);
Base::initialize(realm);
}
}

View file

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

View file

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

View file

@ -75,8 +75,8 @@ DOMTokenList::DOMTokenList(Element& associated_element, FlyString associated_att
void DOMTokenList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DOMTokenList);
Base::initialize(realm);
}
void DOMTokenList::visit_edges(Cell::Visitor& visitor)

View file

@ -481,8 +481,8 @@ Document::~Document()
void Document::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Document);
Base::initialize(realm);
Bindings::DocumentPrototype::define_unforgeable_attributes(realm, *this);
m_selection = realm.create<Selection::Selection>(realm, *this);

View file

@ -19,8 +19,8 @@ DocumentFragment::DocumentFragment(Document& document)
void DocumentFragment::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DocumentFragment);
Base::initialize(realm);
}
void DocumentFragment::visit_edges(Cell::Visitor& visitor)

View file

@ -24,8 +24,8 @@ DocumentType::DocumentType(Document& document)
void DocumentType::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DocumentType);
Base::initialize(realm);
}
}

View file

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

View file

@ -55,8 +55,8 @@ Event::Event(JS::Realm& realm, FlyString const& type, EventInit const& event_ini
void Event::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Event);
Base::initialize(realm);
Bindings::EventPrototype::define_unforgeable_attributes(realm, *this);
}

View file

@ -63,12 +63,12 @@ WebIDL::ExceptionOr<GC::Ref<EventTarget>> EventTarget::construct_impl(JS::Realm&
void EventTarget::initialize(JS::Realm& realm)
{
Base::initialize(realm);
// FIXME: We can't do this for HTML::Window or HTML::WorkerGlobalScope, as this will run when creating the initial global object.
// During this time, the ESO is not setup, so it will cause a nullptr dereference in host_defined_intrinsics.
if (!is_window_or_worker_global_scope_mixin())
WEB_SET_PROTOTYPE_FOR_INTERFACE(EventTarget);
Base::initialize(realm);
}
void EventTarget::visit_edges(Cell::Visitor& visitor)

View file

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

View file

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

View file

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

View file

@ -36,8 +36,8 @@ NamedNodeMap::NamedNodeMap(Element& element)
void NamedNodeMap::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(NamedNodeMap);
Base::initialize(realm);
}
void NamedNodeMap::visit_edges(Cell::Visitor& visitor)

View file

@ -27,8 +27,8 @@ NodeIterator::~NodeIterator() = default;
void NodeIterator::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(NodeIterator);
Base::initialize(realm);
}
void NodeIterator::finalize()

View file

@ -21,8 +21,8 @@ NodeList::~NodeList() = default;
void NodeList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(NodeList);
Base::initialize(realm);
}
Optional<JS::Value> NodeList::item_value(size_t index) const

View file

@ -22,8 +22,8 @@ ProcessingInstruction::ProcessingInstruction(Document& document, String const& d
void ProcessingInstruction::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ProcessingInstruction);
Base::initialize(realm);
}
}

View file

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

View file

@ -33,8 +33,8 @@ void ShadowRoot::finalize()
void ShadowRoot::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(ShadowRoot);
Base::initialize(realm);
}
// https://dom.spec.whatwg.org/#dom-shadowroot-onslotchange

View file

@ -40,8 +40,8 @@ WebIDL::ExceptionOr<GC::Ref<StaticRange>> StaticRange::construct_impl(JS::Realm&
void StaticRange::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(StaticRange);
Base::initialize(realm);
}
}

View file

@ -29,8 +29,8 @@ Text::Text(Document& document, NodeType type, String const& data)
void Text::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Text);
Base::initialize(realm);
}
void Text::visit_edges(Cell::Visitor& visitor)

View file

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

View file

@ -23,8 +23,8 @@ XMLDocument::XMLDocument(JS::Realm& realm, URL::URL const& url)
void XMLDocument::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(XMLDocument);
Base::initialize(realm);
}
}

View file

@ -109,8 +109,8 @@ DOMURL::~DOMURL() = default;
void DOMURL::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE_WITH_CUSTOM_NAME(DOMURL, URL);
Base::initialize(realm);
}
void DOMURL::visit_edges(Cell::Visitor& visitor)

View file

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

View file

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

View file

@ -61,8 +61,8 @@ TextDecoder::~TextDecoder() = default;
void TextDecoder::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(TextDecoder);
Base::initialize(realm);
}
// https://encoding.spec.whatwg.org/#dom-textdecoder-decode

View file

@ -28,8 +28,8 @@ TextEncoder::~TextEncoder() = default;
void TextEncoder::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(TextEncoder);
Base::initialize(realm);
}
// https://encoding.spec.whatwg.org/#dom-textencoder-encode

View file

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

View file

@ -27,8 +27,8 @@ FileSystemEntry::FileSystemEntry(JS::Realm& realm, EntryType entry_type, ByteStr
void FileSystemEntry::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(FileSystemEntry);
Base::initialize(realm);
}
// https://wicg.github.io/entries-api/#dom-filesystementry-isfile

View file

@ -112,8 +112,8 @@ PerformanceTimeline::ShouldAddEntry PerformanceEventTiming::should_add_entry(Opt
void PerformanceEventTiming::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(PerformanceEventTiming);
Base::initialize(realm);
}
void PerformanceEventTiming::visit_edges(JS::Cell::Visitor& visitor)

View file

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

View file

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

View file

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

View file

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

View file

@ -147,8 +147,8 @@ Blob::~Blob() = default;
void Blob::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(Blob);
Base::initialize(realm);
}
WebIDL::ExceptionOr<void> Blob::serialization_steps(HTML::SerializationRecord& record, bool, HTML::SerializationMemory&)

View file

@ -31,8 +31,8 @@ File::File(JS::Realm& realm)
void File::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(File);
Base::initialize(realm);
}
File::~File() = default;

View file

@ -30,8 +30,8 @@ FileList::~FileList() = default;
void FileList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(FileList);
Base::initialize(realm);
}
Optional<JS::Value> FileList::item_value(size_t index) const

View file

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

View file

@ -29,8 +29,8 @@ FileReaderSync::FileReaderSync(JS::Realm& realm)
void FileReaderSync::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(FileReaderSync);
Base::initialize(realm);
}
GC::Ref<FileReaderSync> FileReaderSync::create(JS::Realm& realm)

View file

@ -148,8 +148,8 @@ DOMMatrix::~DOMMatrix() = default;
void DOMMatrix::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DOMMatrix);
Base::initialize(realm);
}
// https://drafts.fxtf.org/geometry/#dom-dommatrix-frommatrix

View file

@ -154,8 +154,8 @@ DOMMatrixReadOnly::~DOMMatrixReadOnly() = default;
void DOMMatrixReadOnly::initialize(JS::Realm& realm)
{
Base::initialize(realm);
WEB_SET_PROTOTYPE_FOR_INTERFACE(DOMMatrixReadOnly);
Base::initialize(realm);
}
// https://drafts.fxtf.org/geometry/#create-a-2d-matrix

Some files were not shown because too many files have changed in this diff Show more