@@ -47,10 +47,13 @@ using DependencySource = swift::NullablePtr<SourceFile>;
47
47
48
48
// / A \c DependencyRecorder is an aggregator of named references discovered in a
49
49
// / particular \c DependencyScope during the course of request evaluation.
50
- struct DependencyRecorder {
50
+ class DependencyRecorder {
51
51
friend DependencyCollector;
52
52
53
- private:
53
+ // / Whether we are performing an incremental build and should therefore
54
+ // / record request references.
55
+ bool shouldRecord;
56
+
54
57
// / References recorded while evaluating a dependency source request for each
55
58
// / source file. This map is updated upon completion of a dependency source
56
59
// / request, and includes all references from each downstream request as well.
@@ -82,6 +85,8 @@ struct DependencyRecorder {
82
85
#endif
83
86
84
87
public:
88
+ DependencyRecorder (bool shouldRecord) : shouldRecord(shouldRecord) {}
89
+
85
90
// / Push a new empty set onto the activeRequestReferences stack.
86
91
template <typename Request>
87
92
void beginRequest ();
@@ -131,6 +136,9 @@ struct DependencyRecorder {
131
136
132
137
template <typename Request>
133
138
void evaluator::DependencyRecorder::beginRequest () {
139
+ if (!shouldRecord)
140
+ return ;
141
+
134
142
if (!Request::isEverCached && !Request::isDependencySource)
135
143
return ;
136
144
@@ -139,6 +147,9 @@ void evaluator::DependencyRecorder::beginRequest() {
139
147
140
148
template <typename Request>
141
149
void evaluator::DependencyRecorder::endRequest (const Request &req) {
150
+ if (!shouldRecord)
151
+ return ;
152
+
142
153
if (!Request::isEverCached && !Request::isDependencySource)
143
154
return ;
144
155
@@ -170,6 +181,9 @@ template<typename Request>
170
181
void evaluator::DependencyRecorder::replayCachedRequest (const Request &req) {
171
182
assert (req.isCached ());
172
183
184
+ if (!shouldRecord)
185
+ return ;
186
+
173
187
if (activeRequestReferences.empty ())
174
188
return ;
175
189
0 commit comments