Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: tools/clang/blink_gc_plugin/tests/legacy_naming/trace_after_dispatch_impl.h

Issue 2655933002: blink_gc_plugin: retire overloaded traceImpl detection and handling. (Closed)
Patch Set: Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef TRACE_AFTER_DISPATCH_IMPL_H_ 5 #ifndef TRACE_AFTER_DISPATCH_IMPL_H_
6 #define TRACE_AFTER_DISPATCH_IMPL_H_ 6 #define TRACE_AFTER_DISPATCH_IMPL_H_
7 7
8 #include "heap/stubs.h" 8 #include "heap/stubs.h"
9 9
10 namespace blink { 10 namespace blink {
11 11
12 class X : public GarbageCollected<X> { 12 class X : public GarbageCollected<X> {
13 public: 13 public:
14 void trace(Visitor*) {} 14 void trace(Visitor*) {}
15 }; 15 };
16 16
17 enum ClassTag { 17 enum ClassTag {
18 BASE, DERIVED 18 BASE, DERIVED
19 }; 19 };
20 20
21 class TraceAfterDispatchInlinedBase 21 class TraceAfterDispatchInlinedBase
22 : public GarbageCollected<TraceAfterDispatchInlinedBase> { 22 : public GarbageCollected<TraceAfterDispatchInlinedBase> {
23 public: 23 public:
24 explicit TraceAfterDispatchInlinedBase(ClassTag tag) : tag_(tag) {} 24 explicit TraceAfterDispatchInlinedBase(ClassTag tag) : tag_(tag) {}
25 25
26 void trace(Visitor* visitor) { traceImpl(visitor); } 26 void trace(Visitor*);
27 void trace(InlinedGlobalMarkingVisitor visitor) { traceImpl(visitor); } 27 void traceAfterDispatch(Visitor* visitor) { visitor->trace(x_base_); }
28
29 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); }
30 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor) {
31 traceAfterDispatchImpl(visitor);
32 }
33 28
34 private: 29 private:
35 template <typename VisitorDispatcher>
36 void traceImpl(VisitorDispatcher visitor);
37
38 template <typename VisitorDispatcher>
39 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
40 visitor->trace(x_base_);
41 }
42
43 ClassTag tag_; 30 ClassTag tag_;
44 Member<X> x_base_; 31 Member<X> x_base_;
45 }; 32 };
46 33
47 class TraceAfterDispatchInlinedDerived : public TraceAfterDispatchInlinedBase { 34 class TraceAfterDispatchInlinedDerived : public TraceAfterDispatchInlinedBase {
48 public: 35 public:
49 TraceAfterDispatchInlinedDerived() : TraceAfterDispatchInlinedBase(DERIVED) {} 36 TraceAfterDispatchInlinedDerived() : TraceAfterDispatchInlinedBase(DERIVED) {}
50 37
51 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); } 38 void traceAfterDispatch(Visitor* visitor) {
52 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor) {
53 traceAfterDispatchImpl(visitor);
54 }
55
56 private:
57 template <typename VisitorDispatcher>
58 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
59 visitor->trace(x_derived_); 39 visitor->trace(x_derived_);
60 TraceAfterDispatchInlinedBase::traceAfterDispatch(visitor); 40 TraceAfterDispatchInlinedBase::traceAfterDispatch(visitor);
61 } 41 }
62 42
43 private:
63 Member<X> x_derived_; 44 Member<X> x_derived_;
64 }; 45 };
65 46
66 class TraceAfterDispatchExternBase 47 class TraceAfterDispatchExternBase
67 : public GarbageCollected<TraceAfterDispatchExternBase> { 48 : public GarbageCollected<TraceAfterDispatchExternBase> {
68 public: 49 public:
69 explicit TraceAfterDispatchExternBase(ClassTag tag) : tag_(tag) {} 50 explicit TraceAfterDispatchExternBase(ClassTag tag) : tag_(tag) {}
70 51
71 void trace(Visitor* visitor); 52 void trace(Visitor* visitor);
72 void trace(InlinedGlobalMarkingVisitor visitor);
73
74 void traceAfterDispatch(Visitor* visitor); 53 void traceAfterDispatch(Visitor* visitor);
75 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor);
76 54
77 private: 55 private:
78 template <typename VisitorDispatcher>
79 void traceImpl(VisitorDispatcher visitor);
80
81 template <typename VisitorDispatcher>
82 void traceAfterDispatchImpl(VisitorDispatcher visitor);
83
84 ClassTag tag_; 56 ClassTag tag_;
85 Member<X> x_base_; 57 Member<X> x_base_;
86 }; 58 };
87 59
88 class TraceAfterDispatchExternDerived : public TraceAfterDispatchExternBase { 60 class TraceAfterDispatchExternDerived : public TraceAfterDispatchExternBase {
89 public: 61 public:
90 TraceAfterDispatchExternDerived() : TraceAfterDispatchExternBase(DERIVED) {} 62 TraceAfterDispatchExternDerived() : TraceAfterDispatchExternBase(DERIVED) {}
91 63
92 void traceAfterDispatch(Visitor* visitor); 64 void traceAfterDispatch(Visitor* visitor);
93 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor);
94 65
95 private: 66 private:
96 template <typename VisitorDispatcher>
97 void traceAfterDispatchImpl(VisitorDispatcher visitor);
98
99 Member<X> x_derived_; 67 Member<X> x_derived_;
100 }; 68 };
101 69
102 } 70 }
103 71
104 #endif // TRACE_AFTER_DISPATCH_IMPL_H_ 72 #endif // TRACE_AFTER_DISPATCH_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698