Skip to content

Commit f707f70

Browse files
committed
[NFC] Tweaked GenPack organization.
Moved a few static helpers to the top.
1 parent 5cb91af commit f707f70

File tree

1 file changed

+42
-42
lines changed

1 file changed

+42
-42
lines changed

lib/IRGen/GenPack.cpp

Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,48 @@
3333
using namespace swift;
3434
using namespace irgen;
3535

36+
static CanPackArchetypeType
37+
getForwardedPackArchetypeType(CanPackType packType) {
38+
if (packType->getNumElements() != 1)
39+
return CanPackArchetypeType();
40+
auto uncastElement = packType.getElementType(0);
41+
auto element = dyn_cast<PackExpansionType>(uncastElement);
42+
if (!element)
43+
return CanPackArchetypeType();
44+
auto patternType = element.getPatternType();
45+
auto packArchetype = dyn_cast<PackArchetypeType>(patternType);
46+
return packArchetype;
47+
}
48+
49+
static MetadataResponse
50+
tryGetLocalPackTypeMetadata(IRGenFunction &IGF, CanPackType packType,
51+
DynamicMetadataRequest request) {
52+
if (auto result = IGF.tryGetLocalTypeMetadata(packType, request))
53+
return result;
54+
55+
if (auto packArchetypeType = getForwardedPackArchetypeType(packType)) {
56+
if (auto result = IGF.tryGetLocalTypeMetadata(packArchetypeType, request))
57+
return result;
58+
}
59+
60+
return MetadataResponse();
61+
}
62+
63+
static llvm::Value *tryGetLocalPackTypeData(IRGenFunction &IGF,
64+
CanPackType packType,
65+
LocalTypeDataKind localDataKind) {
66+
if (auto *wtable = IGF.tryGetLocalTypeData(packType, localDataKind))
67+
return wtable;
68+
69+
if (auto packArchetypeType = getForwardedPackArchetypeType(packType)) {
70+
if (auto *wtable =
71+
IGF.tryGetLocalTypeData(packArchetypeType, localDataKind))
72+
return wtable;
73+
}
74+
75+
return nullptr;
76+
}
77+
3678
static void accumulateSum(IRGenFunction &IGF, llvm::Value *&result,
3779
llvm::Value *value) {
3880
if (result == nullptr) {
@@ -324,33 +366,6 @@ irgen::emitTypeMetadataPack(IRGenFunction &IGF,
324366
return pack;
325367
}
326368

327-
static CanPackArchetypeType
328-
getForwardedPackArchetypeType(CanPackType packType) {
329-
if (packType->getNumElements() != 1)
330-
return CanPackArchetypeType();
331-
auto uncastElement = packType.getElementType(0);
332-
auto element = dyn_cast<PackExpansionType>(uncastElement);
333-
if (!element)
334-
return CanPackArchetypeType();
335-
auto patternType = element.getPatternType();
336-
auto packArchetype = dyn_cast<PackArchetypeType>(patternType);
337-
return packArchetype;
338-
}
339-
340-
static MetadataResponse
341-
tryGetLocalPackTypeMetadata(IRGenFunction &IGF, CanPackType packType,
342-
DynamicMetadataRequest request) {
343-
if (auto result = IGF.tryGetLocalTypeMetadata(packType, request))
344-
return result;
345-
346-
if (auto packArchetypeType = getForwardedPackArchetypeType(packType)) {
347-
if (auto result = IGF.tryGetLocalTypeMetadata(packArchetypeType, request))
348-
return result;
349-
}
350-
351-
return MetadataResponse();
352-
}
353-
354369
MetadataResponse
355370
irgen::emitTypeMetadataPackRef(IRGenFunction &IGF, CanPackType packType,
356371
DynamicMetadataRequest request) {
@@ -565,21 +580,6 @@ void irgen::cleanupWitnessTablePack(IRGenFunction &IGF, StackAddress pack,
565580
}
566581
}
567582

568-
static llvm::Value *tryGetLocalPackTypeData(IRGenFunction &IGF,
569-
CanPackType packType,
570-
LocalTypeDataKind localDataKind) {
571-
if (auto *wtable = IGF.tryGetLocalTypeData(packType, localDataKind))
572-
return wtable;
573-
574-
if (auto packArchetypeType = getForwardedPackArchetypeType(packType)) {
575-
if (auto *wtable =
576-
IGF.tryGetLocalTypeData(packArchetypeType, localDataKind))
577-
return wtable;
578-
}
579-
580-
return nullptr;
581-
}
582-
583583
llvm::Value *irgen::emitWitnessTablePackRef(IRGenFunction &IGF,
584584
CanPackType packType,
585585
PackConformance *conformance) {

0 commit comments

Comments
 (0)