Skip to content

Commit 8bf0adb

Browse files
authored
Merge pull request swiftlang#85853 from artemcm/63-FixScanDepsPerfRegression
[6.3 🍒][Dependency Scanning] Do not re-query a given clang module identifier more than once
2 parents c7847e1 + 54294e7 commit 8bf0adb

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

lib/DependencyScan/ModuleDependencyScanner.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,17 +1113,20 @@ void ModuleDependencyScanner::performParallelClangModuleLookup(
11131113
};
11141114

11151115
// Enque asynchronous lookup tasks
1116+
llvm::StringSet<> queriedIdentifiers;
11161117
for (const auto &unresolvedImports : unresolvedImportsMap)
11171118
for (const auto &unresolvedImportInfo : unresolvedImports.second)
1118-
ScanningThreadPool.async(
1119-
scanForClangModuleDependency,
1120-
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
1119+
if (queriedIdentifiers.insert(unresolvedImportInfo.importIdentifier).second)
1120+
ScanningThreadPool.async(
1121+
scanForClangModuleDependency,
1122+
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
11211123

11221124
for (const auto &unresolvedImports : unresolvedOptionalImportsMap)
11231125
for (const auto &unresolvedImportInfo : unresolvedImports.second)
1124-
ScanningThreadPool.async(
1125-
scanForClangModuleDependency,
1126-
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
1126+
if (queriedIdentifiers.insert(unresolvedImportInfo.importIdentifier).second)
1127+
ScanningThreadPool.async(
1128+
scanForClangModuleDependency,
1129+
getModuleImportIdentifier(unresolvedImportInfo.importIdentifier));
11271130

11281131
ScanningThreadPool.wait();
11291132
}

0 commit comments

Comments
 (0)