LibWeb: Fix a few "missing visit_edges" warnings from the GC verifier

This commit is contained in:
Matthew Olsson 2024-04-06 10:30:13 -07:00 committed by Andreas Kling
parent 3c3ead5ff4
commit aac873fcec
Notes: sideshowbarker 2024-07-17 02:37:08 +09:00
7 changed files with 36 additions and 7 deletions

View file

@ -2814,6 +2814,8 @@ private:
virtual JS::ThrowCompletionOr<bool> internal_set_prototype_of(JS::Object* prototype) override;
virtual JS::ThrowCompletionOr<bool> internal_prevent_extensions() override;
virtual void visit_edges(Visitor&) override;
JS::NonnullGCPtr<JS::Realm> m_realm; // [[Realm]]
};
)~~~");
@ -2953,6 +2955,12 @@ JS::ThrowCompletionOr<bool> @named_properties_class@::internal_prevent_extension
// Note: this keeps named properties object extensible by making [[PreventExtensions]] fail.
return false;
}
void @named_properties_class@::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_realm);
}
)~~~");
}

View file

@ -57,6 +57,12 @@ JS_DEFINE_NATIVE_FUNCTION(KeyAlgorithm::name_getter)
return JS::PrimitiveString::create(vm, name);
}
void KeyAlgorithm::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_realm);
}
JS::NonnullGCPtr<RsaKeyAlgorithm> RsaKeyAlgorithm::create(JS::Realm& realm)
{
return realm.heap().allocate<RsaKeyAlgorithm>(realm, realm);
@ -143,11 +149,6 @@ JS_DEFINE_NATIVE_FUNCTION(EcKeyAlgorithm::named_curve_getter)
return JS::PrimitiveString::create(vm, impl->named_curve());
}
void EcKeyAlgorithm::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
}
JS::NonnullGCPtr<RsaHashedKeyAlgorithm> RsaHashedKeyAlgorithm::create(JS::Realm& realm)
{
return realm.heap().allocate<RsaHashedKeyAlgorithm>(realm, realm);

View file

@ -17,7 +17,7 @@ namespace Web::Crypto {
// https://w3c.github.io/webcrypto/#key-algorithm-dictionary
class KeyAlgorithm : public JS::Object {
JS_OBJECT(KeyAlgorithm, Object);
JS_OBJECT(KeyAlgorithm, JS::Object);
JS_DECLARE_ALLOCATOR(KeyAlgorithm);
public:
@ -33,6 +33,7 @@ protected:
KeyAlgorithm(JS::Realm&);
virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Visitor&) override;
private:
JS_DECLARE_NATIVE_FUNCTION(name_getter);
@ -113,7 +114,6 @@ protected:
EcKeyAlgorithm(JS::Realm&);
virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Visitor&) override;
private:
JS_DECLARE_NATIVE_FUNCTION(named_curve_getter);

View file

@ -513,4 +513,13 @@ void ViewportPaintable::recompute_selection_states()
}
}
void ViewportPaintable::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
for (auto it : scroll_state)
visitor.visit(it.key);
for (auto it : clip_state)
visitor.visit(it.key);
}
}

View file

@ -37,6 +37,8 @@ private:
void build_stacking_context_tree();
explicit ViewportPaintable(Layout::Viewport const&);
virtual void visit_edges(Visitor&) override;
};
}

View file

@ -167,4 +167,11 @@ Optional<CSSPixelFraction> SVGDecodedImageData::intrinsic_aspect_ratio() const
return {};
}
void SVGDecodedImageData::SVGPageClient::visit_edges(Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_host_page);
visitor.visit(m_svg_page);
}
}

View file

@ -81,6 +81,8 @@ private:
: m_host_page(host_page)
{
}
virtual void visit_edges(Visitor&) override;
};
}