Skip to content

Commit a26af37

Browse files
committed
[Serialization] Add @preconcurrency bit to normal conformance descriptor
1 parent e8b7a26 commit a26af37

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

lib/Serialization/Deserialization.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -928,13 +928,15 @@ ProtocolConformanceDeserializer::readNormalProtocolConformance(
928928

929929
DeclID protoID;
930930
DeclContextID contextID;
931-
unsigned valueCount, typeCount, conformanceCount, isUnchecked;
931+
unsigned valueCount, typeCount, conformanceCount, isUnchecked,
932+
isPreconcurrency;
932933
ArrayRef<uint64_t> rawIDs;
933934

934935
NormalProtocolConformanceLayout::readRecord(scratch, protoID,
935936
contextID, typeCount,
936937
valueCount, conformanceCount,
937938
isUnchecked,
939+
isPreconcurrency,
938940
rawIDs);
939941

940942
auto doOrError = MF.getDeclContextChecked(contextID);
@@ -957,7 +959,7 @@ ProtocolConformanceDeserializer::readNormalProtocolConformance(
957959
auto conformance = ctx.getNormalConformance(
958960
conformingType, proto, SourceLoc(), dc,
959961
ProtocolConformanceState::Incomplete,
960-
isUnchecked);
962+
isUnchecked, isPreconcurrency);
961963
// Record this conformance.
962964
if (conformanceEntry.isComplete()) {
963965
assert(conformanceEntry.get() == conformance);
@@ -7989,7 +7991,8 @@ void ModuleFile::finishNormalConformance(NormalProtocolConformance *conformance,
79897991

79907992
DeclID protoID;
79917993
DeclContextID contextID;
7992-
unsigned valueCount, typeCount, conformanceCount, isUnchecked;
7994+
unsigned valueCount, typeCount, conformanceCount, isUnchecked,
7995+
isPreconcurrency;
79937996
ArrayRef<uint64_t> rawIDs;
79947997
SmallVector<uint64_t, 16> scratch;
79957998

@@ -7999,10 +8002,9 @@ void ModuleFile::finishNormalConformance(NormalProtocolConformance *conformance,
79998002
fatal(llvm::make_error<InvalidRecordKindError>(kind,
80008003
"registered lazy loader incorrectly"));
80018004

8002-
NormalProtocolConformanceLayout::readRecord(scratch, protoID,
8003-
contextID, typeCount,
8004-
valueCount, conformanceCount,
8005-
isUnchecked, rawIDs);
8005+
NormalProtocolConformanceLayout::readRecord(
8006+
scratch, protoID, contextID, typeCount, valueCount, conformanceCount,
8007+
isUnchecked, isPreconcurrency, rawIDs);
80068008

80078009
// Read requirement signature conformances.
80088010
SmallVector<ProtocolConformanceRef, 4> reqConformances;

lib/Serialization/ModuleFormat.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ const uint16_t SWIFTMODULE_VERSION_MAJOR = 0;
5858
/// describe what change you made. The content of this comment isn't important;
5959
/// it just ensures a conflict if two people change the module format.
6060
/// Don't worry about adhering to the 80-column limit for this line.
61-
const uint16_t SWIFTMODULE_VERSION_MINOR = 836; // @preconcurrency inheritance entry
61+
const uint16_t SWIFTMODULE_VERSION_MINOR = 837; // @preconcurrency conformances
6262

6363
/// A standard hash seed used for all string hashes in a serialized module.
6464
///
@@ -1960,6 +1960,7 @@ namespace decls_block {
19601960
BCVBR<5>, // value mapping count
19611961
BCVBR<5>, // requirement signature conformance count
19621962
BCFixed<1>, // unchecked
1963+
BCFixed<1>, // preconcurrency
19631964
BCArray<DeclIDField>
19641965
// The array contains requirement signature conformances, then
19651966
// type witnesses, then value witnesses.

lib/Serialization/Serialization.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,6 +1785,7 @@ void Serializer::writeLocalNormalProtocolConformance(
17851785
numValueWitnesses,
17861786
numSignatureConformances,
17871787
conformance->isUnchecked(),
1788+
conformance->isPreconcurrency(),
17881789
data);
17891790
}
17901791

0 commit comments

Comments
 (0)