Skip to content

Commit 850118c

Browse files
committed
[evaluator] Avoid recording dependency sources and sinks when disabled
Short-circuit the logic here early to avoid the dependency logic if recording is disabled.
1 parent 8e84e6a commit 850118c

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

include/swift/AST/Evaluator.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,8 @@ class Evaluator {
414414
typename std::enable_if<Request::isDependencySink>::type * = nullptr>
415415
void handleDependencySinkRequest(const Request &r,
416416
const typename Request::OutputType &o) {
417+
if (!recorder.isRecordingEnabled())
418+
return;
417419
evaluator::DependencyCollector collector(recorder);
418420
r.writeDependencySink(collector, o);
419421
}
@@ -425,6 +427,8 @@ class Evaluator {
425427
template <typename Request,
426428
typename std::enable_if<Request::isDependencySource>::type * = nullptr>
427429
void handleDependencySourceRequest(const Request &r) {
430+
if (!recorder.isRecordingEnabled())
431+
return;
428432
auto source = r.readDependencySource(recorder);
429433
if (!source.isNull() && source.get()->isPrimary()) {
430434
recorder.handleDependencySourceRequest(r, source.get());

include/swift/AST/EvaluatorDependencies.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,9 @@ class DependencyRecorder {
9494
public:
9595
DependencyRecorder(bool shouldRecord) : shouldRecord(shouldRecord) {}
9696

97+
/// Whether dependency recording is enabled.
98+
bool isRecordingEnabled() const { return shouldRecord; }
99+
97100
/// Push a new empty set onto the activeRequestReferences stack.
98101
template<typename Request>
99102
void beginRequest();

0 commit comments

Comments
 (0)