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