| 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) {
|
|
|