v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
visit-object.cc
Go to the documentation of this file.
1// Copyright 2024 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
6
13
14namespace v8::internal {
15
17 : public HeapVisitor<ObjectVisitorForwarder> {
18 public:
19 explicit ObjectVisitorForwarder(Isolate* isolate, ObjectVisitor* visitor)
20 : HeapVisitor(isolate), visitor_(visitor) {}
22 : HeapVisitor(isolate), visitor_(visitor) {}
23
24 static constexpr bool ShouldVisitMapPointer() { return false; }
25 static constexpr bool ShouldUseUncheckedCast() { return true; }
26 static constexpr bool ShouldVisitFullJSObject() { return true; }
27
32
37
42
47
48 void VisitPointer(Tagged<HeapObject> host, ObjectSlot slot) override {
49 visitor_->VisitPointers(host, slot, slot + 1);
50 }
51
53 visitor_->VisitPointers(host, slot, slot + 1);
54 }
55
57 ObjectSlot slot) override {
59 }
60
62 RelocInfo* rinfo) override {
63 visitor_->VisitCodeTarget(host, rinfo);
64 }
65
67 RelocInfo* rinfo) override {
68 visitor_->VisitEmbeddedPointer(host, rinfo);
69 }
70
72 RelocInfo* rinfo) override {
73 visitor_->VisitExternalReference(host, rinfo);
74 }
75
77 RelocInfo* rinfo) override {
78 visitor_->VisitInternalReference(host, rinfo);
79 }
80
82 RelocInfo* rinfo) override {
83 visitor_->VisitOffHeapTarget(host, rinfo);
84 }
85
87 ExternalPointerSlot slot) override {
88 visitor_->VisitExternalPointer(host, slot);
89 }
90
92 CppHeapPointerSlot slot) override {
93 visitor_->VisitCppHeapPointer(host, slot);
94 }
95
97 ObjectSlot value) override {
98 visitor_->VisitEphemeron(host, index, key, value);
99 }
100
102 IndirectPointerMode mode) override {
103 visitor_->VisitIndirectPointer(host, slot, mode);
104 }
105
110
115
120
125
127
128 private:
130};
131
133 ObjectVisitor* visitor) {
134 visitor->VisitMapPointer(object);
135 ObjectVisitorForwarder forward_visitor(isolate, visitor);
136 forward_visitor.Visit(object);
137}
138
140 ObjectVisitor* visitor) {
141 visitor->VisitMapPointer(object);
142 ObjectVisitorForwarder forward_visitor(isolate, visitor);
143 forward_visitor.Visit(object);
144}
145
147 ObjectVisitor* visitor) {
148 ObjectVisitorForwarder forward_visitor(isolate, visitor);
149 forward_visitor.Visit(object);
150}
151
153 Tagged<HeapObject> object, ObjectVisitor* visitor) {
154 ObjectVisitorForwarder forward_visitor(isolate, visitor);
155 forward_visitor.Visit(map, object);
156}
157
159 ObjectVisitor* visitor) {
160 ObjectVisitorForwarder forward_visitor(isolate, visitor);
161 forward_visitor.Visit(object);
162}
163
164} // namespace v8::internal
V8_INLINE size_t Visit(Tagged< HeapObject > object)
void VisitIndirectPointer(Tagged< HeapObject > host, IndirectPointerSlot slot, IndirectPointerMode mode) override
void VisitExternalReference(Tagged< InstructionStream > host, RelocInfo *rinfo) override
void VisitJSDispatchTableEntry(Tagged< HeapObject > host, JSDispatchHandle handle) override
static constexpr bool ShouldVisitMapPointer()
void VisitTrustedPointerTableEntry(Tagged< HeapObject > host, IndirectPointerSlot slot) override
void VisitEmbeddedPointer(Tagged< InstructionStream > host, RelocInfo *rinfo) override
void VisitCustomWeakPointer(Tagged< HeapObject > host, ObjectSlot slot) override
void VisitCppHeapPointer(Tagged< HeapObject > host, CppHeapPointerSlot slot) override
void VisitOffHeapTarget(Tagged< InstructionStream > host, RelocInfo *rinfo) override
void VisitMapPointer(Tagged< HeapObject > host) override
static constexpr bool ShouldVisitFullJSObject()
void VisitEphemeron(Tagged< HeapObject > host, int index, ObjectSlot key, ObjectSlot value) override
void VisitPointer(Tagged< HeapObject > host, MaybeObjectSlot slot) override
ObjectVisitorForwarder(Isolate *isolate, ObjectVisitor *visitor)
void VisitPointers(Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end) override
void VisitPointers(Tagged< HeapObject > host, MaybeObjectSlot start, MaybeObjectSlot end) override
void VisitInternalReference(Tagged< InstructionStream > host, RelocInfo *rinfo) override
void VisitCodeTarget(Tagged< InstructionStream > host, RelocInfo *rinfo) override
static constexpr bool ShouldUseUncheckedCast()
void VisitPointer(Tagged< HeapObject > host, ObjectSlot slot) override
void VisitExternalPointer(Tagged< HeapObject > host, ExternalPointerSlot slot) override
ObjectVisitorForwarder(LocalIsolate *isolate, ObjectVisitor *visitor)
void VisitInstructionStreamPointer(Tagged< Code > host, InstructionStreamSlot slot) override
void VisitCustomWeakPointers(Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end) override
void VisitProtectedPointer(Tagged< TrustedObject > host, ProtectedMaybeObjectSlot slot) override
void VisitProtectedPointer(Tagged< TrustedObject > host, ProtectedPointerSlot slot) override
virtual void VisitProtectedPointer(Tagged< TrustedObject > host, ProtectedPointerSlot slot)
Definition visitors.h:200
virtual void VisitEmbeddedPointer(Tagged< InstructionStream > host, RelocInfo *rinfo)
Definition visitors.h:178
virtual void VisitExternalReference(Tagged< InstructionStream > host, RelocInfo *rinfo)
Definition visitors.h:180
virtual void VisitCodeTarget(Tagged< InstructionStream > host, RelocInfo *rinfo)
Definition visitors.h:176
virtual void VisitTrustedPointerTableEntry(Tagged< HeapObject > host, IndirectPointerSlot slot)
Definition visitors.h:205
virtual void VisitOffHeapTarget(Tagged< InstructionStream > host, RelocInfo *rinfo)
Definition visitors.h:185
virtual void VisitIndirectPointer(Tagged< HeapObject > host, IndirectPointerSlot slot, IndirectPointerMode mode)
Definition visitors.h:196
virtual void VisitExternalPointer(Tagged< HeapObject > host, ExternalPointerSlot slot)
Definition visitors.h:188
virtual void VisitMapPointer(Tagged< HeapObject > host)
Definition visitors.h:211
virtual void VisitCppHeapPointer(Tagged< HeapObject > host, CppHeapPointerSlot slot)
Definition visitors.h:193
virtual void VisitCustomWeakPointers(Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end)
Definition visitors.h:151
virtual void VisitPointers(Tagged< HeapObject > host, ObjectSlot start, ObjectSlot end)=0
virtual void VisitJSDispatchTableEntry(Tagged< HeapObject > host, JSDispatchHandle handle)
Definition visitors.h:208
virtual void VisitEphemeron(Tagged< HeapObject > host, int index, ObjectSlot key, ObjectSlot value)
Definition visitors.h:167
virtual void VisitCustomWeakPointer(Tagged< HeapObject > host, ObjectSlot p)
Definition visitors.h:163
virtual void VisitInternalReference(Tagged< InstructionStream > host, RelocInfo *rinfo)
Definition visitors.h:182
virtual void VisitInstructionStreamPointer(Tagged< Code > host, InstructionStreamSlot slot)=0
int start
int end
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
Definition handles-inl.h:72
void VisitObjectBody(Isolate *isolate, Tagged< HeapObject > object, ObjectVisitor *visitor)
void VisitObject(Isolate *isolate, Tagged< HeapObject > object, ObjectVisitor *visitor)