mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 00:07:36 +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)
|
explicit DeferGC(Heap& heap)
|
||||||
: m_heap(heap)
|
: m_heap(heap)
|
||||||
{
|
{
|
||||||
m_heap.defer_gc({});
|
m_heap.defer_gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
~DeferGC()
|
~DeferGC()
|
||||||
{
|
{
|
||||||
m_heap.undefer_gc({});
|
m_heap.undefer_gc();
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -575,12 +575,12 @@ void Heap::did_destroy_weak_container(Badge<WeakContainer>, WeakContainer& set)
|
||||||
m_weak_containers.remove(set);
|
m_weak_containers.remove(set);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Heap::defer_gc(Badge<DeferGC>)
|
void Heap::defer_gc()
|
||||||
{
|
{
|
||||||
++m_gc_deferrals;
|
++m_gc_deferrals;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Heap::undefer_gc(Badge<DeferGC>)
|
void Heap::undefer_gc()
|
||||||
{
|
{
|
||||||
VERIFY(m_gc_deferrals > 0);
|
VERIFY(m_gc_deferrals > 0);
|
||||||
--m_gc_deferrals;
|
--m_gc_deferrals;
|
||||||
|
|
|
@ -73,9 +73,6 @@ public:
|
||||||
void did_create_weak_container(Badge<WeakContainer>, WeakContainer&);
|
void did_create_weak_container(Badge<WeakContainer>, WeakContainer&);
|
||||||
void did_destroy_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; }
|
BlockAllocator& block_allocator() { return m_block_allocator; }
|
||||||
|
|
||||||
void uproot_cell(Cell* cell);
|
void uproot_cell(Cell* cell);
|
||||||
|
@ -83,6 +80,10 @@ public:
|
||||||
private:
|
private:
|
||||||
friend class MarkingVisitor;
|
friend class MarkingVisitor;
|
||||||
friend class GraphConstructorVisitor;
|
friend class GraphConstructorVisitor;
|
||||||
|
friend class DeferGC;
|
||||||
|
|
||||||
|
void defer_gc();
|
||||||
|
void undefer_gc();
|
||||||
|
|
||||||
static bool cell_must_survive_garbage_collection(Cell const&);
|
static bool cell_must_survive_garbage_collection(Cell const&);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue