@@ -131,6 +131,8 @@ class alignas(1 << DeclAlignInBits) ProtocolConformance
131
131
// / conformance definition.
132
132
Type ConformingType;
133
133
134
+ friend class ConformanceIsolationRequest ;
135
+
134
136
protected:
135
137
// clang-format off
136
138
//
@@ -139,9 +141,13 @@ class alignas(1 << DeclAlignInBits) ProtocolConformance
139
141
union { uint64_t OpaqueBits;
140
142
141
143
SWIFT_INLINE_BITFIELD_BASE (ProtocolConformance,
144
+ 1 +
142
145
bitmax (NumProtocolConformanceKindBits, 8 ),
143
146
// / The kind of protocol conformance.
144
- Kind : bitmax (NumProtocolConformanceKindBits, 8 )
147
+ Kind : bitmax (NumProtocolConformanceKindBits, 8 ),
148
+
149
+ // / Whether the computed actor isolation is nonisolated.
150
+ IsComputedNonisolated : 1
145
151
);
146
152
147
153
SWIFT_INLINE_BITFIELD_EMPTY (RootProtocolConformance, ProtocolConformance);
@@ -161,9 +167,6 @@ class alignas(1 << DeclAlignInBits) ProtocolConformance
161
167
// / this conformance.
162
168
IsPreconcurrencyEffectful : 1 ,
163
169
164
- // / Whether the computed actor isolation is nonisolated.
165
- IsComputedNonisolated : 1 ,
166
-
167
170
// / Whether there is an explicit global actor specified for this
168
171
// / conformance.
169
172
HasExplicitGlobalActor : 1 ,
@@ -198,6 +201,15 @@ class alignas(1 << DeclAlignInBits) ProtocolConformance
198
201
ProtocolConformance (ProtocolConformanceKind kind, Type conformingType)
199
202
: ConformingType (conformingType) {
200
203
Bits.ProtocolConformance .Kind = unsigned (kind);
204
+ Bits.ProtocolConformance .IsComputedNonisolated = false ;
205
+ }
206
+
207
+ bool isComputedNonisolated () const {
208
+ return Bits.ProtocolConformance .IsComputedNonisolated ;
209
+ }
210
+
211
+ void setComputedNonnisolated (bool value = true ) {
212
+ Bits.ProtocolConformance .IsComputedNonisolated = value;
201
213
}
202
214
203
215
public:
@@ -591,14 +603,6 @@ class NormalProtocolConformance : public RootProtocolConformance,
591
603
// Record the explicitly-specified global actor isolation.
592
604
void setExplicitGlobalActorIsolation (TypeExpr *typeExpr);
593
605
594
- bool isComputedNonisolated () const {
595
- return Bits.NormalProtocolConformance .IsComputedNonisolated ;
596
- }
597
-
598
- void setComputedNonnisolated (bool value = true ) {
599
- Bits.NormalProtocolConformance .IsComputedNonisolated = value;
600
- }
601
-
602
606
public:
603
607
NormalProtocolConformance (Type conformingType, ProtocolDecl *protocol,
604
608
SourceLoc loc, DeclContext *dc,
@@ -622,7 +626,6 @@ class NormalProtocolConformance : public RootProtocolConformance,
622
626
Bits.NormalProtocolConformance .HasComputedAssociatedConformances = false ;
623
627
Bits.NormalProtocolConformance .SourceKind =
624
628
unsigned (ConformanceEntryKind::Explicit);
625
- Bits.NormalProtocolConformance .IsComputedNonisolated = false ;
626
629
Bits.NormalProtocolConformance .HasExplicitGlobalActor = false ;
627
630
setExplicitGlobalActorIsolation (options.getGlobalActorIsolationType ());
628
631
}
0 commit comments