]> granicus.if.org Git - clang/commitdiff
Refactor common logic in getMethodSummary() and getClassMethodSummary(). No
authorTed Kremenek <kremenek@apple.com>
Thu, 23 Apr 2009 23:08:22 +0000 (23:08 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 23 Apr 2009 23:08:22 +0000 (23:08 +0000)
functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69936 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/CFRefCount.cpp

index 052a610db1b4682bbfce8a930b9fe7a61f74a681..b63078b691be895f714a5629b6fb0860e10c2cbd 100644 (file)
@@ -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;
 }