summaryrefslogtreecommitdiff
path: root/chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp')
-rw-r--r--chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp9
1 files changed, 2 insertions, 7 deletions
diff --git a/chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp b/chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp
index c3e277a7ae1..771d3f86acb 100644
--- a/chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp
+++ b/chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp
@@ -181,6 +181,8 @@ void BlinkGCPluginConsumer::CheckClass(RecordInfo* info) {
return;
if (CXXMethodDecl* trace = info->GetTraceMethod()) {
+ if (info->IsStackAllocated())
+ reporter_.TraceMethodForStackAllocatedClass(info, trace);
if (trace->isPure())
reporter_.ClassDeclaresPureVirtualTrace(info, trace);
} else if (info->RequiresTraceMethod()) {
@@ -528,7 +530,6 @@ void BlinkGCPluginConsumer::CheckTraceOrDispatchMethod(
CXXMethodDecl* method) {
Config::TraceMethodType trace_type = Config::GetTraceMethodType(method);
if (trace_type == Config::TRACE_AFTER_DISPATCH_METHOD ||
- trace_type == Config::TRACE_AFTER_DISPATCH_IMPL_METHOD ||
!parent->GetTraceDispatchMethod()) {
CheckTraceMethod(parent, method, trace_type);
}
@@ -549,12 +550,6 @@ void BlinkGCPluginConsumer::CheckTraceMethod(
CheckTraceVisitor visitor(trace, parent, &cache_);
visitor.TraverseCXXMethodDecl(trace);
- // Skip reporting if this trace method is a just delegate to
- // traceImpl (or traceAfterDispatchImpl) method. We will report on
- // CheckTraceMethod on traceImpl method.
- if (visitor.delegates_to_traceimpl())
- return;
-
for (auto& base : parent->GetBases())
if (!base.second.IsProperlyTraced())
reporter_.BaseRequiresTracing(parent, trace, base.first);