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

LibJS: Put zombie cell tracking code behind a compile-time flag

Since this is a debug-only feature, let's not have it impact GC marking
performance when you don't need it.
This commit is contained in:
Andreas Kling 2021-10-02 16:35:55 +02:00
parent f290c59dd8
commit 6a1b82df2b
13 changed files with 76 additions and 8 deletions

View file

@ -34,7 +34,13 @@ public:
private:
virtual void visit_edges(Visitor& visitor) override;
virtual void did_become_zombie() override { deregister(); }
#ifdef JS_TRACK_ZOMBIE_CELLS
virtual void did_become_zombie() override
{
deregister();
}
#endif
FunctionObject* m_cleanup_callback { nullptr };

View file

@ -238,9 +238,11 @@ FLATTEN void Shape::add_property_without_transition(PropertyName const& property
add_property_without_transition(property_name.to_string_or_symbol(), attributes);
}
#ifdef JS_TRACK_ZOMBIE_CELLS
void Shape::did_become_zombie()
{
revoke_weak_ptrs();
}
#endif
}

View file

@ -88,7 +88,10 @@ public:
private:
virtual const char* class_name() const override { return "Shape"; }
virtual void visit_edges(Visitor&) override;
#ifdef JS_TRACK_ZOMBIE_CELLS
virtual void did_become_zombie() override;
#endif
Shape* get_or_prune_cached_forward_transition(TransitionKey const&);
Shape* get_or_prune_cached_prototype_transition(Object* prototype);

View file

@ -30,7 +30,13 @@ public:
virtual void remove_swept_cells(Badge<Heap>, Span<Cell*>) override;
private:
virtual void did_become_zombie() override { deregister(); }
#ifdef JS_TRACK_ZOMBIE_CELLS
virtual void did_become_zombie() override
{
deregister();
}
#endif
void visit_edges(Visitor&) override;
HashMap<Cell*, Value> m_values; // This stores Cell pointers instead of Object pointers to aide with sweeping

View file

@ -31,7 +31,13 @@ public:
private:
virtual void visit_edges(Visitor&) override;
virtual void did_become_zombie() override { deregister(); }
#ifdef JS_TRACK_ZOMBIE_CELLS
virtual void did_become_zombie() override
{
deregister();
}
#endif
Object* m_value { nullptr };
u32 m_last_execution_generation { 0 };

View file

@ -30,7 +30,12 @@ public:
virtual void remove_swept_cells(Badge<Heap>, Span<Cell*>) override;
private:
virtual void did_become_zombie() override { deregister(); }
#ifdef JS_TRACK_ZOMBIE_CELLS
virtual void did_become_zombie() override
{
deregister();
}
#endif
HashTable<Cell*> m_values; // This stores Cell pointers instead of Object pointers to aide with sweeping
};