[Dependency Scanning] Optionally, resolve direct dependencies of a module using only the ModuleDependenciesCache
.
#35356
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This speeds up contexts where we need to resolve dependencies after the main scanning action is complete.
For example: libSwiftScan binary graph generation and cycle detection.
This is necessary because ordinarily, ModuleDependenciesCache must be queried on a per-loader basis.
For example:
SerializedModuleLoaderBase
, at which point we check the cache for previously-found Swift modules. If cache is not hit, we search the filesystem.ClangImporter
, at which point we check the cache for previously-found Clang modules. If cache is not hit, we search the filesystem.This change allows to eliminate a bunch of filesystem searching in step (1) when a Clang modules is in the cache and we know we have completed the scan and no longer need to be concerned with the possibility that we will discover a new Swift module that will have a higher precedence in the cache query order.