| 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 | 
|---|