@@ -122,23 +122,22 @@ class GlobalCtorDtorScraper {
122
122
class GenericLLVMIRPlatformSupport : public LLJIT ::PlatformSupport {
123
123
public:
124
124
// GenericLLVMIRPlatform &P) : P(P) {
125
- GenericLLVMIRPlatformSupport (LLJIT &J) : J(J) {
126
-
127
- MangleAndInterner Mangle (getExecutionSession (), J.getDataLayout ());
128
- InitFunctionPrefix = Mangle (" __orc_init_func." );
125
+ GenericLLVMIRPlatformSupport (LLJIT &J)
126
+ : J(J), InitFunctionPrefix(J.mangle(" __orc_init_func." )) {
129
127
130
128
getExecutionSession ().setPlatform (
131
129
std::make_unique<GenericLLVMIRPlatform>(*this ));
132
130
133
- setInitTransform (J, GlobalCtorDtorScraper (*this , * InitFunctionPrefix));
131
+ setInitTransform (J, GlobalCtorDtorScraper (*this , InitFunctionPrefix));
134
132
135
133
SymbolMap StdInterposes;
136
134
137
- StdInterposes[Mangle (" __lljit.platform_support_instance" )] =
135
+ StdInterposes[J. mangleAndIntern (" __lljit.platform_support_instance" )] =
138
136
JITEvaluatedSymbol (pointerToJITTargetAddress (this ),
139
137
JITSymbolFlags::Exported);
140
- StdInterposes[Mangle (" __lljit.cxa_atexit_helper" )] = JITEvaluatedSymbol (
141
- pointerToJITTargetAddress (registerAtExitHelper), JITSymbolFlags ());
138
+ StdInterposes[J.mangleAndIntern (" __lljit.cxa_atexit_helper" )] =
139
+ JITEvaluatedSymbol (pointerToJITTargetAddress (registerAtExitHelper),
140
+ JITSymbolFlags ());
142
141
143
142
cantFail (
144
143
J.getMainJITDylib ().define (absoluteSymbols (std::move (StdInterposes))));
@@ -152,10 +151,10 @@ class GenericLLVMIRPlatformSupport : public LLJIT::PlatformSupport {
152
151
Error setupJITDylib (JITDylib &JD) {
153
152
154
153
// Add per-jitdylib standard interposes.
155
- MangleAndInterner Mangle (getExecutionSession (), J.getDataLayout ());
156
154
SymbolMap PerJDInterposes;
157
- PerJDInterposes[Mangle (" __lljit.run_atexits_helper" )] = JITEvaluatedSymbol (
158
- pointerToJITTargetAddress (runAtExitsHelper), JITSymbolFlags ());
155
+ PerJDInterposes[J.mangleAndIntern (" __lljit.run_atexits_helper" )] =
156
+ JITEvaluatedSymbol (pointerToJITTargetAddress (runAtExitsHelper),
157
+ JITSymbolFlags ());
159
158
cantFail (JD.define (absoluteSymbols (std::move (PerJDInterposes))));
160
159
161
160
auto Ctx = std::make_unique<LLVMContext>();
@@ -197,7 +196,7 @@ class GenericLLVMIRPlatformSupport : public LLJIT::PlatformSupport {
197
196
// will trigger a lookup to materialize the module) and the InitFunctions
198
197
// map (which holds the names of the symbols to execute).
199
198
for (auto &KV : MU.getSymbols ())
200
- if ((*KV.first ).startswith (* InitFunctionPrefix)) {
199
+ if ((*KV.first ).startswith (InitFunctionPrefix)) {
201
200
InitSymbols[&JD].add (KV.first ,
202
201
SymbolLookupFlags::WeaklyReferencedSymbol);
203
202
InitFunctions[&JD].add (KV.first );
@@ -308,8 +307,7 @@ class GenericLLVMIRPlatformSupport : public LLJIT::PlatformSupport {
308
307
Expected<std::vector<JITTargetAddress>> getDeinitializers (JITDylib &JD) {
309
308
auto &ES = getExecutionSession ();
310
309
311
- MangleAndInterner Mangle (getExecutionSession (), J.getDataLayout ());
312
- auto LLJITRunAtExits = Mangle (" __lljit_run_atexits" );
310
+ auto LLJITRunAtExits = J.mangleAndIntern (" __lljit_run_atexits" );
313
311
314
312
DenseMap<JITDylib *, SymbolLookupSet> LookupSymbols;
315
313
std::vector<JITDylib *> DFSLinkOrder;
@@ -459,7 +457,7 @@ class GenericLLVMIRPlatformSupport : public LLJIT::PlatformSupport {
459
457
}
460
458
461
459
LLJIT &J;
462
- SymbolStringPtr InitFunctionPrefix;
460
+ std::string InitFunctionPrefix;
463
461
DenseMap<JITDylib *, SymbolLookupSet> InitSymbols;
464
462
DenseMap<JITDylib *, SymbolLookupSet> InitFunctions;
465
463
DenseMap<JITDylib *, SymbolLookupSet> DeInitFunctions;
@@ -653,26 +651,31 @@ class MachOPlatformSupport : public LLJIT::PlatformSupport {
653
651
MachOPlatformSupport (LLJIT &J, JITDylib &PlatformJITDylib, DlFcnValues DlFcn)
654
652
: J(J), MP(setupPlatform(J)), DlFcn(std::move(DlFcn)) {
655
653
656
- MangleAndInterner Mangle (J.getExecutionSession (), J.getDataLayout ());
657
654
SymbolMap HelperSymbols;
658
655
659
656
// platform and atexit helpers.
660
- HelperSymbols[Mangle (" __lljit.platform_support_instance" )] =
657
+ HelperSymbols[J. mangleAndIntern (" __lljit.platform_support_instance" )] =
661
658
JITEvaluatedSymbol (pointerToJITTargetAddress (this ), JITSymbolFlags ());
662
- HelperSymbols[Mangle (" __lljit.cxa_atexit_helper" )] = JITEvaluatedSymbol (
663
- pointerToJITTargetAddress (registerAtExitHelper), JITSymbolFlags ());
664
- HelperSymbols[Mangle (" __lljit.run_atexits_helper" )] = JITEvaluatedSymbol (
665
- pointerToJITTargetAddress (runAtExitsHelper), JITSymbolFlags ());
659
+ HelperSymbols[J.mangleAndIntern (" __lljit.cxa_atexit_helper" )] =
660
+ JITEvaluatedSymbol (pointerToJITTargetAddress (registerAtExitHelper),
661
+ JITSymbolFlags ());
662
+ HelperSymbols[J.mangleAndIntern (" __lljit.run_atexits_helper" )] =
663
+ JITEvaluatedSymbol (pointerToJITTargetAddress (runAtExitsHelper),
664
+ JITSymbolFlags ());
666
665
667
666
// dlfcn helpers.
668
- HelperSymbols[Mangle (" __lljit.dlopen_helper" )] = JITEvaluatedSymbol (
669
- pointerToJITTargetAddress (dlopenHelper), JITSymbolFlags ());
670
- HelperSymbols[Mangle (" __lljit.dlclose_helper" )] = JITEvaluatedSymbol (
671
- pointerToJITTargetAddress (dlcloseHelper), JITSymbolFlags ());
672
- HelperSymbols[Mangle (" __lljit.dlsym_helper" )] = JITEvaluatedSymbol (
673
- pointerToJITTargetAddress (dlsymHelper), JITSymbolFlags ());
674
- HelperSymbols[Mangle (" __lljit.dlerror_helper" )] = JITEvaluatedSymbol (
675
- pointerToJITTargetAddress (dlerrorHelper), JITSymbolFlags ());
667
+ HelperSymbols[J.mangleAndIntern (" __lljit.dlopen_helper" )] =
668
+ JITEvaluatedSymbol (pointerToJITTargetAddress (dlopenHelper),
669
+ JITSymbolFlags ());
670
+ HelperSymbols[J.mangleAndIntern (" __lljit.dlclose_helper" )] =
671
+ JITEvaluatedSymbol (pointerToJITTargetAddress (dlcloseHelper),
672
+ JITSymbolFlags ());
673
+ HelperSymbols[J.mangleAndIntern (" __lljit.dlsym_helper" )] =
674
+ JITEvaluatedSymbol (pointerToJITTargetAddress (dlsymHelper),
675
+ JITSymbolFlags ());
676
+ HelperSymbols[J.mangleAndIntern (" __lljit.dlerror_helper" )] =
677
+ JITEvaluatedSymbol (pointerToJITTargetAddress (dlerrorHelper),
678
+ JITSymbolFlags ());
676
679
677
680
cantFail (
678
681
PlatformJITDylib.define (absoluteSymbols (std::move (HelperSymbols))));
@@ -859,8 +862,7 @@ class MachOPlatformSupport : public LLJIT::PlatformSupport {
859
862
}
860
863
861
864
if (!JITSymSearchOrder.empty ()) {
862
- MangleAndInterner Mangle (J.getExecutionSession (), J.getDataLayout ());
863
- auto MangledName = Mangle (Name);
865
+ auto MangledName = J.mangleAndIntern (Name);
864
866
SymbolLookupSet Syms (MangledName,
865
867
SymbolLookupFlags::WeaklyReferencedSymbol);
866
868
if (auto Result = J.getExecutionSession ().lookup (JITSymSearchOrder, Syms,
@@ -987,10 +989,9 @@ Error LLJIT::addObjectFile(JITDylib &JD, std::unique_ptr<MemoryBuffer> Obj) {
987
989
}
988
990
989
991
Expected<JITEvaluatedSymbol> LLJIT::lookupLinkerMangled (JITDylib &JD,
990
- StringRef Name) {
992
+ SymbolStringPtr Name) {
991
993
return ES->lookup (
992
- makeJITDylibSearchOrder (&JD, JITDylibLookupFlags::MatchAllSymbols),
993
- ES->intern (Name));
994
+ makeJITDylibSearchOrder (&JD, JITDylibLookupFlags::MatchAllSymbols), Name);
994
995
}
995
996
996
997
std::unique_ptr<ObjectLayer>
@@ -1093,7 +1094,7 @@ LLJIT::LLJIT(LLJITBuilderState &S, Error &Err)
1093
1094
setUpGenericLLVMIRPlatform (*this );
1094
1095
}
1095
1096
1096
- std::string LLJIT::mangle (StringRef UnmangledName) {
1097
+ std::string LLJIT::mangle (StringRef UnmangledName) const {
1097
1098
std::string MangledName;
1098
1099
{
1099
1100
raw_string_ostream MangledNameStream (MangledName);
0 commit comments