mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:07:35 +00:00
LibJS: Make GC deferral friendship based
This commit is contained in:
parent
9871bd4bec
commit
87e063db65
3 changed files with 8 additions and 7 deletions
|
@ -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:
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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&);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue