@@ -44,7 +44,7 @@ class Deserializer {
44
44
45
45
public:
46
46
Deserializer (llvm::MemoryBufferRef Data) : Cursor(Data) {}
47
- bool readFineGrainedDependencyGraph (SourceFileDepGraph &g, bool standalone );
47
+ bool readFineGrainedDependencyGraph (SourceFileDepGraph &g, Purpose purpose );
48
48
bool readFineGrainedDependencyGraphFromSwiftModule (SourceFileDepGraph &g);
49
49
};
50
50
@@ -152,14 +152,23 @@ static llvm::Optional<DeclAspect> getDeclAspect(unsigned declAspect) {
152
152
}
153
153
154
154
bool Deserializer::readFineGrainedDependencyGraph (SourceFileDepGraph &g,
155
- bool standalone ) {
155
+ Purpose purpose ) {
156
156
using namespace record_block ;
157
157
158
- if (standalone && readSignature ())
159
- return true ;
158
+ switch (purpose) {
159
+ case Purpose::ForSwiftDeps:
160
+ if (readSignature ())
161
+ return true ;
160
162
161
- if (standalone && enterTopLevelBlock ())
162
- return true ;
163
+ if (enterTopLevelBlock ())
164
+ return true ;
165
+ LLVM_FALLTHROUGH;
166
+ case Purpose::ForSwiftModule:
167
+ // N.B. Incremental metadata embedded in swiftmodule files does not have
168
+ // a leading signature, and its top-level block has already been
169
+ // consumed by the time we get here.
170
+ break ;
171
+ }
163
172
164
173
if (readMetadata ())
165
174
return true ;
@@ -261,7 +270,7 @@ bool Deserializer::readFineGrainedDependencyGraph(SourceFileDepGraph &g,
261
270
bool swift::fine_grained_dependencies::readFineGrainedDependencyGraph (
262
271
llvm::MemoryBuffer &buffer, SourceFileDepGraph &g) {
263
272
Deserializer deserializer (buffer.getMemBufferRef ());
264
- return deserializer.readFineGrainedDependencyGraph (g, /* standalone */ true );
273
+ return deserializer.readFineGrainedDependencyGraph (g, Purpose::ForSwiftDeps );
265
274
}
266
275
267
276
bool swift::fine_grained_dependencies::readFineGrainedDependencyGraph (
@@ -324,7 +333,7 @@ class Serializer {
324
333
325
334
public:
326
335
void writeFineGrainedDependencyGraph (const SourceFileDepGraph &g,
327
- bool standalone );
336
+ Purpose purpose );
328
337
};
329
338
330
339
} // end namespace
@@ -385,13 +394,19 @@ void Serializer::writeMetadata() {
385
394
386
395
void
387
396
Serializer::writeFineGrainedDependencyGraph (const SourceFileDepGraph &g,
388
- bool standalone) {
389
- auto blockID = INCREMENTAL_INFORMATION_BLOCK_ID;
390
- if (standalone) {
397
+ Purpose purpose) {
398
+ unsigned blockID = 0 ;
399
+ switch (purpose) {
400
+ case Purpose::ForSwiftDeps:
391
401
writeSignature ();
392
402
writeBlockInfoBlock ();
393
403
blockID = RECORD_BLOCK_ID;
404
+ break ;
405
+ case Purpose::ForSwiftModule:
406
+ blockID = INCREMENTAL_INFORMATION_BLOCK_ID;
407
+ break ;
394
408
}
409
+
395
410
llvm::BCBlockRAII restoreBlock (Out, blockID, 8 );
396
411
397
412
using namespace record_block ;
@@ -474,9 +489,10 @@ unsigned Serializer::getIdentifier(StringRef str) {
474
489
}
475
490
476
491
void swift::fine_grained_dependencies::writeFineGrainedDependencyGraph (
477
- llvm::BitstreamWriter &Out, const SourceFileDepGraph &g, bool standalone) {
492
+ llvm::BitstreamWriter &Out, const SourceFileDepGraph &g,
493
+ Purpose purpose) {
478
494
Serializer serializer{Out};
479
- serializer.writeFineGrainedDependencyGraph (g, standalone );
495
+ serializer.writeFineGrainedDependencyGraph (g, purpose );
480
496
}
481
497
482
498
bool swift::fine_grained_dependencies::writeFineGrainedDependencyGraphToPath (
@@ -486,7 +502,7 @@ bool swift::fine_grained_dependencies::writeFineGrainedDependencyGraphToPath(
486
502
return withOutputFile (diags, path, [&](llvm::raw_ostream &out) {
487
503
SmallVector<char , 0 > Buffer;
488
504
llvm::BitstreamWriter Writer{Buffer};
489
- writeFineGrainedDependencyGraph (Writer, g, /* standalone */ true );
505
+ writeFineGrainedDependencyGraph (Writer, g, Purpose::ForSwiftDeps );
490
506
out.write (Buffer.data (), Buffer.size ());
491
507
out.flush ();
492
508
return false ;
@@ -578,7 +594,7 @@ bool Deserializer::readFineGrainedDependencyGraphFromSwiftModule(
578
594
consumeError (std::move (Err));
579
595
return false ;
580
596
}
581
- if (readFineGrainedDependencyGraph (g, /* standalone */ false )) {
597
+ if (readFineGrainedDependencyGraph (g, Purpose::ForSwiftModule )) {
582
598
break ;
583
599
}
584
600
0 commit comments