Skip to content

Commit a59db26

Browse files
committed
[Dependency Scanner] Rename 'GlobalModuleDependenciesCache' -> 'SwiftDependencyScanningService'
1 parent 1230966 commit a59db26

File tree

12 files changed

+100
-93
lines changed

12 files changed

+100
-93
lines changed

include/swift/AST/ModuleDependencies.h

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -492,14 +492,13 @@ using ModuleDependenciesKindRefMap =
492492
llvm::StringMap<const ModuleDependencyInfo *>,
493493
ModuleDependencyKindHash>;
494494

495-
// MARK: GlobalModuleDependenciesCache
496-
/// A cache describing the set of module dependencies that has been queried
497-
/// thus far. This cache records/stores the actual Dependency values and can be
498-
/// preserved across different scanning actions (e.g. in
499-
/// `DependencyScanningTool`). It is not to be queried directly, but is rather
495+
// MARK: SwiftDependencyScanningService
496+
/// A carrier of state shared among possibly multiple invocations of the dependency
497+
/// scanner. Acts as a global cache of discovered module dependencies and
498+
/// filesystem state. It is not to be queried directly, but is rather
500499
/// meant to be wrapped in an instance of `ModuleDependenciesCache`, responsible
501500
/// for recording new dependencies and answering cache queries in a given scan.
502-
class GlobalModuleDependenciesCache {
501+
class SwiftDependencyScanningService {
503502
/// Global cache contents specific to a specific scanner invocation context
504503
struct ContextSpecificGlobalCacheState {
505504
/// All cached module dependencies, in the order in which they were
@@ -522,6 +521,7 @@ class GlobalModuleDependenciesCache {
522521
/// All cached Swift source module dependencies, in the order in which they
523522
/// were encountered
524523
std::vector<ModuleDependencyID> AllSourceModules;
524+
525525
/// Dependencies for all Swift source-based modules discovered. Each one is
526526
/// the main module of a prior invocation of the scanner.
527527
ModuleNameToDependencyMap SwiftSourceModuleDependenciesMap;
@@ -534,6 +534,7 @@ class GlobalModuleDependenciesCache {
534534

535535
/// The current context hash configuration
536536
Optional<std::string> CurrentContextHash;
537+
537538
/// The context hashes used by scanners using this cache, in the order in
538539
/// which they were used
539540
std::vector<std::string> AllContextHashes;
@@ -545,11 +546,17 @@ class GlobalModuleDependenciesCache {
545546
getDependenciesMap(ModuleDependencyKind kind) const;
546547

547548
public:
548-
GlobalModuleDependenciesCache();
549-
GlobalModuleDependenciesCache(const GlobalModuleDependenciesCache &) = delete;
550-
GlobalModuleDependenciesCache &
551-
operator=(const GlobalModuleDependenciesCache &) = delete;
552-
virtual ~GlobalModuleDependenciesCache() {}
549+
SwiftDependencyScanningService();
550+
SwiftDependencyScanningService(const SwiftDependencyScanningService &) = delete;
551+
SwiftDependencyScanningService &
552+
operator=(const SwiftDependencyScanningService &) = delete;
553+
virtual ~SwiftDependencyScanningService() {}
554+
555+
/// Query the service's filesystem cache
556+
clang::tooling::dependencies::DependencyScanningFilesystemSharedCache &getSharedCache() {
557+
assert(SharedFilesystemCache && "Expected a shared cache");
558+
return *SharedFilesystemCache;
559+
}
553560

554561
/// Query the service's filesystem cache
555562
clang::tooling::dependencies::DependencyScanningFilesystemSharedCache &
@@ -567,6 +574,7 @@ class GlobalModuleDependenciesCache {
567574
friend class ModuleDependenciesCache;
568575
friend class ModuleDependenciesCacheDeserializer;
569576
friend class ModuleDependenciesCacheSerializer;
577+
friend class DependencyScanningTool;
570578

571579
/// Configure the current state of the cache to respond to queries
572580
/// for the specified scanning context hash.
@@ -627,13 +635,13 @@ class GlobalModuleDependenciesCache {
627635

628636
// MARK: ModuleDependenciesCache
629637
/// This "local" dependencies cache persists only for the duration of a given
630-
/// scanning action, and wraps an instance of a `GlobalModuleDependenciesCache`
638+
/// scanning action, and wraps an instance of a `SwiftDependencyScanningService`
631639
/// which may carry cached scanning information from prior scanning actions.
632640
/// This cache maintains a store of references to all dependencies found within
633641
/// the current scanning action (with their values stored in the global Cache).
634642
class ModuleDependenciesCache {
635643
private:
636-
GlobalModuleDependenciesCache &globalCache;
644+
SwiftDependencyScanningService &globalScanningService;
637645

638646
/// References to data in `globalCache` for Swift dependencies and
639647
/// `clangModuleDependencies` for Clang dependencies accimulated during
@@ -671,7 +679,7 @@ class ModuleDependenciesCache {
671679
Optional<ModuleDependencyKind> kind) const;
672680

673681
public:
674-
ModuleDependenciesCache(GlobalModuleDependenciesCache &globalCache,
682+
ModuleDependenciesCache(SwiftDependencyScanningService &globalScanningService,
675683
std::string mainScanModuleName,
676684
std::string scanningContextHash);
677685
ModuleDependenciesCache(const ModuleDependenciesCache &) = delete;
@@ -706,7 +714,7 @@ class ModuleDependenciesCache {
706714
ModuleDependencyInfo dependencies);
707715

708716
const std::vector<ModuleDependencyID> &getAllSourceModules() const {
709-
return globalCache.getAllSourceModules();
717+
return globalScanningService.getAllSourceModules();
710718
}
711719

712720
StringRef getMainModuleName() const {

include/swift/DependencyScan/DependencyScanningTool.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ class DependencyScanningTool {
8585

8686
/// Writes the current `SharedCache` instance to a specified FileSystem path.
8787
void serializeCache(llvm::StringRef path);
88-
/// Loads an instance of a `GlobalModuleDependenciesCache` to serve as the `SharedCache`
88+
/// Loads an instance of a `SwiftDependencyScanningService` to serve as the `SharedCache`
8989
/// from a specified FileSystem path.
9090
bool loadCache(llvm::StringRef path);
9191
/// Discard the tool's current `SharedCache` and start anew.
@@ -108,7 +108,7 @@ class DependencyScanningTool {
108108

109109
/// Shared cache of module dependencies, re-used by individual full-scan queries
110110
/// during the lifetime of this Tool.
111-
std::unique_ptr<GlobalModuleDependenciesCache> SharedCache;
111+
std::unique_ptr<SwiftDependencyScanningService> ScanningService;
112112

113113
/// Shared cache of compiler instances created during batch scanning, corresponding to
114114
/// command-line options specified in the batch scan input entry.

include/swift/DependencyScan/ScanDependencies.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ namespace swift {
2727
class CompilerInvocation;
2828
class CompilerInstance;
2929
class ModuleDependenciesCache;
30-
class GlobalModuleDependenciesCache;
30+
class SwiftDependencyScanningService;
3131

3232
namespace dependencies {
3333

3434
using CompilerArgInstanceCacheMap =
3535
llvm::StringMap<std::tuple<std::unique_ptr<CompilerInstance>,
36-
std::unique_ptr<GlobalModuleDependenciesCache>,
36+
std::unique_ptr<SwiftDependencyScanningService>,
3737
std::unique_ptr<ModuleDependenciesCache>>>;
3838

3939
struct BatchScanInput {

include/swift/DependencyScan/SerializedModuleDependencyCacheFormat.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class MemoryBuffer;
2323
namespace swift {
2424

2525
class DiagnosticEngine;
26-
class GlobalModuleDependenciesCache;
26+
class SwiftDependencyScanningService;
2727

2828
namespace dependencies {
2929
namespace module_dependency_cache_serialization {
@@ -174,23 +174,23 @@ using ClangModuleDetailsLayout =
174174
/// Tries to read the dependency graph from the given buffer.
175175
/// Returns \c true if there was an error.
176176
bool readInterModuleDependenciesCache(llvm::MemoryBuffer &buffer,
177-
GlobalModuleDependenciesCache &cache);
177+
SwiftDependencyScanningService &cache);
178178

179179
/// Tries to read the dependency graph from the given path name.
180180
/// Returns true if there was an error.
181181
bool readInterModuleDependenciesCache(llvm::StringRef path,
182-
GlobalModuleDependenciesCache &cache);
182+
SwiftDependencyScanningService &cache);
183183

184184
/// Tries to write the dependency graph to the given path name.
185185
/// Returns true if there was an error.
186186
bool writeInterModuleDependenciesCache(DiagnosticEngine &diags,
187187
llvm::StringRef path,
188-
const GlobalModuleDependenciesCache &cache);
188+
const SwiftDependencyScanningService &cache);
189189

190190
/// Tries to write out the given dependency cache with the given
191191
/// bitstream writer.
192192
void writeInterModuleDependenciesCache(llvm::BitstreamWriter &Out,
193-
const GlobalModuleDependenciesCache &cache);
193+
const SwiftDependencyScanningService &cache);
194194

195195
} // end namespace module_dependency_cache_serialization
196196
} // end namespace dependencies

include/swift/Frontend/Frontend.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,9 @@ class CompilerInstance {
495495
llvm::vfs::FileSystem &getFileSystem() const {
496496
return *SourceMgr.getFileSystem();
497497
}
498+
void setFileSystem(llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem> FS) {
499+
SourceMgr.setFileSystem(FS);
500+
}
498501

499502
ASTContext &getASTContext() { return *Context; }
500503
const ASTContext &getASTContext() const { return *Context; }

lib/AST/ModuleDependencies.cpp

Lines changed: 22 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ void ModuleDependencyInfo::addBridgingModuleDependency(
226226
}
227227
}
228228

229-
GlobalModuleDependenciesCache::GlobalModuleDependenciesCache()
229+
SwiftDependencyScanningService::SwiftDependencyScanningService()
230230
: ClangScanningService(clang::tooling::dependencies::ScanningMode::DependencyDirectivesScan,
231231
clang::tooling::dependencies::ScanningOutputFormat::Full,
232232
clang::CASOptions(),
@@ -237,7 +237,7 @@ GlobalModuleDependenciesCache::GlobalModuleDependenciesCache()
237237
SharedFilesystemCache.emplace();
238238
}
239239

240-
void GlobalModuleDependenciesCache::overlaySharedFilesystemCacheForCompilation(CompilerInstance &Instance) {
240+
void SwiftDependencyScanningService::overlaySharedFilesystemCacheForCompilation(CompilerInstance &Instance) {
241241
auto existingFS = Instance.getSourceMgr().getFileSystem();
242242
llvm::IntrusiveRefCntPtr<
243243
clang::tooling::dependencies::DependencyScanningWorkerFilesystem>
@@ -247,15 +247,15 @@ void GlobalModuleDependenciesCache::overlaySharedFilesystemCacheForCompilation(C
247247
Instance.getSourceMgr().setFileSystem(depFS);
248248
}
249249

250-
GlobalModuleDependenciesCache::ContextSpecificGlobalCacheState *
251-
GlobalModuleDependenciesCache::getCurrentCache() const {
250+
SwiftDependencyScanningService::ContextSpecificGlobalCacheState *
251+
SwiftDependencyScanningService::getCurrentCache() const {
252252
assert(CurrentContextHash.has_value() &&
253253
"Global Module Dependencies Cache not configured with Triple.");
254254
return getCacheForScanningContextHash(CurrentContextHash.value());
255255
}
256256

257-
GlobalModuleDependenciesCache::ContextSpecificGlobalCacheState *
258-
GlobalModuleDependenciesCache::getCacheForScanningContextHash(StringRef scanningContextHash) const {
257+
SwiftDependencyScanningService::ContextSpecificGlobalCacheState *
258+
SwiftDependencyScanningService::getCacheForScanningContextHash(StringRef scanningContextHash) const {
259259
auto contextSpecificCache = ContextSpecificCacheMap.find(scanningContextHash);
260260
assert(contextSpecificCache != ContextSpecificCacheMap.end() &&
261261
"Global Module Dependencies Cache not configured with context-specific "
@@ -264,7 +264,7 @@ GlobalModuleDependenciesCache::getCacheForScanningContextHash(StringRef scanning
264264
}
265265

266266
const ModuleNameToDependencyMap &
267-
GlobalModuleDependenciesCache::getDependenciesMap(
267+
SwiftDependencyScanningService::getDependenciesMap(
268268
ModuleDependencyKind kind) const {
269269
auto contextSpecificCache = getCurrentCache();
270270
auto it = contextSpecificCache->ModuleDependenciesMap.find(kind);
@@ -274,7 +274,7 @@ GlobalModuleDependenciesCache::getDependenciesMap(
274274
}
275275

276276
ModuleNameToDependencyMap &
277-
GlobalModuleDependenciesCache::getDependenciesMap(
277+
SwiftDependencyScanningService::getDependenciesMap(
278278
ModuleDependencyKind kind) {
279279
auto contextSpecificCache = getCurrentCache();
280280
auto it = contextSpecificCache->ModuleDependenciesMap.find(kind);
@@ -283,7 +283,7 @@ GlobalModuleDependenciesCache::getDependenciesMap(
283283
return it->second;
284284
}
285285

286-
void GlobalModuleDependenciesCache::configureForContextHash(std::string scanningContextHash) {
286+
void SwiftDependencyScanningService::configureForContextHash(std::string scanningContextHash) {
287287
auto knownContext = ContextSpecificCacheMap.find(scanningContextHash);
288288
if (knownContext != ContextSpecificCacheMap.end()) {
289289
// Set the current context and leave the rest as-is
@@ -303,7 +303,7 @@ void GlobalModuleDependenciesCache::configureForContextHash(std::string scanning
303303
}
304304
}
305305

306-
Optional<ModuleDependencyInfo> GlobalModuleDependenciesCache::findDependencies(
306+
Optional<ModuleDependencyInfo> SwiftDependencyScanningService::findDependencies(
307307
StringRef moduleName, Optional<ModuleDependencyKind> kind) const {
308308
if (!kind) {
309309
for (auto kind = ModuleDependencyKind::FirstKind;
@@ -329,7 +329,7 @@ Optional<ModuleDependencyInfo> GlobalModuleDependenciesCache::findDependencies(
329329
}
330330

331331
Optional<ModuleDependencyInfo>
332-
GlobalModuleDependenciesCache::findSourceModuleDependency(
332+
SwiftDependencyScanningService::findSourceModuleDependency(
333333
StringRef moduleName) const {
334334
auto known = SwiftSourceModuleDependenciesMap.find(moduleName);
335335
if (known != SwiftSourceModuleDependenciesMap.end())
@@ -338,7 +338,7 @@ GlobalModuleDependenciesCache::findSourceModuleDependency(
338338
return None;
339339
}
340340

341-
bool GlobalModuleDependenciesCache::hasDependencies(
341+
bool SwiftDependencyScanningService::hasDependencies(
342342
StringRef moduleName, Optional<ModuleDependencyKind> kind) const {
343343
assert(kind != ModuleDependencyKind::Clang &&
344344
"Attempting to query Clang dependency in persistent Dependency "
@@ -372,7 +372,7 @@ static std::string modulePathForVerification(const ModuleDependencyInfo &module)
372372
return existingModulePath;
373373
}
374374

375-
const ModuleDependencyInfo *GlobalModuleDependenciesCache::recordDependencies(
375+
const ModuleDependencyInfo *SwiftDependencyScanningService::recordDependencies(
376376
StringRef moduleName, ModuleDependencyInfo dependencies) {
377377
auto kind = dependencies.getKind();
378378
assert(kind != ModuleDependencyKind::Clang &&
@@ -397,7 +397,7 @@ const ModuleDependencyInfo *GlobalModuleDependenciesCache::recordDependencies(
397397
return &(map[moduleName]);
398398
}
399399

400-
const ModuleDependencyInfo *GlobalModuleDependenciesCache::updateDependencies(
400+
const ModuleDependencyInfo *SwiftDependencyScanningService::updateDependencies(
401401
ModuleDependencyID moduleID, ModuleDependencyInfo dependencies) {
402402
auto kind = dependencies.getKind();
403403
assert(kind != ModuleDependencyKind::Clang &&
@@ -437,14 +437,13 @@ ModuleDependenciesCache::getDependencyReferencesMap(
437437
}
438438

439439
ModuleDependenciesCache::ModuleDependenciesCache(
440-
GlobalModuleDependenciesCache &globalCache,
440+
SwiftDependencyScanningService &globalScanningService,
441441
std::string mainScanModuleName,
442-
std::string scannerContextHash)
443-
: globalCache(globalCache),
442+
std::string scanningContextHash)
443+
: globalScanningService(globalScanningService),
444444
mainScanModuleName(mainScanModuleName),
445-
scannerContextHash(scannerContextHash),
446-
clangScanningTool(globalCache.ClangScanningService) {
447-
globalCache.configureForContextHash(scannerContextHash);
445+
clangScanningTool(globalScanningService.ClangScanningService) {
446+
globalScanningService.configureForContextHash(scannerContextHash);
448447
for (auto kind = ModuleDependencyKind::FirstKind;
449448
kind != ModuleDependencyKind::LastKind; ++kind) {
450449
ModuleDependenciesMap.insert(
@@ -481,7 +480,7 @@ ModuleDependenciesCache::findDependencies(
481480
if (localResult.has_value())
482481
return *(localResult.value());
483482
else
484-
return globalCache.findDependencies(moduleName, kind);
483+
return globalScanningService.findDependencies(moduleName, kind);
485484
}
486485

487486
bool ModuleDependenciesCache::hasDependenciesLocalOnly(StringRef moduleName,
@@ -523,7 +522,7 @@ void ModuleDependenciesCache::recordDependencies(
523522

524523
} else
525524
recordedDependencies =
526-
globalCache.recordDependencies(moduleName, dependencies);
525+
globalScanningService.recordDependencies(moduleName, dependencies);
527526

528527
auto &map = getDependencyReferencesMap(dependenciesKind);
529528
assert(map.count(moduleName) == 0 && "Already added to map");
@@ -532,7 +531,7 @@ void ModuleDependenciesCache::recordDependencies(
532531

533532
void ModuleDependenciesCache::updateDependencies(
534533
ModuleDependencyID moduleID, ModuleDependencyInfo dependencies) {
535-
auto globalDepRef = globalCache.updateDependencies(moduleID, dependencies);
534+
auto globalDepRef = globalScanningService.updateDependencies(moduleID, dependencies);
536535
auto &map = getDependencyReferencesMap(moduleID.second);
537536
auto known = map.find(moduleID.first);
538537
if (known != map.end())

0 commit comments

Comments
 (0)