1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:37:35 +00:00

LibJS: Make GC deferral friendship based

This commit is contained in:
Hendiadyoin1 2023-09-23 13:44:13 +02:00 committed by Andreas Kling
parent 9871bd4bec
commit 87e063db65
3 changed files with 8 additions and 7 deletions

View file

@ -15,12 +15,12 @@ public:
explicit DeferGC(Heap& heap)
: m_heap(heap)
{
m_heap.defer_gc({});
m_heap.defer_gc();
}
~DeferGC()
{
m_heap.undefer_gc({});
m_heap.undefer_gc();
}
private:

View file

@ -575,12 +575,12 @@ void Heap::did_destroy_weak_container(Badge<WeakContainer>, WeakContainer& set)
m_weak_containers.remove(set);
}
void Heap::defer_gc(Badge<DeferGC>)
void Heap::defer_gc()
{
++m_gc_deferrals;
}
void Heap::undefer_gc(Badge<DeferGC>)
void Heap::undefer_gc()
{
VERIFY(m_gc_deferrals > 0);
--m_gc_deferrals;

View file

@ -73,9 +73,6 @@ public:
void did_create_weak_container(Badge<WeakContainer>, WeakContainer&);
void did_destroy_weak_container(Badge<WeakContainer>, WeakContainer&);
void defer_gc(Badge<DeferGC>);
void undefer_gc(Badge<DeferGC>);
BlockAllocator& block_allocator() { return m_block_allocator; }
void uproot_cell(Cell* cell);
@ -83,6 +80,10 @@ public:
private:
friend class MarkingVisitor;
friend class GraphConstructorVisitor;
friend class DeferGC;
void defer_gc();
void undefer_gc();
static bool cell_must_survive_garbage_collection(Cell const&);