From: Ted Kremenek Date: Thu, 23 Apr 2009 23:08:22 +0000 (+0000) Subject: Refactor common logic in getMethodSummary() and getClassMethodSummary(). No X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=250b1fa29002d9c4b81ddc65efe6d15f074ee290;p=clang Refactor common logic in getMethodSummary() and getClassMethodSummary(). No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69936 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 052a610db1..b63078b691 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -704,6 +704,7 @@ public: RetainSummary* getSummary(FunctionDecl* FD); RetainSummary* getMethodSummary(ObjCMessageExpr* ME, ObjCInterfaceDecl* ID); RetainSummary* getClassMethodSummary(ObjCMessageExpr *ME); + RetainSummary* getCommonMethodSummary(ObjCMessageExpr *ME, const char *s); bool isGCEnabled() const { return GCEnabled; } }; @@ -1055,6 +1056,25 @@ RetainSummaryManager::getInitMethodSummary(ObjCMessageExpr* ME) { } +RetainSummary* +RetainSummaryManager::getCommonMethodSummary(ObjCMessageExpr* ME, const char *s) +{ + // Look for methods that return an owned object. + if (!isTrackedObjectType(ME->getType())) + return 0; + + // EXPERIMENTAL: Assume the Cocoa conventions for all objects returned + // by instance methods. + + RetEffect E = + followsFundamentalRule(s) + ? (isGCEnabled() ? RetEffect::MakeNotOwned(RetEffect::ObjC) + : RetEffect::MakeOwned(RetEffect::ObjC, true)) + : RetEffect::MakeNotOwned(RetEffect::ObjC); + + return getPersistentSummary(E); +} + RetainSummary* RetainSummaryManager::getMethodSummary(ObjCMessageExpr* ME, ObjCInterfaceDecl* ID) { @@ -1069,25 +1089,12 @@ RetainSummaryManager::getMethodSummary(ObjCMessageExpr* ME, // "initXXX": pass-through for receiver. const char* s = S.getIdentifierInfoForSlot(0)->getName(); - assert (ScratchArgs.empty()); + assert(ScratchArgs.empty()); if (deriveNamingConvention(s) == InitRule) return getInitMethodSummary(ME); - // Look for methods that return an owned object. - if (!isTrackedObjectType(ME->getType())) - return 0; - - // EXPERIMENTAL: Assume the Cocoa conventions for all objects returned - // by instance methods. - - RetEffect E = - followsFundamentalRule(s) - ? (isGCEnabled() ? RetEffect::MakeNotOwned(RetEffect::ObjC) - : RetEffect::MakeOwned(RetEffect::ObjC, true)) - : RetEffect::MakeNotOwned(RetEffect::ObjC); - - RetainSummary* Summ = getPersistentSummary(E); + RetainSummary *Summ = getCommonMethodSummary(ME, s); ObjCMethodSummaries[ME] = Summ; return Summ; } @@ -1107,21 +1114,8 @@ RetainSummaryManager::getClassMethodSummary(ObjCMessageExpr* ME) { if (I != ObjCClassMethodSummaries.end()) return I->second; - // Look for methods that return an owned object. - if (!isTrackedObjectType(ME->getType())) - return 0; - - // EXPERIMENTAL: Assume the Cocoa conventions for all objects returned - // by class methods. - // Look for methods that return an owned object. - - const char* s = S.getIdentifierInfoForSlot(0)->getName(); - RetEffect E = followsFundamentalRule(s) - ? (isGCEnabled() ? RetEffect::MakeNotOwned(RetEffect::ObjC) - : RetEffect::MakeOwned(RetEffect::ObjC, true)) - : RetEffect::MakeNotOwned(RetEffect::ObjC); - - RetainSummary* Summ = getPersistentSummary(E); + RetainSummary* Summ = + getCommonMethodSummary(ME, S.getIdentifierInfoForSlot(0)->getName()); ObjCClassMethodSummaries[ObjCSummaryKey(ClsName, S)] = Summ; return Summ; }