diff --git a/include/swift/AST/ModuleDependencies.h b/include/swift/AST/ModuleDependencies.h index 74b85fc02d183..6ad80e69ccffa 100644 --- a/include/swift/AST/ModuleDependencies.h +++ b/include/swift/AST/ModuleDependencies.h @@ -998,7 +998,7 @@ class SwiftDependencyScanningService { std::vector AllContextHashes; /// Shared state mutual-exclusivity lock - llvm::sys::SmartMutex ScanningServiceGlobalLock; + mutable llvm::sys::SmartMutex ScanningServiceGlobalLock; /// Retrieve the dependencies map that corresponds to the given dependency /// kind. diff --git a/lib/AST/ModuleDependencies.cpp b/lib/AST/ModuleDependencies.cpp index ef9f75ec46c7a..097e50840f388 100644 --- a/lib/AST/ModuleDependencies.cpp +++ b/lib/AST/ModuleDependencies.cpp @@ -736,6 +736,7 @@ bool SwiftDependencyScanningService::setupCachingDependencyScanningService( SwiftDependencyScanningService::ContextSpecificGlobalCacheState * SwiftDependencyScanningService::getCacheForScanningContextHash(StringRef scanningContextHash) const { + llvm::sys::SmartScopedLock Lock(ScanningServiceGlobalLock); auto contextSpecificCache = ContextSpecificCacheMap.find(scanningContextHash); assert(contextSpecificCache != ContextSpecificCacheMap.end() && "Global Module Dependencies Cache not configured with context-specific " @@ -756,7 +757,6 @@ SwiftDependencyScanningService::getDependenciesMap( ModuleNameToDependencyMap & SwiftDependencyScanningService::getDependenciesMap( ModuleDependencyKind kind, StringRef scanContextHash) { - llvm::sys::SmartScopedLock Lock(ScanningServiceGlobalLock); auto contextSpecificCache = getCacheForScanningContextHash(scanContextHash); auto it = contextSpecificCache->ModuleDependenciesMap.find(kind); assert(it != contextSpecificCache->ModuleDependenciesMap.end() &&