// Copyright 2020 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef V8_HEAP_WEAK_OBJECT_WORKLISTS_H_ #define V8_HEAP_WEAK_OBJECT_WORKLISTS_H_ #include "src/common/globals.h" #include "src/heap/base/worklist.h" #include "src/objects/heap-object.h" #include "src/objects/js-weak-refs.h" namespace v8 { namespace internal { struct Ephemeron { … }; namespace detail { // SlotType will be HeapObjectSlot, which is defined in "globals.h" as an // incomplete type. Its definition depends on whether pointer compression // is used. It needs to be defined before this type is used. template <typename SlotType> struct HeapObjectAndSlotPOD { … }; } // namespace detail HeapObjectAndSlot; struct HeapObjectAndCode { … }; class EphemeronHashTable; class JSFunction; class SharedFunctionInfo; class TransitionArray; // Weak objects and weak references discovered during incremental/concurrent // marking. They are processed in ClearNonLiveReferences after marking. // Each entry in this list specifies: // 1) Type of the worklist entry. // 2) Lower-case name of the worklsit. // 3) Capitalized name of the worklist. // // If you add a new entry, then you also need to implement the corresponding // Update*() function in the cc file for updating pointers after Scavenge. #define WEAK_OBJECT_WORKLISTS(F) … class WeakObjects final { … }; } // namespace internal } // namespace v8 #endif // V8_HEAP_WEAK_OBJECT_WORKLISTS_H_