DescriptionBlinkGCPlugin: Support overloaded trace() call from template.
With the new setup with InlinedGlobalTracingVisitor, trace() functions are
overloaded and may be called from a traceImpl() function in derived classes.
As traceImpl() is a function template, the trace() overload cannot be resolved
at the time of plugin execution and thus the callee of the trace() call becomes
UnresolvedMemberExpr*.
This patch adds support for detecting Base::trace() call if the
"Base::trace" part is UnresolvedMemberExpr. Specifically, the new code finds
a function looking like trace() from the candidates of UnresolvedMemberExpr,
and if there's one, we treat it as a valid Base::trace() call. The call
needs to give exactly one argument named "visitor" to the function.
A few tests are added to test these cases. A stub for InlinedGlobalTracing-
Visitor is added to tests/heap/stubs.h so it can be used from tests.
BUG=none
R=kouhei@chromium.org
CC=zerny@chromium.org, oilpan-reviews@chromium.org
Committed: https://crrev.com/e5ec4fe6e30327ccff5ed9e2ee57495b24f6878a
Cr-Commit-Position: refs/heads/master@{#317768}
Patch Set 1 #Patch Set 2 : Fix a subtle typo. #
Total comments: 2
Messages
Total messages: 7 (1 generated)
|