1// Copyright 2014 The Chromium 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#include "Config.h"
6#include "Edge.h"
7#include "RecordInfo.h"
8
9TracingStatus Value::NeedsTracing(NeedsTracingOption option) {
10  return value_->NeedsTracing(option);
11}
12
13bool Value::NeedsFinalization() { return value_->NeedsFinalization(); }
14bool Collection::NeedsFinalization() { return info_->NeedsFinalization(); }
15
16void RecursiveEdgeVisitor::AtValue(Value*) {}
17void RecursiveEdgeVisitor::AtRawPtr(RawPtr*) {}
18void RecursiveEdgeVisitor::AtRefPtr(RefPtr*) {}
19void RecursiveEdgeVisitor::AtOwnPtr(OwnPtr*) {}
20void RecursiveEdgeVisitor::AtUniquePtr(UniquePtr*) {}
21void RecursiveEdgeVisitor::AtMember(Member*) {}
22void RecursiveEdgeVisitor::AtWeakMember(WeakMember*) {}
23void RecursiveEdgeVisitor::AtPersistent(Persistent*) {}
24void RecursiveEdgeVisitor::AtCrossThreadPersistent(CrossThreadPersistent*) {}
25void RecursiveEdgeVisitor::AtCollection(Collection*) {}
26void RecursiveEdgeVisitor::AtIterator(Iterator*) {}
27
28void RecursiveEdgeVisitor::VisitValue(Value* e) {
29  AtValue(e);
30}
31
32void RecursiveEdgeVisitor::VisitRawPtr(RawPtr* e) {
33  AtRawPtr(e);
34  Enter(e);
35  e->ptr()->Accept(this);
36  Leave();
37}
38
39void RecursiveEdgeVisitor::VisitRefPtr(RefPtr* e) {
40  AtRefPtr(e);
41  Enter(e);
42  e->ptr()->Accept(this);
43  Leave();
44}
45void RecursiveEdgeVisitor::VisitOwnPtr(OwnPtr* e) {
46  AtOwnPtr(e);
47  Enter(e);
48  e->ptr()->Accept(this);
49  Leave();
50}
51
52void RecursiveEdgeVisitor::VisitUniquePtr(UniquePtr* e) {
53  AtUniquePtr(e);
54  Enter(e);
55  e->ptr()->Accept(this);
56  Leave();
57}
58
59void RecursiveEdgeVisitor::VisitMember(Member* e) {
60  AtMember(e);
61  Enter(e);
62  e->ptr()->Accept(this);
63  Leave();
64}
65
66void RecursiveEdgeVisitor::VisitWeakMember(WeakMember* e) {
67  AtWeakMember(e);
68  Enter(e);
69  e->ptr()->Accept(this);
70  Leave();
71}
72
73void RecursiveEdgeVisitor::VisitPersistent(Persistent* e) {
74  AtPersistent(e);
75  Enter(e);
76  e->ptr()->Accept(this);
77  Leave();
78}
79
80void RecursiveEdgeVisitor::VisitCrossThreadPersistent(
81    CrossThreadPersistent* e) {
82  AtCrossThreadPersistent(e);
83  Enter(e);
84  e->ptr()->Accept(this);
85  Leave();
86}
87
88void RecursiveEdgeVisitor::VisitCollection(Collection* e) {
89  AtCollection(e);
90  Enter(e);
91  e->AcceptMembers(this);
92  Leave();
93}
94
95void RecursiveEdgeVisitor::VisitIterator(Iterator* e) {
96  AtIterator(e);
97}
98