| 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 file provides a wrapper for CXXRecordDecl that accumulates GC related | 5 // This file provides a wrapper for CXXRecordDecl that accumulates GC related | 
| 6 // information about a class. Accumulated information is memoized and the info | 6 // information about a class. Accumulated information is memoized and the info | 
| 7 // objects are stored in a RecordCache. | 7 // objects are stored in a RecordCache. | 
| 8 | 8 | 
| 9 #ifndef TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 9 #ifndef TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 
| 10 #define TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 10 #define TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 
| 11 | 11 | 
| 12 #include <map> | 12 #include <map> | 
| 13 #include <vector> | 13 #include <vector> | 
| 14 | 14 | 
| 15 #include "Edge.h" | 15 #include "Edge.h" | 
| 16 | 16 | 
| 17 #include "clang/AST/AST.h" | 17 #include "clang/AST/AST.h" | 
| 18 #include "clang/AST/CXXInheritance.h" | 18 #include "clang/AST/CXXInheritance.h" | 
| 19 | 19 | 
| 20 class RecordCache; | 20 class RecordCache; | 
| 21 | 21 | 
| 22 // A potentially tracable and/or lifetime affecting point in the object graph. | 22 // A potentially tracable and/or lifetime affecting point in the object graph. | 
| 23 class GraphPoint { | 23 class GraphPoint { | 
| 24  public: | 24  public: | 
| 25   GraphPoint() : traced_(false) {} | 25   GraphPoint() : traced_(false) {} | 
|  | 26   virtual ~GraphPoint() {} | 
| 26   void MarkTraced() { traced_ = true; } | 27   void MarkTraced() { traced_ = true; } | 
| 27   bool IsProperlyTraced() { return traced_ || !NeedsTracing().IsNeeded(); } | 28   bool IsProperlyTraced() { return traced_ || !NeedsTracing().IsNeeded(); } | 
| 28   virtual const TracingStatus NeedsTracing() = 0; | 29   virtual const TracingStatus NeedsTracing() = 0; | 
| 29 | 30 | 
| 30  private: | 31  private: | 
| 31   bool traced_; | 32   bool traced_; | 
| 32 }; | 33 }; | 
| 33 | 34 | 
| 34 class BasePoint : public GraphPoint { | 35 class BasePoint : public GraphPoint { | 
| 35  public: | 36  public: | 
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 175       } | 176       } | 
| 176     } | 177     } | 
| 177   } | 178   } | 
| 178 | 179 | 
| 179  private: | 180  private: | 
| 180   typedef std::map<clang::CXXRecordDecl*, RecordInfo> Cache; | 181   typedef std::map<clang::CXXRecordDecl*, RecordInfo> Cache; | 
| 181   Cache cache_; | 182   Cache cache_; | 
| 182 }; | 183 }; | 
| 183 | 184 | 
| 184 #endif  // TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 185 #endif  // TOOLS_BLINK_GC_PLUGIN_RECORD_INFO_H_ | 
| OLD | NEW | 
|---|