Index: tools/clang/blink_gc_plugin/RecordInfo.cpp |
diff --git a/tools/clang/blink_gc_plugin/RecordInfo.cpp b/tools/clang/blink_gc_plugin/RecordInfo.cpp |
index 1bf954e5c5f7bcd37fe110de69c6a23b1d531c99..025741519cb8e1946c3379dcaa378efb30d450aa 100644 |
--- a/tools/clang/blink_gc_plugin/RecordInfo.cpp |
+++ b/tools/clang/blink_gc_plugin/RecordInfo.cpp |
@@ -426,39 +426,45 @@ void RecordInfo::DetermineTracingMethods() { |
determined_trace_methods_ = true; |
if (Config::IsGCBase(name_)) |
return; |
- CXXMethodDecl* trace = 0; |
- CXXMethodDecl* traceAfterDispatch = 0; |
- bool isTraceAfterDispatch; |
- bool hasAdjustAndMark = false; |
- bool hasIsHeapObjectAlive = false; |
+ CXXMethodDecl* trace = nullptr; |
+ CXXMethodDecl* trace_after_dispatch = nullptr; |
+ bool has_adjust_and_mark = false; |
+ bool has_is_heap_object_alive = false; |
for (CXXRecordDecl::method_iterator it = record_->method_begin(); |
it != record_->method_end(); |
++it) { |
- if (Config::IsTraceMethod(*it, &isTraceAfterDispatch)) { |
- if (isTraceAfterDispatch) { |
- traceAfterDispatch = *it; |
- } else { |
+ switch (Config::GetTraceMethodType(*it)) { |
+ case Config::TRACE_METHOD: |
trace = *it; |
- } |
- } else if (it->getNameAsString() == kFinalizeName) { |
- finalize_dispatch_method_ = *it; |
- } else if (it->getNameAsString() == kAdjustAndMarkName) { |
- hasAdjustAndMark = true; |
- } else if (it->getNameAsString() == kIsHeapObjectAliveName) { |
- hasIsHeapObjectAlive = true; |
+ break; |
+ case Config::TRACE_AFTER_DISPATCH_METHOD: |
+ trace_after_dispatch = *it; |
+ break; |
+ case Config::TRACE_IMPL_METHOD: |
+ case Config::TRACE_AFTER_DISPATCH_IMPL_METHOD: |
+ break; |
+ case Config::NOT_TRACE_METHOD: |
+ if (it->getNameAsString() == kFinalizeName) { |
+ finalize_dispatch_method_ = *it; |
+ } else if (it->getNameAsString() == kAdjustAndMarkName) { |
+ has_adjust_and_mark = true; |
+ } else if (it->getNameAsString() == kIsHeapObjectAliveName) { |
+ has_is_heap_object_alive = true; |
+ } |
+ break; |
} |
} |
// Record if class defines the two GCMixin methods. |
has_gc_mixin_methods_ = |
- hasAdjustAndMark && hasIsHeapObjectAlive ? kTrue : kFalse; |
- if (traceAfterDispatch) { |
- trace_method_ = traceAfterDispatch; |
+ has_adjust_and_mark && has_is_heap_object_alive ? kTrue : kFalse; |
+ if (trace_after_dispatch) { |
+ trace_method_ = trace_after_dispatch; |
trace_dispatch_method_ = trace; |
} else { |
// TODO: Can we never have a dispatch method called trace without the same |
// class defining a traceAfterDispatch method? |
trace_method_ = trace; |
- trace_dispatch_method_ = 0; |
+ trace_dispatch_method_ = nullptr; |
} |
if (trace_dispatch_method_ && finalize_dispatch_method_) |
return; |