diff options
Diffstat (limited to 'deps/v8/include/cppgc/heap.h')
-rw-r--r-- | deps/v8/include/cppgc/heap.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/deps/v8/include/cppgc/heap.h b/deps/v8/include/cppgc/heap.h index a0568d534fb..90046c35055 100644 --- a/deps/v8/include/cppgc/heap.h +++ b/deps/v8/include/cppgc/heap.h @@ -6,8 +6,11 @@ #define INCLUDE_CPPGC_HEAP_H_ #include <memory> +#include <vector> -#include "include/v8config.h" +#include "cppgc/common.h" +#include "cppgc/custom-space.h" +#include "v8config.h" // NOLINT(build/include_directory) namespace cppgc { namespace internal { @@ -16,10 +19,39 @@ class Heap; class V8_EXPORT Heap { public: - static std::unique_ptr<Heap> Create(); + /** + * Specifies the stack state the embedder is in. + */ + using StackState = EmbedderStackState; + + struct HeapOptions { + static HeapOptions Default() { return {}; } + + /** + * Custom spaces added to heap are required to have indices forming a + * numbered sequence starting at 0, i.e., their kSpaceIndex must correspond + * to the index they reside in the vector. + */ + std::vector<std::unique_ptr<CustomSpaceBase>> custom_spaces; + }; + + static std::unique_ptr<Heap> Create(HeapOptions = HeapOptions::Default()); virtual ~Heap() = default; + /** + * Forces garbage collection. + * + * \param source String specifying the source (or caller) triggering a + * forced garbage collection. + * \param reason String specifying the reason for the forced garbage + * collection. + * \param stack_state The embedder stack state, see StackState. + */ + void ForceGarbageCollectionSlow( + const char* source, const char* reason, + StackState stack_state = StackState::kMayContainHeapPointers); + private: Heap() = default; |