mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 19:27:35 +00:00
LibJS: Use IntrusiveList for keeping track of MarkedValueLists
This commit is contained in:
parent
746b310061
commit
3fe1be20b7
3 changed files with 13 additions and 7 deletions
|
@ -94,8 +94,8 @@ void Heap::gather_roots(HashTable<Cell*>& roots)
|
|||
for (auto& handle : m_handles)
|
||||
roots.set(handle.cell());
|
||||
|
||||
for (auto* list : m_marked_value_lists) {
|
||||
for (auto& value : list->values()) {
|
||||
for (auto& list : m_marked_value_lists) {
|
||||
for (auto& value : list.values()) {
|
||||
if (value.is_cell())
|
||||
roots.set(&value.as_cell());
|
||||
}
|
||||
|
@ -270,14 +270,14 @@ void Heap::did_destroy_handle(Badge<HandleImpl>, HandleImpl& impl)
|
|||
|
||||
void Heap::did_create_marked_value_list(Badge<MarkedValueList>, MarkedValueList& list)
|
||||
{
|
||||
VERIFY(!m_marked_value_lists.contains(&list));
|
||||
m_marked_value_lists.set(&list);
|
||||
VERIFY(!m_marked_value_lists.contains(list));
|
||||
m_marked_value_lists.append(list);
|
||||
}
|
||||
|
||||
void Heap::did_destroy_marked_value_list(Badge<MarkedValueList>, MarkedValueList& list)
|
||||
{
|
||||
VERIFY(m_marked_value_lists.contains(&list));
|
||||
m_marked_value_lists.remove(&list);
|
||||
VERIFY(m_marked_value_lists.contains(list));
|
||||
m_marked_value_lists.remove(list);
|
||||
}
|
||||
|
||||
void Heap::did_create_weak_container(Badge<WeakContainer>, WeakContainer& set)
|
||||
|
|
|
@ -109,7 +109,7 @@ private:
|
|||
|
||||
HandleImpl::List m_handles;
|
||||
|
||||
HashTable<MarkedValueList*> m_marked_value_lists;
|
||||
MarkedValueList::List m_marked_value_lists;
|
||||
|
||||
HashTable<WeakContainer*> m_weak_containers;
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <AK/IntrusiveList.h>
|
||||
#include <AK/Noncopyable.h>
|
||||
#include <AK/Vector.h>
|
||||
#include <LibJS/Forward.h>
|
||||
|
@ -34,6 +35,11 @@ public:
|
|||
|
||||
private:
|
||||
Heap& m_heap;
|
||||
|
||||
IntrusiveListNode<MarkedValueList> m_list_node;
|
||||
|
||||
public:
|
||||
using List = IntrusiveList<MarkedValueList, RawPtr<MarkedValueList>, &MarkedValueList::m_list_node>;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue