// 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_V8_CPPGC_H_ #define INCLUDE_V8_CPPGC_H_ #include <cstdint> #include <memory> #include <vector> #include "cppgc/common.h" #include "cppgc/custom-space.h" #include "cppgc/heap-statistics.h" #include "cppgc/visitor.h" #include "v8-internal.h" // NOLINT(build/include_directory) #include "v8-platform.h" // NOLINT(build/include_directory) #include "v8-traced-handle.h" // NOLINT(build/include_directory) namespace cppgc { class AllocationHandle; class HeapHandle; } // namespace cppgc namespace v8 { class Object; namespace internal { class CppHeap; } // namespace internal class CustomSpaceStatisticsReceiver; struct V8_EXPORT CppHeapCreateParams { … }; /** * A heap for allocating managed C++ objects. * * Similar to v8::Isolate, the heap may only be accessed from one thread at a * time. The heap may be used from different threads using the * v8::Locker/v8::Unlocker APIs which is different from generic Oilpan. */ class V8_EXPORT CppHeap { … }; class JSVisitor : public cppgc::Visitor { … }; /** * Provided as input to `CppHeap::CollectCustomSpaceStatisticsAtLastGC()`. * * Its method is invoked with the results of the statistic collection. */ class CustomSpaceStatisticsReceiver { … }; } // namespace v8 namespace cppgc { TraceTrait<v8::TracedReference<T>>; } // namespace cppgc #endif // INCLUDE_V8_CPPGC_H_