Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(152)

Side by Side Diff: tools/clang/blink_gc_plugin/Config.h

Issue 2061143002: gc plugin: remove ScriptWrappable destructor special case. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | tools/clang/blink_gc_plugin/RecordInfo.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 defines the names used by GC infrastructure. 5 // This file defines the names used by GC infrastructure.
6 6
7 // TODO: Restructure the name determination to use fully qualified names (ala, 7 // TODO: Restructure the name determination to use fully qualified names (ala,
8 // blink::Foo) so that the plugin can be enabled for all of chromium. Doing so 8 // blink::Foo) so that the plugin can be enabled for all of chromium. Doing so
9 // would allow us to catch errors with structures outside of blink that might 9 // would allow us to catch errors with structures outside of blink that might
10 // have unsafe pointers to GC allocated blink structures. 10 // have unsafe pointers to GC allocated blink structures.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 50
51 static bool IsPersistent(const std::string& name) { 51 static bool IsPersistent(const std::string& name) {
52 return name == "Persistent"; 52 return name == "Persistent";
53 } 53 }
54 54
55 static bool IsPersistentHandle(const std::string& name) { 55 static bool IsPersistentHandle(const std::string& name) {
56 return IsPersistent(name) || 56 return IsPersistent(name) ||
57 IsPersistentGCCollection(name); 57 IsPersistentGCCollection(name);
58 } 58 }
59 59
60 static bool IsRawPtr(const std::string& name) {
61 return name == "RawPtr";
62 }
63
64 static bool IsRefPtr(const std::string& name) { 60 static bool IsRefPtr(const std::string& name) {
65 return name == "RefPtr"; 61 return name == "RefPtr";
66 } 62 }
67 63
68 static bool IsOwnPtr(const std::string& name) { 64 static bool IsOwnPtr(const std::string& name) {
69 return name == "OwnPtr"; 65 return name == "OwnPtr";
70 } 66 }
71 67
72 static bool IsWTFCollection(const std::string& name) { 68 static bool IsWTFCollection(const std::string& name) {
73 return name == "Vector" || 69 return name == "Vector" ||
(...skipping 25 matching lines...) Expand all
99 name == "PersistentHeapHashCountedSet" || 95 name == "PersistentHeapHashCountedSet" ||
100 name == "PersistentHeapHashMap"; 96 name == "PersistentHeapHashMap";
101 } 97 }
102 98
103 static bool IsHashMap(const std::string& name) { 99 static bool IsHashMap(const std::string& name) {
104 return name == "HashMap" || 100 return name == "HashMap" ||
105 name == "HeapHashMap" || 101 name == "HeapHashMap" ||
106 name == "PersistentHeapHashMap"; 102 name == "PersistentHeapHashMap";
107 } 103 }
108 104
109 // Following http://crrev.com/369633033 (Blink r177436),
110 // ignore blink::ScriptWrappable's destructor.
111 // TODO: remove when its non-Oilpan destructor is removed.
112 static bool HasIgnorableDestructor(const std::string& ns,
113 const std::string& name) {
114 return ns == "blink" && name == "ScriptWrappable";
115 }
116
117 // Assumes name is a valid collection name. 105 // Assumes name is a valid collection name.
118 static size_t CollectionDimension(const std::string& name) { 106 static size_t CollectionDimension(const std::string& name) {
119 return (IsHashMap(name) || name == "pair") ? 2 : 1; 107 return (IsHashMap(name) || name == "pair") ? 2 : 1;
120 } 108 }
121 109
122 static bool IsDummyBase(const std::string& name) {
123 return name == "DummyBase";
124 }
125
126 static bool IsRefCountedBase(const std::string& name) { 110 static bool IsRefCountedBase(const std::string& name) {
127 return name == "RefCounted" || 111 return name == "RefCounted" ||
128 name == "ThreadSafeRefCounted"; 112 name == "ThreadSafeRefCounted";
129 } 113 }
130 114
131 static bool IsGCMixinBase(const std::string& name) { 115 static bool IsGCMixinBase(const std::string& name) {
132 return name == "GarbageCollectedMixin"; 116 return name == "GarbageCollectedMixin";
133 } 117 }
134 118
135 static bool IsGCFinalizedBase(const std::string& name) { 119 static bool IsGCFinalizedBase(const std::string& name) {
136 return name == "GarbageCollectedFinalized"; 120 return name == "GarbageCollectedFinalized";
137 } 121 }
138 122
139 static bool IsGCBase(const std::string& name) { 123 static bool IsGCBase(const std::string& name) {
140 return name == "GarbageCollected" || 124 return name == "GarbageCollected" ||
141 IsGCFinalizedBase(name) || 125 IsGCFinalizedBase(name) ||
142 IsGCMixinBase(name); 126 IsGCMixinBase(name);
143 } 127 }
144 128
145 // Returns true of the base classes that do not need a vtable entry for trace 129 // Returns true of the base classes that do not need a vtable entry for trace
146 // because they cannot possibly initiate a GC during construction. 130 // because they cannot possibly initiate a GC during construction.
147 static bool IsSafePolymorphicBase(const std::string& name) { 131 static bool IsSafePolymorphicBase(const std::string& name) {
148 return IsGCBase(name) || IsDummyBase(name) || IsRefCountedBase(name); 132 return IsGCBase(name) || IsRefCountedBase(name);
149 } 133 }
150 134
151 static bool IsAnnotated(clang::Decl* decl, const std::string& anno) { 135 static bool IsAnnotated(clang::Decl* decl, const std::string& anno) {
152 clang::AnnotateAttr* attr = decl->getAttr<clang::AnnotateAttr>(); 136 clang::AnnotateAttr* attr = decl->getAttr<clang::AnnotateAttr>();
153 return attr && (attr->getAnnotation() == anno); 137 return attr && (attr->getAnnotation() == anno);
154 } 138 }
155 139
156 static bool IsStackAnnotated(clang::Decl* decl) { 140 static bool IsStackAnnotated(clang::Decl* decl) {
157 return IsAnnotated(decl, "blink_stack_allocated"); 141 return IsAnnotated(decl, "blink_stack_allocated");
158 } 142 }
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 if (suffix.size() > str.size()) 245 if (suffix.size() > str.size())
262 return false; 246 return false;
263 return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0; 247 return str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0;
264 } 248 }
265 249
266 // Test if a template specialization is an instantiation. 250 // Test if a template specialization is an instantiation.
267 static bool IsTemplateInstantiation(clang::CXXRecordDecl* record); 251 static bool IsTemplateInstantiation(clang::CXXRecordDecl* record);
268 }; 252 };
269 253
270 #endif // TOOLS_BLINK_GC_PLUGIN_CONFIG_H_ 254 #endif // TOOLS_BLINK_GC_PLUGIN_CONFIG_H_
OLDNEW
« no previous file with comments | « no previous file | tools/clang/blink_gc_plugin/RecordInfo.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698