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

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

Issue 960873002: Update from https://crrev.com/318214 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 5 years, 10 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef TRACE_AFTER_DISPATCH_IMPL_H_
6 #define TRACE_AFTER_DISPATCH_IMPL_H_
7
8 #include "heap/stubs.h"
9
10 namespace blink {
11
12 class X : public GarbageCollected<X> {
13 public:
14 void trace(Visitor*) {}
15 };
16
17 enum ClassTag {
18 BASE, DERIVED
19 };
20
21 class TraceAfterDispatchInlinedBase
22 : public GarbageCollected<TraceAfterDispatchInlinedBase> {
23 public:
24 explicit TraceAfterDispatchInlinedBase(ClassTag tag) : tag_(tag) {}
25
26 void trace(Visitor* visitor);
27
28 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); }
29
30 private:
31 template <typename VisitorDispatcher>
32 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
33 visitor->trace(x_base_);
34 }
35
36 ClassTag tag_;
37 Member<X> x_base_;
38 };
39
40 class TraceAfterDispatchInlinedDerived : public TraceAfterDispatchInlinedBase {
41 public:
42 TraceAfterDispatchInlinedDerived() : TraceAfterDispatchInlinedBase(DERIVED) {}
43
44 void traceAfterDispatch(Visitor* visitor) { traceAfterDispatchImpl(visitor); }
45
46 private:
47 template <typename VisitorDispatcher>
48 void traceAfterDispatchImpl(VisitorDispatcher visitor) {
49 visitor->trace(x_derived_);
50 TraceAfterDispatchInlinedBase::traceAfterDispatch(visitor);
51 }
52
53 Member<X> x_derived_;
54 };
55
56 class TraceAfterDispatchExternBase
57 : public GarbageCollected<TraceAfterDispatchExternBase> {
58 public:
59 explicit TraceAfterDispatchExternBase(ClassTag tag) : tag_(tag) {}
60
61 void trace(Visitor* visitor);
62
63 void traceAfterDispatch(Visitor* visitor);
64
65 private:
66 template <typename VisitorDispatcher>
67 void traceAfterDispatchImpl(VisitorDispatcher visitor);
68
69 ClassTag tag_;
70 Member<X> x_base_;
71 };
72
73 class TraceAfterDispatchExternDerived : public TraceAfterDispatchExternBase {
74 public:
75 TraceAfterDispatchExternDerived() : TraceAfterDispatchExternBase(DERIVED) {}
76
77 void traceAfterDispatch(Visitor* visitor);
78
79 private:
80 template <typename VisitorDispatcher>
81 void traceAfterDispatchImpl(VisitorDispatcher visitor);
82
83 Member<X> x_derived_;
84 };
85
86 }
87
88 #endif // TRACE_AFTER_DISPATCH_IMPL_H_
OLDNEW
« no previous file with comments | « tools/clang/blink_gc_plugin/tests/heap/stubs.h ('k') | tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698