// 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 INCLUDE_CPPGC_HEAP_CONSISTENCY_H_ #define INCLUDE_CPPGC_HEAP_CONSISTENCY_H_ #include <cstddef> #include "cppgc/internal/write-barrier.h" #include "cppgc/macros.h" #include "cppgc/member.h" #include "cppgc/trace-trait.h" #include "v8config.h" // NOLINT(build/include_directory) namespace cppgc { class HeapHandle; namespace subtle { /** * **DO NOT USE: Use the appropriate managed types.** * * Consistency helpers that aid in maintaining a consistent internal state of * the garbage collector. */ class HeapConsistency final { … }; /** * Disallows garbage collection finalizations. Any garbage collection triggers * result in a crash when in this scope. * * Note that the garbage collector already covers paths that can lead to garbage * collections, so user code does not require checking * `IsGarbageCollectionAllowed()` before allocations. */ class V8_EXPORT V8_NODISCARD DisallowGarbageCollectionScope final { … }; /** * Avoids invoking garbage collection finalizations. Already running garbage * collection phase are unaffected by this scope. * * Should only be used temporarily as the scope has an impact on memory usage * and follow up garbage collections. */ class V8_EXPORT V8_NODISCARD NoGarbageCollectionScope final { … }; } // namespace subtle } // namespace cppgc #endif // INCLUDE_CPPGC_HEAP_CONSISTENCY_H_