From 3620a6e054494223f9d5be322cf9cb23c3b465af Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 7 Feb 2021 10:46:57 +0100 Subject: [PATCH] LibJS: Function must mark its home object --- Userland/Libraries/LibJS/Runtime/Function.cpp | 1 + Userland/Libraries/LibJS/Runtime/Function.h | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/Function.cpp b/Userland/Libraries/LibJS/Runtime/Function.cpp index 43b7d6e7e1..d054ee3a4a 100644 --- a/Userland/Libraries/LibJS/Runtime/Function.cpp +++ b/Userland/Libraries/LibJS/Runtime/Function.cpp @@ -90,6 +90,7 @@ void Function::visit_edges(Visitor& visitor) { Object::visit_edges(visitor); + visitor.visit(m_home_object); visitor.visit(m_bound_this); for (auto argument : m_bound_arguments) diff --git a/Userland/Libraries/LibJS/Runtime/Function.h b/Userland/Libraries/LibJS/Runtime/Function.h index d54f059ec2..6bd2ad7b16 100644 --- a/Userland/Libraries/LibJS/Runtime/Function.h +++ b/Userland/Libraries/LibJS/Runtime/Function.h @@ -48,8 +48,6 @@ public: virtual const FlyString& name() const = 0; virtual LexicalEnvironment* create_environment() = 0; - virtual void visit_edges(Visitor&) override; - BoundFunction* bind(Value bound_this_value, Vector arguments); Value bound_this() const { return m_bound_this; } @@ -65,6 +63,8 @@ public: virtual bool is_strict_mode() const { return false; } protected: + virtual void visit_edges(Visitor&) override; + explicit Function(Object& prototype); Function(Object& prototype, Value bound_this, Vector bound_arguments);