Loading...
cache_builder/IMPCaches.cpp dyld-1162 dyld-1122.1
--- dyld/dyld-1162/cache_builder/IMPCaches.cpp
+++ dyld/dyld-1122.1/cache_builder/IMPCaches.cpp
@@ -730,7 +730,7 @@
            (trackedArray.find(classNameStr) != trackedArray.end());
 }
 
-bool IMPCachesBuilder::addMethod(IMPCaches::ClassData* classDataPtr, std::string_view methodName, std::string_view installName, std::string_view className, std::string_view catName, bool inlined, bool fromFlattening) {
+void IMPCachesBuilder::addMethod(IMPCaches::ClassData* classDataPtr, std::string_view methodName, std::string_view installName, std::string_view className, std::string_view catName, bool inlined, bool fromFlattening) {
     std::string_view methodNameView(methodName);
 
     auto [selectorIterator, success] = selectors.map.try_emplace(methodNameView, std::make_unique<Selector>());
@@ -763,8 +763,6 @@
         thisSelectorData->classes.push_back(classDataPtr);
         classDataPtr->methods.push_back(m);
     }
-
-    return !exists;
 }
 
 void IMPCachesBuilder::inlineMethodIfNeeded(IMPCaches::ClassData* classToInlineIn, std::string_view classToInlineFrom, std::string_view catToInlineFrom, std::string_view installNameToInlineFrom, std::string_view name, std::set<Selector*>& seenSelectors, bool isFlattening) {
@@ -871,13 +869,10 @@
         thisData->isMetaclass = theClass.isMetaClass;
         thisData->shouldGenerateImpCache = interesting;
 
-        bool duplicateMethod = false;
         for ( const imp_caches::Method& objcMethod : objcClass.methods ) {
             const bool inlined = false;
             const bool fromFlattening = false;
-            bool added = addMethod(thisDataPtr, objcMethod.name, dylib.inputDylib->installName, theClass.className, "", inlined, fromFlattening);
-            if ( !added )
-                duplicateMethod = true;
+            addMethod(thisDataPtr, objcMethod.name, dylib.inputDylib->installName, theClass.className, "", inlined, fromFlattening);
         }
 
         ClassKey key {
@@ -886,7 +881,7 @@
         };
         assert(dylib.impCachesClassData.find(key) == dylib.impCachesClassData.end());
 
-        if (duplicateMethod || (duplicateClasses.find(key) != duplicateClasses.end()) ) {
+        if (duplicateClasses.find(key) != duplicateClasses.end()) {
             // We can't just set shouldGenerateImpCache to false ; we do it later
             // when we have built the flattening hierarchies in order to drop
             // any related classes as well.