5#ifndef V8_HEAP_WEAK_OBJECT_WORKLISTS_H_
6#define V8_HEAP_WEAK_OBJECT_WORKLISTS_H_
25template <
typename TSlotType>
42class EphemeronHashTable;
53#define WEAK_OBJECT_WORKLISTS_GENERIC(F) \
54 F(Tagged<TransitionArray>, transition_arrays, TransitionArrays) \
57 F(Tagged<EphemeronHashTable>, ephemeron_hash_tables, EphemeronHashTables) \
64 F(Ephemeron, current_ephemerons, CurrentEphemerons) \
66 F(Ephemeron, next_ephemerons, NextEphemerons) \
69 F(HeapObjectAndSlot, weak_references_trivial, WeakReferencesTrivial) \
70 F(HeapObjectAndSlot, weak_references_non_trivial, WeakReferencesNonTrivial) \
71 F(HeapObjectAndSlot, weak_references_non_trivial_unmarked, \
72 WeakReferencesNonTrivialUnmarked) \
73 F(TrustedObjectAndSlot, weak_references_trusted, WeakReferencesTrusted) \
74 F(HeapObjectAndCode, weak_objects_in_code, WeakObjectsInCode) \
75 F(Tagged<JSWeakRef>, js_weak_refs, JSWeakRefs) \
76 F(Tagged<WeakCell>, weak_cells, WeakCells) \
77 F(Tagged<SharedFunctionInfo>, code_flushing_candidates, \
78 CodeFlushingCandidates) \
79 F(Tagged<JSFunction>, flushed_js_functions, FlushedJSFunctions)
81#ifdef V8_ENABLE_LEAPTIERING
84#define WEAK_OBJECT_WORKLISTS(F) WEAK_OBJECT_WORKLISTS_GENERIC(F)
86#define WEAK_OBJECT_WORKLISTS(F) \
87 WEAK_OBJECT_WORKLISTS_GENERIC(F) \
88 F(Tagged<JSFunction>, baseline_flushing_candidates, \
89 BaselineFlushingCandidates)
97 template <
typename Type>
100 class Local final :
public UnusedBase {
102 explicit Local(WeakObjects* weak_objects);
106#define DECLARE_WORKLIST(Type, name, _) \
107 WeakObjectWorklist<Type>::Local name##_local;
109#undef DECLARE_WORKLIST
112#define DECLARE_WORKLIST(Type, name, _) WeakObjectWorklist<Type> name;
114#undef DECLARE_WORKLIST
Local(WeakObjects *weak_objects)
V8_EXPORT_PRIVATE void Publish()
#define V8_EXPORT_PRIVATE
Tagged< HeapObject > value
Tagged< HeapObject > heap_object
Tagged< HeapObject > heap_object
#define WEAK_OBJECT_WORKLISTS(F)
#define DECLARE_WORKLIST(Type, name, _)