mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-24 11:21:34 +00:00
LibGC: Rename MarkedVector => RootVector
Let's try to make it a bit more clear that this is a Vector of GC roots.
This commit is contained in:
parent
ada36e5c0a
commit
3bfb0534be
Notes:
github-actions[bot]
2024-12-26 18:11:36 +00:00
Author: https://github.com/awesomekling
Commit: 3bfb0534be
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3048
117 changed files with 281 additions and 281 deletions
|
@ -5,9 +5,9 @@ set(SOURCES
|
|||
ConservativeVector.cpp
|
||||
ForeignCell.cpp
|
||||
Root.cpp
|
||||
RootVector.cpp
|
||||
Heap.cpp
|
||||
HeapBlock.cpp
|
||||
MarkedVector.cpp
|
||||
WeakContainer.cpp
|
||||
)
|
||||
|
||||
|
|
|
@ -30,6 +30,6 @@ template<class T, size_t inline_capacity = 0>
|
|||
class ConservativeVector;
|
||||
|
||||
template<class T, size_t inline_capacity = 0>
|
||||
class MarkedVector;
|
||||
class RootVector;
|
||||
|
||||
}
|
||||
|
|
|
@ -187,8 +187,8 @@ public:
|
|||
case HeapRoot::Type::Root:
|
||||
node.set("root"sv, ByteString::formatted("Root {} {}:{}", location->function_name(), location->filename(), location->line_number()));
|
||||
break;
|
||||
case HeapRoot::Type::MarkedVector:
|
||||
node.set("root"sv, "MarkedVector");
|
||||
case HeapRoot::Type::RootVector:
|
||||
node.set("root"sv, "RootVector");
|
||||
break;
|
||||
case HeapRoot::Type::RegisterPointer:
|
||||
node.set("root"sv, "RegisterPointer");
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
#include <LibGC/Forward.h>
|
||||
#include <LibGC/HeapRoot.h>
|
||||
#include <LibGC/Internals.h>
|
||||
#include <LibGC/MarkedVector.h>
|
||||
#include <LibGC/Root.h>
|
||||
#include <LibGC/RootVector.h>
|
||||
#include <LibGC/WeakContainer.h>
|
||||
|
||||
namespace GC {
|
||||
|
@ -61,8 +61,8 @@ public:
|
|||
void did_create_root(Badge<RootImpl>, RootImpl&);
|
||||
void did_destroy_root(Badge<RootImpl>, RootImpl&);
|
||||
|
||||
void did_create_marked_vector(Badge<MarkedVectorBase>, MarkedVectorBase&);
|
||||
void did_destroy_marked_vector(Badge<MarkedVectorBase>, MarkedVectorBase&);
|
||||
void did_create_marked_vector(Badge<RootVectorBase>, RootVectorBase&);
|
||||
void did_destroy_marked_vector(Badge<RootVectorBase>, RootVectorBase&);
|
||||
|
||||
void did_create_conservative_vector(Badge<ConservativeVectorBase>, ConservativeVectorBase&);
|
||||
void did_destroy_conservative_vector(Badge<ConservativeVectorBase>, ConservativeVectorBase&);
|
||||
|
@ -139,7 +139,7 @@ private:
|
|||
CellAllocator::List m_all_cell_allocators;
|
||||
|
||||
RootImpl::List m_roots;
|
||||
MarkedVectorBase::List m_marked_vectors;
|
||||
RootVectorBase::List m_marked_vectors;
|
||||
ConservativeVectorBase::List m_conservative_vectors;
|
||||
WeakContainer::List m_weak_containers;
|
||||
|
||||
|
@ -165,13 +165,13 @@ inline void Heap::did_destroy_root(Badge<RootImpl>, RootImpl& impl)
|
|||
m_roots.remove(impl);
|
||||
}
|
||||
|
||||
inline void Heap::did_create_marked_vector(Badge<MarkedVectorBase>, MarkedVectorBase& vector)
|
||||
inline void Heap::did_create_marked_vector(Badge<RootVectorBase>, RootVectorBase& vector)
|
||||
{
|
||||
VERIFY(!m_marked_vectors.contains(vector));
|
||||
m_marked_vectors.append(vector);
|
||||
}
|
||||
|
||||
inline void Heap::did_destroy_marked_vector(Badge<MarkedVectorBase>, MarkedVectorBase& vector)
|
||||
inline void Heap::did_destroy_marked_vector(Badge<RootVectorBase>, RootVectorBase& vector)
|
||||
{
|
||||
VERIFY(m_marked_vectors.contains(vector));
|
||||
m_marked_vectors.remove(vector);
|
||||
|
|
|
@ -14,7 +14,7 @@ struct HeapRoot {
|
|||
enum class Type {
|
||||
HeapFunctionCapturedPointer,
|
||||
Root,
|
||||
MarkedVector,
|
||||
RootVector,
|
||||
ConservativeVector,
|
||||
RegisterPointer,
|
||||
StackPointer,
|
||||
|
|
|
@ -6,27 +6,27 @@
|
|||
*/
|
||||
|
||||
#include <LibGC/Heap.h>
|
||||
#include <LibGC/MarkedVector.h>
|
||||
#include <LibGC/RootVector.h>
|
||||
|
||||
namespace GC {
|
||||
|
||||
MarkedVectorBase::MarkedVectorBase(Heap& heap)
|
||||
RootVectorBase::RootVectorBase(Heap& heap)
|
||||
: m_heap(&heap)
|
||||
{
|
||||
m_heap->did_create_marked_vector({}, *this);
|
||||
}
|
||||
|
||||
MarkedVectorBase::~MarkedVectorBase()
|
||||
RootVectorBase::~RootVectorBase()
|
||||
{
|
||||
m_heap->did_destroy_marked_vector({}, *this);
|
||||
}
|
||||
|
||||
MarkedVectorBase& MarkedVectorBase::operator=(MarkedVectorBase const& other)
|
||||
RootVectorBase& RootVectorBase::operator=(RootVectorBase const& other)
|
||||
{
|
||||
if (m_heap != other.m_heap) {
|
||||
m_heap = other.m_heap;
|
||||
|
||||
// NOTE: IntrusiveList will remove this MarkedVectorBase from the old heap it was part of.
|
||||
// NOTE: IntrusiveList will remove this RootVectorBase from the old heap it was part of.
|
||||
m_heap->did_create_marked_vector({}, *this);
|
||||
}
|
||||
|
|
@ -16,52 +16,52 @@
|
|||
|
||||
namespace GC {
|
||||
|
||||
class MarkedVectorBase {
|
||||
class RootVectorBase {
|
||||
public:
|
||||
virtual void gather_roots(HashMap<Cell*, GC::HeapRoot>&) const = 0;
|
||||
|
||||
protected:
|
||||
explicit MarkedVectorBase(Heap&);
|
||||
~MarkedVectorBase();
|
||||
explicit RootVectorBase(Heap&);
|
||||
~RootVectorBase();
|
||||
|
||||
MarkedVectorBase& operator=(MarkedVectorBase const&);
|
||||
RootVectorBase& operator=(RootVectorBase const&);
|
||||
|
||||
Heap* m_heap { nullptr };
|
||||
IntrusiveListNode<MarkedVectorBase> m_list_node;
|
||||
IntrusiveListNode<RootVectorBase> m_list_node;
|
||||
|
||||
public:
|
||||
using List = IntrusiveList<&MarkedVectorBase::m_list_node>;
|
||||
using List = IntrusiveList<&RootVectorBase::m_list_node>;
|
||||
};
|
||||
|
||||
template<typename T, size_t inline_capacity>
|
||||
class MarkedVector final
|
||||
: public MarkedVectorBase
|
||||
class RootVector final
|
||||
: public RootVectorBase
|
||||
, public Vector<T, inline_capacity> {
|
||||
|
||||
public:
|
||||
explicit MarkedVector(Heap& heap)
|
||||
: MarkedVectorBase(heap)
|
||||
explicit RootVector(Heap& heap)
|
||||
: RootVectorBase(heap)
|
||||
{
|
||||
}
|
||||
|
||||
virtual ~MarkedVector() = default;
|
||||
virtual ~RootVector() = default;
|
||||
|
||||
MarkedVector(MarkedVector const& other)
|
||||
: MarkedVectorBase(*other.m_heap)
|
||||
RootVector(RootVector const& other)
|
||||
: RootVectorBase(*other.m_heap)
|
||||
, Vector<T, inline_capacity>(other)
|
||||
{
|
||||
}
|
||||
|
||||
MarkedVector(MarkedVector&& other)
|
||||
: MarkedVectorBase(*other.m_heap)
|
||||
RootVector(RootVector&& other)
|
||||
: RootVectorBase(*other.m_heap)
|
||||
, Vector<T, inline_capacity>(move(static_cast<Vector<T, inline_capacity>&>(other)))
|
||||
{
|
||||
}
|
||||
|
||||
MarkedVector& operator=(MarkedVector const& other)
|
||||
RootVector& operator=(RootVector const& other)
|
||||
{
|
||||
Vector<T, inline_capacity>::operator=(other);
|
||||
MarkedVectorBase::operator=(other);
|
||||
RootVectorBase::operator=(other);
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
@ -70,9 +70,9 @@ public:
|
|||
for (auto& value : *this) {
|
||||
if constexpr (IsBaseOf<NanBoxedValue, T>) {
|
||||
if (value.is_cell())
|
||||
roots.set(&const_cast<T&>(value).as_cell(), HeapRoot { .type = HeapRoot::Type::MarkedVector });
|
||||
roots.set(&const_cast<T&>(value).as_cell(), HeapRoot { .type = HeapRoot::Type::RootVector });
|
||||
} else {
|
||||
roots.set(value, HeapRoot { .type = HeapRoot::Type::MarkedVector });
|
||||
roots.set(value, HeapRoot { .type = HeapRoot::Type::RootVector });
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue