1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:07:36 +00:00

LibJS: Notify WeakSets when heap cells are sweeped

This is an implementation of the following optional optimization:
https://tc39.es/ecma262/#sec-weakref-execution
This commit is contained in:
Idan Horowitz 2021-06-09 20:10:47 +03:00 committed by Linus Groh
parent fb63aeae4d
commit a00d154522
7 changed files with 62 additions and 3 deletions

View file

@ -70,6 +70,9 @@ public:
void did_create_marked_value_list(Badge<MarkedValueList>, MarkedValueList&);
void did_destroy_marked_value_list(Badge<MarkedValueList>, MarkedValueList&);
void did_create_weak_set(Badge<WeakSet>, WeakSet&);
void did_destroy_weak_set(Badge<WeakSet>, WeakSet&);
void defer_gc(Badge<DeferGC>);
void undefer_gc(Badge<DeferGC>);
@ -106,6 +109,8 @@ private:
HashTable<MarkedValueList*> m_marked_value_lists;
HashTable<WeakSet*> m_weak_sets;
BlockAllocator m_block_allocator;
size_t m_gc_deferrals { 0 };