OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "Config.h" | 5 #include "Config.h" |
6 | 6 |
7 #include <cassert> | 7 #include <cassert> |
8 | 8 |
9 #include "clang/AST/AST.h" | 9 #include "clang/AST/AST.h" |
10 | 10 |
11 using namespace clang; | 11 using namespace clang; |
12 | 12 |
13 // Legacy names to be removed after Blink rename: | 13 // Legacy names to be removed after Blink rename: |
14 namespace legacy { | 14 namespace legacy { |
15 const char kCreateName[] = "create"; | 15 const char kCreateName[] = "create"; |
16 const char kTraceName[] = "trace"; | 16 const char kTraceName[] = "trace"; |
17 const char kTraceImplName[] = "traceImpl"; | |
18 const char kFinalizeName[] = "finalizeGarbageCollectedObject"; | 17 const char kFinalizeName[] = "finalizeGarbageCollectedObject"; |
19 const char kTraceAfterDispatchName[] = "traceAfterDispatch"; | 18 const char kTraceAfterDispatchName[] = "traceAfterDispatch"; |
20 const char kTraceAfterDispatchImplName[] = "traceAfterDispatchImpl"; | |
21 const char kRegisterWeakMembersName[] = "registerWeakMembers"; | 19 const char kRegisterWeakMembersName[] = "registerWeakMembers"; |
22 const char kAdjustAndMarkName[] = "adjustAndMark"; | 20 const char kAdjustAndMarkName[] = "adjustAndMark"; |
23 const char kIsHeapObjectAliveName[] = "isHeapObjectAlive"; | 21 const char kIsHeapObjectAliveName[] = "isHeapObjectAlive"; |
24 } // namespace legacy | 22 } // namespace legacy |
25 | 23 |
26 const char kNewOperatorName[] = "operator new"; | 24 const char kNewOperatorName[] = "operator new"; |
27 const char* kCreateName = "Create"; | 25 const char* kCreateName = "Create"; |
28 const char* kTraceName = "Trace"; | 26 const char* kTraceName = "Trace"; |
29 const char* kTraceImplName = "TraceImpl"; | |
30 const char* kFinalizeName = "FinalizeGarbageCollectedObject"; | 27 const char* kFinalizeName = "FinalizeGarbageCollectedObject"; |
31 const char* kTraceAfterDispatchName = "TraceAfterDispatch"; | 28 const char* kTraceAfterDispatchName = "TraceAfterDispatch"; |
32 const char* kTraceAfterDispatchImplName = "TraceAfterDispatchImpl"; | |
33 const char* kRegisterWeakMembersName = "RegisterWeakMembers"; | 29 const char* kRegisterWeakMembersName = "RegisterWeakMembers"; |
34 const char kHeapAllocatorName[] = "HeapAllocator"; | 30 const char kHeapAllocatorName[] = "HeapAllocator"; |
35 const char kTraceIfNeededName[] = "TraceIfNeeded"; | 31 const char kTraceIfNeededName[] = "TraceIfNeeded"; |
36 const char kVisitorDispatcherName[] = "VisitorDispatcher"; | 32 const char kVisitorDispatcherName[] = "VisitorDispatcher"; |
37 const char kVisitorVarName[] = "visitor"; | 33 const char kVisitorVarName[] = "visitor"; |
38 const char* kAdjustAndMarkName = "AdjustAndMark"; | 34 const char* kAdjustAndMarkName = "AdjustAndMark"; |
39 const char* kIsHeapObjectAliveName = "IsHeapObjectAlive"; | 35 const char* kIsHeapObjectAliveName = "IsHeapObjectAlive"; |
40 const char kIsEagerlyFinalizedName[] = "IsEagerlyFinalizedMarker"; | 36 const char kIsEagerlyFinalizedName[] = "IsEagerlyFinalizedMarker"; |
41 const char kConstIteratorName[] = "const_iterator"; | 37 const char kConstIteratorName[] = "const_iterator"; |
42 const char kIteratorName[] = "iterator"; | 38 const char kIteratorName[] = "iterator"; |
43 const char kConstReverseIteratorName[] = "const_reverse_iterator"; | 39 const char kConstReverseIteratorName[] = "const_reverse_iterator"; |
44 const char kReverseIteratorName[] = "reverse_iterator"; | 40 const char kReverseIteratorName[] = "reverse_iterator"; |
45 | 41 |
46 void Config::UseLegacyNames() { | 42 void Config::UseLegacyNames() { |
47 kCreateName = legacy::kCreateName; | 43 kCreateName = legacy::kCreateName; |
48 kTraceName = legacy::kTraceName; | 44 kTraceName = legacy::kTraceName; |
49 kTraceImplName = legacy::kTraceImplName; | |
50 kFinalizeName = legacy::kFinalizeName; | 45 kFinalizeName = legacy::kFinalizeName; |
51 kTraceAfterDispatchName = legacy::kTraceAfterDispatchName; | 46 kTraceAfterDispatchName = legacy::kTraceAfterDispatchName; |
52 kTraceAfterDispatchImplName = legacy::kTraceAfterDispatchImplName; | |
53 kRegisterWeakMembersName = legacy::kRegisterWeakMembersName; | 47 kRegisterWeakMembersName = legacy::kRegisterWeakMembersName; |
54 kAdjustAndMarkName = legacy::kAdjustAndMarkName; | 48 kAdjustAndMarkName = legacy::kAdjustAndMarkName; |
55 kIsHeapObjectAliveName = legacy::kIsHeapObjectAliveName; | 49 kIsHeapObjectAliveName = legacy::kIsHeapObjectAliveName; |
56 } | 50 } |
57 | 51 |
58 bool Config::IsTemplateInstantiation(CXXRecordDecl* record) { | 52 bool Config::IsTemplateInstantiation(CXXRecordDecl* record) { |
59 ClassTemplateSpecializationDecl* spec = | 53 ClassTemplateSpecializationDecl* spec = |
60 dyn_cast<clang::ClassTemplateSpecializationDecl>(record); | 54 dyn_cast<clang::ClassTemplateSpecializationDecl>(record); |
61 if (!spec) | 55 if (!spec) |
62 return false; | 56 return false; |
63 switch (spec->getTemplateSpecializationKind()) { | 57 switch (spec->getTemplateSpecializationKind()) { |
64 case TSK_ImplicitInstantiation: | 58 case TSK_ImplicitInstantiation: |
65 case TSK_ExplicitInstantiationDefinition: | 59 case TSK_ExplicitInstantiationDefinition: |
66 return true; | 60 return true; |
67 case TSK_Undeclared: | 61 case TSK_Undeclared: |
68 case TSK_ExplicitSpecialization: | 62 case TSK_ExplicitSpecialization: |
69 return false; | 63 return false; |
70 // TODO: unsupported cases. | 64 // TODO: unsupported cases. |
71 case TSK_ExplicitInstantiationDeclaration: | 65 case TSK_ExplicitInstantiationDeclaration: |
72 return false; | 66 return false; |
73 } | 67 } |
74 assert(false && "Unknown template specialization kind"); | 68 assert(false && "Unknown template specialization kind"); |
75 return false; | 69 return false; |
76 } | 70 } |
OLD | NEW |