| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This clang plugin checks various invariants of the Blink garbage | 5 // This clang plugin checks various invariants of the Blink garbage |
| 6 // collection infrastructure. | 6 // collection infrastructure. |
| 7 // | 7 // |
| 8 // Errors are described at: | 8 // Errors are described at: |
| 9 // http://www.chromium.org/developers/blink-gc-plugin-errors | 9 // http://www.chromium.org/developers/blink-gc-plugin-errors |
| 10 | 10 |
| (...skipping 997 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1008 public: | 1008 public: |
| 1009 BlinkGCPluginConsumer(CompilerInstance& instance, | 1009 BlinkGCPluginConsumer(CompilerInstance& instance, |
| 1010 const BlinkGCPluginOptions& options) | 1010 const BlinkGCPluginOptions& options) |
| 1011 : instance_(instance), | 1011 : instance_(instance), |
| 1012 diagnostic_(instance.getDiagnostics()), | 1012 diagnostic_(instance.getDiagnostics()), |
| 1013 options_(options), | 1013 options_(options), |
| 1014 json_(0) { | 1014 json_(0) { |
| 1015 | 1015 |
| 1016 // Only check structures in the blink and WebKit namespaces. | 1016 // Only check structures in the blink and WebKit namespaces. |
| 1017 options_.checked_namespaces.insert("blink"); | 1017 options_.checked_namespaces.insert("blink"); |
| 1018 options_.checked_namespaces.insert("WebKit"); | |
| 1019 | 1018 |
| 1020 // Ignore GC implementation files. | 1019 // Ignore GC implementation files. |
| 1021 options_.ignored_directories.push_back("/heap/"); | 1020 options_.ignored_directories.push_back("/heap/"); |
| 1022 | 1021 |
| 1023 // Register warning/error messages. | 1022 // Register warning/error messages. |
| 1024 diag_class_must_left_mostly_derive_gc_ = diagnostic_.getCustomDiagID( | 1023 diag_class_must_left_mostly_derive_gc_ = diagnostic_.getCustomDiagID( |
| 1025 getErrorLevel(), kClassMustLeftMostlyDeriveGC); | 1024 getErrorLevel(), kClassMustLeftMostlyDeriveGC); |
| 1026 diag_class_requires_trace_method_ = | 1025 diag_class_requires_trace_method_ = |
| 1027 diagnostic_.getCustomDiagID(getErrorLevel(), kClassRequiresTraceMethod); | 1026 diagnostic_.getCustomDiagID(getErrorLevel(), kClassRequiresTraceMethod); |
| 1028 diag_base_requires_tracing_ = | 1027 diag_base_requires_tracing_ = |
| (...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1745 return false; | 1744 return false; |
| 1746 } | 1745 } |
| 1747 | 1746 |
| 1748 bool InCheckedNamespace(RecordInfo* info) { | 1747 bool InCheckedNamespace(RecordInfo* info) { |
| 1749 if (!info) | 1748 if (!info) |
| 1750 return false; | 1749 return false; |
| 1751 for (DeclContext* context = info->record()->getDeclContext(); | 1750 for (DeclContext* context = info->record()->getDeclContext(); |
| 1752 !context->isTranslationUnit(); | 1751 !context->isTranslationUnit(); |
| 1753 context = context->getParent()) { | 1752 context = context->getParent()) { |
| 1754 if (NamespaceDecl* decl = dyn_cast<NamespaceDecl>(context)) { | 1753 if (NamespaceDecl* decl = dyn_cast<NamespaceDecl>(context)) { |
| 1754 if (decl->isAnonymousNamespace()) |
| 1755 return true; |
| 1755 if (options_.checked_namespaces.find(decl->getNameAsString()) != | 1756 if (options_.checked_namespaces.find(decl->getNameAsString()) != |
| 1756 options_.checked_namespaces.end()) { | 1757 options_.checked_namespaces.end()) { |
| 1757 return true; | 1758 return true; |
| 1758 } | 1759 } |
| 1759 } | 1760 } |
| 1760 } | 1761 } |
| 1761 return false; | 1762 return false; |
| 1762 } | 1763 } |
| 1763 | 1764 |
| 1764 bool GetFilename(SourceLocation loc, string* filename) { | 1765 bool GetFilename(SourceLocation loc, string* filename) { |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2194 | 2195 |
| 2195 private: | 2196 private: |
| 2196 BlinkGCPluginOptions options_; | 2197 BlinkGCPluginOptions options_; |
| 2197 }; | 2198 }; |
| 2198 | 2199 |
| 2199 } // namespace | 2200 } // namespace |
| 2200 | 2201 |
| 2201 static FrontendPluginRegistry::Add<BlinkGCPluginAction> X( | 2202 static FrontendPluginRegistry::Add<BlinkGCPluginAction> X( |
| 2202 "blink-gc-plugin", | 2203 "blink-gc-plugin", |
| 2203 "Check Blink GC invariants"); | 2204 "Check Blink GC invariants"); |
| OLD | NEW |