Index: tools/clang/blink_gc_plugin/CheckTraceVisitor.cpp |
diff --git a/tools/clang/blink_gc_plugin/CheckTraceVisitor.cpp b/tools/clang/blink_gc_plugin/CheckTraceVisitor.cpp |
index c996ca7dd1480a76c65ddf12f3fd8d2215aa7009..8f6639eae4160b40853654fbbe883a77198b18ed 100644 |
--- a/tools/clang/blink_gc_plugin/CheckTraceVisitor.cpp |
+++ b/tools/clang/blink_gc_plugin/CheckTraceVisitor.cpp |
@@ -13,15 +13,7 @@ using namespace clang; |
CheckTraceVisitor::CheckTraceVisitor(CXXMethodDecl* trace, |
RecordInfo* info, |
RecordCache* cache) |
- : trace_(trace), |
- info_(info), |
- cache_(cache), |
- delegates_to_traceimpl_(false) { |
-} |
- |
-bool CheckTraceVisitor::delegates_to_traceimpl() const { |
- return delegates_to_traceimpl_; |
-} |
+ : trace_(trace), info_(info), cache_(cache) {} |
bool CheckTraceVisitor::VisitMemberExpr(MemberExpr* member) { |
// In weak callbacks, consider any occurrence as a correct usage. |
@@ -72,8 +64,6 @@ bool CheckTraceVisitor::VisitCallExpr(CallExpr* call) { |
CXXRecordDecl* decl = base->getPointeeType()->getAsCXXRecordDecl(); |
if (decl) |
CheckTraceFieldCall(expr->getMemberName().getAsString(), decl, arg); |
- if (Config::IsTraceImplName(expr->getMemberName().getAsString())) |
- delegates_to_traceimpl_ = true; |
return true; |
} |
@@ -81,10 +71,6 @@ bool CheckTraceVisitor::VisitCallExpr(CallExpr* call) { |
if (CheckTraceFieldMemberCall(expr) || CheckRegisterWeakMembers(expr)) |
return true; |
- if (Config::IsTraceImplName(expr->getMethodDecl()->getNameAsString())) { |
- delegates_to_traceimpl_ = true; |
- return true; |
- } |
} |
CheckTraceBaseCall(call); |
@@ -92,10 +78,6 @@ bool CheckTraceVisitor::VisitCallExpr(CallExpr* call) { |
} |
bool CheckTraceVisitor::IsTraceCallName(const std::string& name) { |
- if (trace_->getName() == kTraceImplName) |
- return name == kTraceName; |
- if (trace_->getName() == kTraceAfterDispatchImplName) |
- return name == kTraceAfterDispatchName; |
// Currently, a manually dispatched class cannot have mixin bases (having |
// one would add a vtable which we explicitly check against). This means |
// that we can only make calls to a trace method of the same name. Revisit |
@@ -232,8 +214,7 @@ bool CheckTraceVisitor::CheckTraceBaseCall(CallExpr* call) { |
dyn_cast<UnresolvedMemberExpr>(call->getCallee())) { |
// Callee part may become unresolved if the type of the argument |
// ("visitor") is a template parameter and the called function is |
- // overloaded (i.e. trace(Visitor*) and |
- // trace(InlinedGlobalMarkingVisitor)). |
+ // overloaded. |
// |
// Here, we try to find a function that looks like trace() from the |
// candidate overloaded functions, and if we find one, we assume it is |
@@ -351,6 +332,8 @@ bool CheckTraceVisitor::CheckRegisterWeakMembers(CXXMemberCallExpr* call) { |
nested_visitor.TraverseStmt(callback->getBody()); |
} |
} |
+ // TODO: mark all WeakMember<>s as traced even if |
+ // the body isn't available? |
} |
} |
return true; |