v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
marking-visitor.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_MARKING_VISITOR_H_
6#define V8_HEAP_CPPGC_MARKING_VISITOR_H_
7
9#include "src/base/macros.h"
10#include "src/heap/base/stack.h"
12
13namespace cppgc {
14namespace internal {
15
16class HeapBase;
17class HeapObjectHeader;
18class Marker;
19class BasicMarkingState;
20class MutatorMarkingState;
21class ConcurrentMarkingState;
22
24 public:
26 ~MarkingVisitorBase() override = default;
27
28 protected:
29 void Visit(const void*, TraceDescriptor) final;
30 void VisitMultipleUncompressedMember(const void*, size_t,
32#if defined(CPPGC_POINTER_COMPRESSION)
33 void VisitMultipleCompressedMember(const void*, size_t,
35#endif // defined(CPPGC_POINTER_COMPRESSION)
36 void VisitWeak(const void*, TraceDescriptor, WeakCallback, const void*) final;
37 void VisitEphemeron(const void*, const void*, TraceDescriptor) final;
38 void VisitWeakContainer(const void* object, TraceDescriptor strong_desc,
40 const void* data) final;
41 void RegisterWeakCallback(WeakCallback, const void*) final;
42 void HandleMovableReference(const void**) final;
43
45};
46
52
54 : public MarkingVisitorBase {
55 public:
57 ~ConcurrentMarkingVisitor() override = default;
58
59 protected:
60 bool DeferTraceToMutatorThreadIfConcurrent(const void*, TraceCallback,
61 size_t) final;
62};
63
65 public:
67 ~RootMarkingVisitor() override = default;
68
69 protected:
70 void VisitRoot(const void*, TraceDescriptor, const SourceLocation&) final;
71 void VisitWeakRoot(const void*, TraceDescriptor, WeakCallback, const void*,
72 const SourceLocation&) final;
73
75};
76
91
92} // namespace internal
93} // namespace cppgc
94
95#endif // V8_HEAP_CPPGC_MARKING_VISITOR_H_
void VisitFullyConstructedConservatively(HeapObjectHeader &) final
void VisitInConstructionConservatively(HeapObjectHeader &, TraceConservativelyCallback) final
ConservativeMarkingVisitor(HeapBase &, MutatorMarkingState &, cppgc::Visitor &)
void(ConservativeTracingVisitor *, const HeapObjectHeader &) TraceConservativelyCallback
Definition visitor.h:63
~MarkingVisitorBase() override=default
~RootMarkingVisitor() override=default
MutatorMarkingState & mutator_marking_state_
TNode< Object > callback
void(*)(const LivenessBroker &, const void *) WeakCallback
Definition visitor.h:37
TraceDescriptor(*)(const void *address) TraceDescriptorCallback
Definition trace-trait.h:62
void(*)(Visitor *visitor, const void *object) TraceCallback
Definition trace-trait.h:38
#define V8_EXPORT_PRIVATE
Definition macros.h:460