v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
heap.h
Go to the documentation of this file.
1// Copyright 2020 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_HEAP_CPPGC_HEAP_H_
6#define V8_HEAP_CPPGC_HEAP_H_
7
8#include <optional>
9
10#include "include/cppgc/heap.h"
17
18namespace cppgc {
19namespace internal {
20
21class V8_EXPORT_PRIVATE Heap final : public HeapBase,
22 public cppgc::Heap,
23 public GarbageCollector {
24 public:
25 static Heap* From(cppgc::Heap* heap) { return static_cast<Heap*>(heap); }
26 static const Heap* From(const cppgc::Heap* heap) {
27 return static_cast<const Heap*>(heap);
28 }
29
30 Heap(std::shared_ptr<cppgc::Platform> platform,
32 ~Heap() final;
33
34 HeapBase& AsBase() { return *this; }
35 const HeapBase& AsBase() const { return *this; }
36
37 void CollectGarbage(GCConfig) final;
38 void StartIncrementalGarbageCollection(GCConfig) final;
39 void FinalizeIncrementalGarbageCollectionIfRunning(GCConfig);
40
41 size_t epoch() const final { return epoch_; }
42
43 std::optional<EmbedderStackState> overridden_stack_state() const final {
44 return override_stack_state_;
45 }
47 CHECK(!override_stack_state_);
48 override_stack_state_ = state;
49 }
50 void clear_overridden_stack_state() final { override_stack_state_.reset(); }
51
52#ifdef V8_ENABLE_ALLOCATION_TIMEOUT
53 std::optional<int> UpdateAllocationTimeout() final { return std::nullopt; }
54#endif // V8_ENABLE_ALLOCATION_TIMEOUT
55
56 void EnableGenerationalGC();
57
58 void DisableHeapGrowingForTesting();
59
60 private:
61 void StartGarbageCollection(GCConfig);
62 void FinalizeGarbageCollection(StackState);
63 void FinalizeGarbageCollectionImpl(StackState);
64
65 void FinalizeIncrementalGarbageCollectionIfNeeded(StackState) final;
66
67 void StartIncrementalGarbageCollectionForTesting() final;
68 void FinalizeIncrementalGarbageCollectionForTesting(EmbedderStackState) final;
69
70 GCConfig config_;
71 GCInvoker gc_invoker_;
72 HeapGrowing growing_;
73 bool generational_gc_enabled_ = false;
74
75 size_t epoch_ = 0;
76
77 std::optional<cppgc::EmbedderStackState> override_stack_state_;
78};
79
80} // namespace internal
81} // namespace cppgc
82
83#endif // V8_HEAP_CPPGC_HEAP_H_
static const Heap * From(const cppgc::Heap *heap)
Definition heap.h:26
static Heap * From(cppgc::Heap *heap)
Definition heap.h:25
void clear_overridden_stack_state() final
Definition heap.h:50
size_t epoch() const final
Definition heap.h:41
std::optional< EmbedderStackState > overridden_stack_state() const final
Definition heap.h:43
void set_override_stack_state(EmbedderStackState state) final
Definition heap.h:46
const HeapBase & AsBase() const
Definition heap.h:35
LiftoffAssembler::CacheState state
EmbedderStackState
Definition common.h:15
STL namespace.
#define CHECK(condition)
Definition logging.h:124
#define V8_EXPORT_PRIVATE
Definition macros.h:460