diff options
Diffstat (limited to 'chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp')
-rw-r--r-- | chromium/tools/clang/blink_gc_plugin/BlinkGCPluginConsumer.cpp | 9 |
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); |