v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
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_VISITOR_H_
6#define V8_HEAP_CPPGC_VISITOR_H_
7
10
11namespace cppgc {
12namespace internal {
13
14class HeapBase;
15class HeapObjectHeader;
16class PageBackend;
17
18class VisitorFactory final {
19 public:
20 static constexpr Visitor::Key CreateKey() { return {}; }
21};
22
23// Base visitor that is allowed to create a public cppgc::Visitor object and
24// use its internals.
26 public:
27 template <typename T>
28 static void TraceRawForTesting(cppgc::Visitor* visitor, const T* t) {
29 visitor->TraceImpl(t);
30 }
31
33 ~VisitorBase() override = default;
34
35 VisitorBase(const VisitorBase&) = delete;
37};
38
40 public:
42 ~RootVisitorBase() override = default;
43
46};
47
48// Regular visitor that additionally allows for conservative tracing.
50 public:
52 virtual ~ConservativeTracingVisitor() = default;
53
56 delete;
57
58 virtual void TraceConservativelyIfNeeded(const void*);
59 void TraceConservativelyIfNeeded(HeapObjectHeader&);
60 void TraceConservatively(const HeapObjectHeader&);
61
62 protected:
64 const HeapObjectHeader&);
65 virtual void VisitFullyConstructedConservatively(HeapObjectHeader&);
68
69 void TryTracePointerConservatively(ConstAddress address);
70
74};
75
76} // namespace internal
77} // namespace cppgc
78
79#endif // V8_HEAP_CPPGC_VISITOR_H_
void TraceImpl(const T *t)
Definition visitor.h:434
void(ConservativeTracingVisitor *, const HeapObjectHeader &) TraceConservativelyCallback
Definition visitor.h:63
ConservativeTracingVisitor(const ConservativeTracingVisitor &)=delete
virtual void VisitInConstructionConservatively(HeapObjectHeader &, TraceConservativelyCallback)
Definition visitor.h:66
ConservativeTracingVisitor & operator=(const ConservativeTracingVisitor &)=delete
~RootVisitorBase() override=default
RootVisitorBase(const RootVisitorBase &)=delete
RootVisitorBase & operator=(const RootVisitorBase &)=delete
static void TraceRawForTesting(cppgc::Visitor *visitor, const T *t)
Definition visitor.h:28
~VisitorBase() override=default
VisitorBase(const VisitorBase &)=delete
VisitorBase & operator=(const VisitorBase &)=delete
static constexpr Visitor::Key CreateKey()
Definition visitor.h:20
const uint8_t * ConstAddress
Definition globals.h:18
#define V8_EXPORT_PRIVATE
Definition macros.h:460