Front-end: add an option to not lock interface file when building module

This could help fix a flaky test.

Related to: rdar://58578342
This commit is contained in:
Xi Ge
2020-02-25 11:11:31 -08:00
parent 853c0f545b
commit 8c2a041822
10 changed files with 56 additions and 17 deletions

View File

@@ -134,17 +134,20 @@ class ModuleInterfaceLoader : public SerializedModuleLoaderBase {
ASTContext &ctx, StringRef cacheDir, StringRef prebuiltCacheDir,
DependencyTracker *tracker, ModuleLoadingMode loadMode,
ArrayRef<std::string> PreferInterfaceForModules,
bool RemarkOnRebuildFromInterface, bool IgnoreSwiftSourceInfoFile)
bool RemarkOnRebuildFromInterface, bool IgnoreSwiftSourceInfoFile,
bool DisableInterfaceFileLock)
: SerializedModuleLoaderBase(ctx, tracker, loadMode,
IgnoreSwiftSourceInfoFile),
CacheDir(cacheDir), PrebuiltCacheDir(prebuiltCacheDir),
RemarkOnRebuildFromInterface(RemarkOnRebuildFromInterface),
DisableInterfaceFileLock(DisableInterfaceFileLock),
PreferInterfaceForModules(PreferInterfaceForModules)
{}
std::string CacheDir;
std::string PrebuiltCacheDir;
bool RemarkOnRebuildFromInterface;
bool DisableInterfaceFileLock;
ArrayRef<std::string> PreferInterfaceForModules;
std::error_code findModuleFilesInDirectory(
@@ -163,13 +166,15 @@ public:
DependencyTracker *tracker, ModuleLoadingMode loadMode,
ArrayRef<std::string> PreferInterfaceForModules = {},
bool RemarkOnRebuildFromInterface = false,
bool IgnoreSwiftSourceInfoFile = false) {
bool IgnoreSwiftSourceInfoFile = false,
bool DisableInterfaceFileLock = false) {
return std::unique_ptr<ModuleInterfaceLoader>(
new ModuleInterfaceLoader(ctx, cacheDir, prebuiltCacheDir,
tracker, loadMode,
PreferInterfaceForModules,
RemarkOnRebuildFromInterface,
IgnoreSwiftSourceInfoFile));
IgnoreSwiftSourceInfoFile,
DisableInterfaceFileLock));
}
/// Append visible module names to \p names. Note that names are possibly
@@ -187,7 +192,7 @@ public:
StringRef CacheDir, StringRef PrebuiltCacheDir,
StringRef ModuleName, StringRef InPath, StringRef OutPath,
bool SerializeDependencyHashes, bool TrackSystemDependencies,
bool RemarkOnRebuildFromInterface);
bool RemarkOnRebuildFromInterface, bool DisableInterfaceFileLock);
};
/// Extract the specified-or-defaulted -module-cache-path that winds up in