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

Side by Side Diff: tools/clang/blink_gc_plugin/tests/legacy_naming/trace_after_dispatch_impl_error.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_ERROR_H_ 5 #ifndef TRACE_AFTER_DISPATCH_IMPL_ERROR_H_
6 #define TRACE_AFTER_DISPATCH_IMPL_ERROR_H_ 6 #define TRACE_AFTER_DISPATCH_IMPL_ERROR_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); }
28 27
29 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); } 28 // No trace call; should get a warning.
30 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor) { 29 void traceAfterDispatch(Visitor*) {}
31 traceAfterDispatchImpl(visitor);
32 }
33 30
34 private: 31 private:
35 template <typename VisitorDispatcher>
36 void traceImpl(VisitorDispatcher visitor);
37
38 template <typename VisitorDispatcher>
39 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
40 // No trace call; should get a warning.
41 }
42
43 ClassTag tag_; 32 ClassTag tag_;
44 Member<X> x_base_; 33 Member<X> x_base_;
45 }; 34 };
46 35
47 class TraceAfterDispatchInlinedDerived : public TraceAfterDispatchInlinedBase { 36 class TraceAfterDispatchInlinedDerived : public TraceAfterDispatchInlinedBase {
48 public: 37 public:
49 TraceAfterDispatchInlinedDerived() : TraceAfterDispatchInlinedBase(DERIVED) {} 38 TraceAfterDispatchInlinedDerived() : TraceAfterDispatchInlinedBase(DERIVED) {}
50 39
51 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); } 40 void traceAfterDispatch(Visitor* visitor) {
52 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor) { 41 // No trace call (for member and base class).
53 traceAfterDispatchImpl(visitor);
54 } 42 }
55 43
56 private: 44 private:
57 template <typename VisitorDispatcher>
58 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
59 // No trace call (for member and base class).
60 }
61
62 Member<X> x_derived_; 45 Member<X> x_derived_;
63 }; 46 };
64 47
65 class TraceAfterDispatchExternBase 48 class TraceAfterDispatchExternBase
66 : public GarbageCollected<TraceAfterDispatchExternBase> { 49 : public GarbageCollected<TraceAfterDispatchExternBase> {
67 public: 50 public:
68 explicit TraceAfterDispatchExternBase(ClassTag tag) : tag_(tag) {} 51 explicit TraceAfterDispatchExternBase(ClassTag tag) : tag_(tag) {}
69 52
70 void trace(Visitor* visitor); 53 void trace(Visitor* visitor);
71 void trace(InlinedGlobalMarkingVisitor visitor);
72 54
73 void traceAfterDispatch(Visitor* visitor); 55 void traceAfterDispatch(Visitor* visitor);
74 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor);
75 56
76 private: 57 private:
77 template <typename VisitorDispatcher>
78 void traceImpl(VisitorDispatcher visitor);
79
80 template <typename VisitorDispatcher>
81 void traceAfterDispatchImpl(VisitorDispatcher visitor);
82
83 ClassTag tag_; 58 ClassTag tag_;
84 Member<X> x_base_; 59 Member<X> x_base_;
85 }; 60 };
86 61
87 class TraceAfterDispatchExternDerived : public TraceAfterDispatchExternBase { 62 class TraceAfterDispatchExternDerived : public TraceAfterDispatchExternBase {
88 public: 63 public:
89 TraceAfterDispatchExternDerived() : TraceAfterDispatchExternBase(DERIVED) {} 64 TraceAfterDispatchExternDerived() : TraceAfterDispatchExternBase(DERIVED) {}
90 65
91 void traceAfterDispatch(Visitor* visitor); 66 void traceAfterDispatch(Visitor* visitor);
92 void traceAfterDispatch(InlinedGlobalMarkingVisitor visitor);
93 67
94 private: 68 private:
95 template <typename VisitorDispatcher>
96 void traceAfterDispatchImpl(VisitorDispatcher visitor);
97
98 Member<X> x_derived_; 69 Member<X> x_derived_;
99 }; 70 };
100 71
101 } 72 }
102 73
103 #endif // TRACE_AFTER_DISPATCH_IMPL_ERROR_H_ 74 #endif // TRACE_AFTER_DISPATCH_IMPL_ERROR_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698