Skip to content

Commit 11dfc1c

Browse files
committed
IRGen: Don't pass around a ModuleDecl for mangling typerefs
1 parent a8b1723 commit 11dfc1c

File tree

4 files changed

+15
-22
lines changed

4 files changed

+15
-22
lines changed

lib/IRGen/GenReflection.cpp

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -203,16 +203,15 @@ class ReflectionMetadataBuilder {
203203

204204
/// Add a 32-bit relative offset to a mangled typeref string
205205
/// in the typeref reflection section.
206-
void addTypeRef(ModuleDecl *ModuleContext, CanType type) {
206+
void addTypeRef(CanType type) {
207207
assert(type);
208208

209209
// Generic parameters should be written in terms of interface types
210210
// for the purposes of reflection metadata
211211
assert(!type->hasArchetype() && "Forgot to map typeref out of context");
212212

213213
IRGenMangler mangler;
214-
auto MangledStr = mangler.mangleTypeForReflection(IGM, type,
215-
ModuleContext);
214+
auto MangledStr = mangler.mangleTypeForReflection(IGM, type);
216215
auto mangledName = IGM.getAddrOfStringForTypeRef(MangledStr);
217216
B.addRelativeAddress(mangledName);
218217
}
@@ -227,7 +226,7 @@ class ReflectionMetadataBuilder {
227226
} else {
228227
CanType type = nominal->getDeclaredType()->getCanonicalType();
229228
mangledStr =
230-
mangler.mangleTypeForReflection(IGM, type, nominal->getModuleContext());
229+
mangler.mangleTypeForReflection(IGM, type);
231230
}
232231
auto mangledName = IGM.getAddrOfStringForTypeRef(mangledStr);
233232
B.addRelativeAddress(mangledName);
@@ -284,9 +283,7 @@ class AssociatedTypeMetadataBuilder : public ReflectionMetadataBuilder {
284283
PrettyStackTraceDecl DebugStack("emitting associated type metadata",
285284
Nominal);
286285

287-
auto *M = IGM.getSILModule().getSwiftModule();
288-
289-
addTypeRef(M, Nominal->getDeclaredType()->getCanonicalType());
286+
addTypeRef(Nominal->getDeclaredType()->getCanonicalType());
290287
addNominalRef(Conformance->getProtocol());
291288

292289
B.addInt32(AssociatedTypes.size());
@@ -296,7 +293,7 @@ class AssociatedTypeMetadataBuilder : public ReflectionMetadataBuilder {
296293
auto NameGlobal = IGM.getAddrOfFieldName(AssocTy.first);
297294
B.addRelativeAddress(NameGlobal);
298295
addBuiltinTypeRefs(AssocTy.second);
299-
addTypeRef(M, AssocTy.second);
296+
addTypeRef(AssocTy.second);
300297
}
301298
}
302299

@@ -330,7 +327,7 @@ class FieldTypeMetadataBuilder : public ReflectionMetadataBuilder {
330327
if (!type) {
331328
B.addInt32(0);
332329
} else {
333-
addTypeRef(value->getModuleContext(), type);
330+
addTypeRef(type);
334331
addBuiltinTypeRefs(type);
335332
}
336333

@@ -436,8 +433,7 @@ class FieldTypeMetadataBuilder : public ReflectionMetadataBuilder {
436433

437434
auto *CD = dyn_cast<ClassDecl>(NTD);
438435
if (CD && CD->getSuperclass()) {
439-
addTypeRef(NTD->getModuleContext(),
440-
CD->getSuperclass()->getCanonicalType());
436+
addTypeRef(CD->getSuperclass()->getCanonicalType());
441437
} else {
442438
B.addInt32(0);
443439
}
@@ -499,7 +495,7 @@ class FixedTypeMetadataBuilder : public ReflectionMetadataBuilder {
499495
}
500496

501497
void layout() override {
502-
addTypeRef(module, type);
498+
addTypeRef(type);
503499

504500
B.addInt32(ti->getFixedSize().getValue());
505501
B.addInt32(ti->getFixedAlignment().getValue());
@@ -549,7 +545,7 @@ class BoxDescriptorBuilder : public ReflectionMetadataBuilder {
549545
B.addInt32(0); // Number of sources
550546
B.addInt32(0); // Number of generic bindings
551547

552-
addTypeRef(IGM.getSILModule().getSwiftModule(), BoxedType);
548+
addTypeRef(BoxedType);
553549
addBuiltinTypeRefs(BoxedType);
554550
}
555551

@@ -742,7 +738,7 @@ class CaptureDescriptorBuilder : public ReflectionMetadataBuilder {
742738

743739
// Now add typerefs of all of the captures.
744740
for (auto CaptureType : CaptureTypes) {
745-
addTypeRef(IGM.getSILModule().getSwiftModule(), CaptureType);
741+
addTypeRef(CaptureType);
746742
addBuiltinTypeRefs(CaptureType);
747743
}
748744

@@ -752,7 +748,7 @@ class CaptureDescriptorBuilder : public ReflectionMetadataBuilder {
752748
auto GenericParam = GenericAndSource.first->getCanonicalType();
753749
auto Source = GenericAndSource.second;
754750

755-
addTypeRef(nullptr, GenericParam);
751+
addTypeRef(GenericParam);
756752
addMetadataSource(Source);
757753
}
758754
}

lib/IRGen/IRGenMangler.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,8 @@ std::string IRGenMangler::manglePartialApplyForwarder(StringRef FuncName) {
8181

8282
SymbolicMangling
8383
IRGenMangler::mangleTypeForReflection(IRGenModule &IGM,
84-
Type Ty,
85-
ModuleDecl *Module) {
86-
Mod = Module;
84+
Type Ty) {
85+
Mod = IGM.getSwiftModule();
8786
OptimizeProtocolNames = false;
8887

8988
llvm::SaveAndRestore<std::function<bool (const DeclContext *)>>

lib/IRGen/IRGenMangler.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -354,8 +354,7 @@ class IRGenMangler : public Mangle::ASTMangler {
354354
}
355355

356356
SymbolicMangling mangleTypeForReflection(IRGenModule &IGM,
357-
Type Ty,
358-
ModuleDecl *Module);
357+
Type Ty);
359358

360359
std::string mangleTypeForLLVMTypeName(CanType Ty);
361360

lib/IRGen/MetadataRequest.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,7 @@ llvm::Constant *IRGenModule::getAddrOfStringForTypeRef(
302302
// It should be removed when fixed. rdar://problem/22674524
303303
llvm::Constant *irgen::getTypeRef(IRGenModule &IGM, CanType type) {
304304
IRGenMangler Mangler;
305-
auto SymbolicName = Mangler.mangleTypeForReflection(IGM, type,
306-
IGM.getSwiftModule());
305+
auto SymbolicName = Mangler.mangleTypeForReflection(IGM, type);
307306

308307
return IGM.getAddrOfStringForTypeRef(SymbolicName);
309308
}

0 commit comments

Comments
 (0)