blob: 46553f3d9d08fc6a9d18372a3e052bf5e9c8bf98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "trace_after_dispatch_impl_error.h"
namespace blink {
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.
if (tag_ == DERIVED) {
// Missing dispatch call:
// static_cast<TraceAfterDispatchInlinedDerived*>(this)->TraceAfterDispatch(
// visitor);
} else {
TraceAfterDispatch(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) {
// Missing dispatch call:
// static_cast<TraceAfterDispatchExternDerived*>(this)->TraceAfterDispatch(
// visitor);
} else {
TraceAfterDispatch(visitor);
}
}
void TraceAfterDispatchExternBase::TraceAfterDispatch(Visitor* visitor) {
TraceAfterDispatchImpl(visitor);
}
void TraceAfterDispatchExternBase::TraceAfterDispatch(
InlinedGlobalMarkingVisitor visitor) {
TraceAfterDispatchImpl(visitor);
}
template <typename VisitorDispatcher>
inline void TraceAfterDispatchExternBase::TraceAfterDispatchImpl(
VisitorDispatcher visitor) {
// No Trace call.
}
void TraceAfterDispatchExternDerived::TraceAfterDispatch(Visitor* visitor) {
TraceAfterDispatchImpl(visitor);
}
void TraceAfterDispatchExternDerived::TraceAfterDispatch(
InlinedGlobalMarkingVisitor visitor) {
TraceAfterDispatchImpl(visitor);
}
template <typename VisitorDispatcher>
inline void TraceAfterDispatchExternDerived::TraceAfterDispatchImpl(
VisitorDispatcher visitor) {
// Ditto.
}
}
|