@@ -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:
@@ -587,14 +599,6 @@ class NormalProtocolConformance : public RootProtocolConformance,
587
599
// Record the explicitly-specified global actor isolation.
588
600
void setExplicitGlobalActorIsolation (TypeExpr *typeExpr);
589
601
590
- bool isComputedNonisolated () const {
591
- return Bits.NormalProtocolConformance .IsComputedNonisolated ;
592
- }
593
-
594
- void setComputedNonnisolated (bool value = true ) {
595
- Bits.NormalProtocolConformance .IsComputedNonisolated = value;
596
- }
597
-
598
602
public:
599
603
NormalProtocolConformance (Type conformingType, ProtocolDecl *protocol,
600
604
SourceLoc loc, DeclContext *dc,
@@ -618,7 +622,6 @@ class NormalProtocolConformance : public RootProtocolConformance,
618
622
Bits.NormalProtocolConformance .HasComputedAssociatedConformances = false ;
619
623
Bits.NormalProtocolConformance .SourceKind =
620
624
unsigned (ConformanceEntryKind::Explicit);
621
- Bits.NormalProtocolConformance .IsComputedNonisolated = false ;
622
625
Bits.NormalProtocolConformance .HasExplicitGlobalActor = false ;
623
626
setExplicitGlobalActorIsolation (options.getGlobalActorIsolationType ());
624
627
}
0 commit comments