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:
parent
f290c59dd8
commit
6a1b82df2b
13 changed files with 76 additions and 8 deletions
|
@ -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 };
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 };
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue