ladybird/Libraries/LibGC/CrossHeapMember.cpp
Ali Mohammad Pur 76f17f7703 LibGC: Add support for coordinated multi-heap collection
Allow having separate GC heaps and implement coordinated marking between
them; this is useful for keeping wasm and js GC heaps separated with a
clear boundary.
2026-06-19 17:01:47 +02:00

28 lines
648 B
C++

/*
* Copyright (c) 2026, Ali Mohammad Pur <ali@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <LibGC/CrossHeapMember.h>
#include <LibGC/Heap.h>
namespace GC {
void CrossHeapMemberBase::reset(Cell* cell)
{
auto* new_heap = cell ? &HeapBlockBase::from_cell(cell)->heap() : nullptr;
if (m_registered_heap == new_heap) {
m_cell = cell;
return;
}
if (m_registered_heap)
m_registered_heap->did_destroy_cross_heap_member({}, *this);
m_cell = cell;
m_registered_heap = new_heap;
if (m_registered_heap)
m_registered_heap->did_create_cross_heap_member({}, *this);
}
}