mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Caching] Add fast swift instance setup for cache replay
Add a fast path to create swift CompilerInstance when it is only used to replay output when there is a cache hit. The normal `setup` function is very expensive to call, especially in cache mode to setup inputs, and it needs to be called once per input file from libSwiftScan API due to the current caching granularity. The fast path will only construct the part that is needed for output replay, including the CAS, the output backend and caching diagnostic processor. rdar://127062609
This commit is contained in:
@@ -562,6 +562,23 @@ bool CompilerInstance::setup(const CompilerInvocation &Invoke,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CompilerInstance::setupForReplay(const CompilerInvocation &Invoke,
|
||||
std::string &Error,
|
||||
ArrayRef<const char *> Args) {
|
||||
// This is the fast path for setup an instance for replay but cannot run
|
||||
// regular compilation.
|
||||
Invocation = Invoke;
|
||||
|
||||
if (setupCASIfNeeded(Args)) {
|
||||
Error = "Setting up CAS failed";
|
||||
return true;
|
||||
}
|
||||
|
||||
setupOutputBackend();
|
||||
setupCachingDiagnosticsProcessorIfNeeded();
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CompilerInstance::setUpVirtualFileSystemOverlays() {
|
||||
if (Invocation.getCASOptions().requireCASFS()) {
|
||||
const auto &Opts = getInvocation().getCASOptions();
|
||||
|
||||
Reference in New Issue
Block a user