Index: tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp |
diff --git a/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp b/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp |
index 706624dec837eea18f89a3a7a124c07b003a4bfb..53a68553200345ea29d87536c3dadf22dddb93db 100644 |
--- a/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp |
+++ b/tools/clang/blink_gc_plugin/tests/trace_after_dispatch_impl.cpp |
@@ -6,9 +6,11 @@ |
namespace blink { |
-void TraceAfterDispatchInlinedBase::trace(Visitor* visitor) { |
- // Implement a simple form of manual dispatching, because BlinkGCPlugin gets |
- // angry if dispatching statements are missing. |
+template <typename VisitorDispatcher> |
+inline void TraceAfterDispatchInlinedBase::traceImpl( |
+ VisitorDispatcher visitor) { |
+ // Implement a simple form of manual dispatching, because BlinkGCPlugin |
+ // checks if the tracing is dispatched to all derived classes. |
// |
// This function has to be implemented out-of-line, since we need to know the |
// definition of derived classes here. |
@@ -21,6 +23,15 @@ void TraceAfterDispatchInlinedBase::trace(Visitor* visitor) { |
} |
void TraceAfterDispatchExternBase::trace(Visitor* visitor) { |
+ traceImpl(visitor); |
+} |
+ |
+void TraceAfterDispatchExternBase::trace(InlinedGlobalMarkingVisitor visitor) { |
+ traceImpl(visitor); |
+} |
+ |
+template <typename VisitorDispatcher> |
+inline void TraceAfterDispatchExternBase::traceImpl(VisitorDispatcher visitor) { |
if (tag_ == DERIVED) { |
static_cast<TraceAfterDispatchExternDerived*>(this)->traceAfterDispatch( |
visitor); |
@@ -33,6 +44,11 @@ void TraceAfterDispatchExternBase::traceAfterDispatch(Visitor* visitor) { |
traceAfterDispatchImpl(visitor); |
} |
+void TraceAfterDispatchExternBase::traceAfterDispatch( |
+ InlinedGlobalMarkingVisitor visitor) { |
+ traceAfterDispatchImpl(visitor); |
+} |
+ |
template <typename VisitorDispatcher> |
inline void TraceAfterDispatchExternBase::traceAfterDispatchImpl( |
VisitorDispatcher visitor) { |
@@ -43,6 +59,11 @@ void TraceAfterDispatchExternDerived::traceAfterDispatch(Visitor* visitor) { |
traceAfterDispatchImpl(visitor); |
} |
+void TraceAfterDispatchExternDerived::traceAfterDispatch( |
+ InlinedGlobalMarkingVisitor visitor) { |
+ traceAfterDispatchImpl(visitor); |
+} |
+ |
template <typename VisitorDispatcher> |
inline void TraceAfterDispatchExternDerived::traceAfterDispatchImpl( |
VisitorDispatcher visitor) { |