@@ -27,42 +27,6 @@ class InProgressLookupState;
27
27
28
28
class OrcV2CAPIHelper {
29
29
public:
30
- using PoolEntry = SymbolStringPtr::PoolEntry;
31
- using PoolEntryPtr = SymbolStringPtr::PoolEntryPtr;
32
-
33
- // Move from SymbolStringPtr to PoolEntryPtr (no change in ref count).
34
- static PoolEntryPtr moveFromSymbolStringPtr (SymbolStringPtr S) {
35
- PoolEntryPtr Result = nullptr ;
36
- std::swap (Result, S.S );
37
- return Result;
38
- }
39
-
40
- // Move from a PoolEntryPtr to a SymbolStringPtr (no change in ref count).
41
- static SymbolStringPtr moveToSymbolStringPtr (PoolEntryPtr P) {
42
- SymbolStringPtr S;
43
- S.S = P;
44
- return S;
45
- }
46
-
47
- // Copy a pool entry to a SymbolStringPtr (increments ref count).
48
- static SymbolStringPtr copyToSymbolStringPtr (PoolEntryPtr P) {
49
- return SymbolStringPtr (P);
50
- }
51
-
52
- static PoolEntryPtr getRawPoolEntryPtr (const SymbolStringPtr &S) {
53
- return S.S ;
54
- }
55
-
56
- static void retainPoolEntry (PoolEntryPtr P) {
57
- SymbolStringPtr S (P);
58
- S.S = nullptr ;
59
- }
60
-
61
- static void releasePoolEntry (PoolEntryPtr P) {
62
- SymbolStringPtr S;
63
- S.S = P;
64
- }
65
-
66
30
static InProgressLookupState *extractLookupState (LookupState &LS) {
67
31
return LS.IPLS .release ();
68
32
}
@@ -75,10 +39,16 @@ class OrcV2CAPIHelper {
75
39
} // namespace orc
76
40
} // namespace llvm
77
41
42
+ inline LLVMOrcSymbolStringPoolEntryRef wrap (SymbolStringPoolEntryUnsafe E) {
43
+ return reinterpret_cast <LLVMOrcSymbolStringPoolEntryRef>(E.rawPtr ());
44
+ }
45
+
46
+ inline SymbolStringPoolEntryUnsafe unwrap (LLVMOrcSymbolStringPoolEntryRef E) {
47
+ return reinterpret_cast <SymbolStringPoolEntryUnsafe::PoolEntry *>(E);
48
+ }
49
+
78
50
DEFINE_SIMPLE_CONVERSION_FUNCTIONS (ExecutionSession, LLVMOrcExecutionSessionRef)
79
51
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(SymbolStringPool, LLVMOrcSymbolStringPoolRef)
80
- DEFINE_SIMPLE_CONVERSION_FUNCTIONS(OrcV2CAPIHelper::PoolEntry,
81
- LLVMOrcSymbolStringPoolEntryRef)
82
52
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(MaterializationUnit,
83
53
LLVMOrcMaterializationUnitRef)
84
54
DEFINE_SIMPLE_CONVERSION_FUNCTIONS(MaterializationResponsibility,
@@ -136,7 +106,7 @@ class OrcCAPIMaterializationUnit : public llvm::orc::MaterializationUnit {
136
106
137
107
private:
138
108
void discard (const JITDylib &JD, const SymbolStringPtr &Name) override {
139
- Discard (Ctx, wrap (&JD), wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (Name)));
109
+ Discard (Ctx, wrap (&JD), wrap (SymbolStringPoolEntryUnsafe::from (Name)));
140
110
}
141
111
142
112
std::string Name;
@@ -184,7 +154,7 @@ static SymbolMap toSymbolMap(LLVMOrcCSymbolMapPairs Syms, size_t NumPairs) {
184
154
SymbolMap SM;
185
155
for (size_t I = 0 ; I != NumPairs; ++I) {
186
156
JITSymbolFlags Flags = toJITSymbolFlags (Syms[I].Sym .Flags );
187
- SM[OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Syms[I].Name ))] = {
157
+ SM[unwrap (Syms[I].Name ). moveToSymbolStringPtr ( )] = {
188
158
ExecutorAddr (Syms[I].Sym .Address ), Flags};
189
159
}
190
160
return SM;
@@ -199,7 +169,7 @@ toSymbolDependenceMap(LLVMOrcCDependenceMapPairs Pairs, size_t NumPairs) {
199
169
200
170
for (size_t J = 0 ; J != Pairs[I].Names .Length ; ++J) {
201
171
auto Sym = Pairs[I].Names .Symbols [J];
202
- Names.insert (OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Sym)));
172
+ Names.insert (unwrap (Sym). moveToSymbolStringPtr ( ));
203
173
}
204
174
SDM[JD] = Names;
205
175
}
@@ -309,7 +279,7 @@ class CAPIDefinitionGenerator final : public DefinitionGenerator {
309
279
CLookupSet.reserve (LookupSet.size ());
310
280
for (auto &KV : LookupSet) {
311
281
LLVMOrcSymbolStringPoolEntryRef Name =
312
- ::wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (KV.first));
282
+ ::wrap (SymbolStringPoolEntryUnsafe::from (KV.first));
313
283
LLVMOrcSymbolLookupFlags SLF = fromSymbolLookupFlags (KV.second );
314
284
CLookupSet.push_back ({Name, SLF});
315
285
}
@@ -353,8 +323,7 @@ void LLVMOrcSymbolStringPoolClearDeadEntries(LLVMOrcSymbolStringPoolRef SSP) {
353
323
354
324
LLVMOrcSymbolStringPoolEntryRef
355
325
LLVMOrcExecutionSessionIntern (LLVMOrcExecutionSessionRef ES, const char *Name) {
356
- return wrap (
357
- OrcV2CAPIHelper::moveFromSymbolStringPtr (unwrap (ES)->intern (Name)));
326
+ return wrap (SymbolStringPoolEntryUnsafe::take (unwrap (ES)->intern (Name)));
358
327
}
359
328
360
329
void LLVMOrcExecutionSessionLookup (
@@ -374,7 +343,7 @@ void LLVMOrcExecutionSessionLookup(
374
343
375
344
SymbolLookupSet SLS;
376
345
for (size_t I = 0 ; I != SymbolsSize; ++I)
377
- SLS.add (OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Symbols[I].Name )),
346
+ SLS.add (unwrap (Symbols[I].Name ). moveToSymbolStringPtr ( ),
378
347
toSymbolLookupFlags (Symbols[I].LookupFlags ));
379
348
380
349
unwrap (ES)->lookup (
@@ -384,7 +353,7 @@ void LLVMOrcExecutionSessionLookup(
384
353
SmallVector<LLVMOrcCSymbolMapPair> CResult;
385
354
for (auto &KV : *Result)
386
355
CResult.push_back (LLVMOrcCSymbolMapPair{
387
- wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (KV.first )),
356
+ wrap (SymbolStringPoolEntryUnsafe::from (KV.first )),
388
357
fromExecutorSymbolDef (KV.second )});
389
358
HandleResult (LLVMErrorSuccess, CResult.data (), CResult.size (), Ctx);
390
359
} else
@@ -394,15 +363,15 @@ void LLVMOrcExecutionSessionLookup(
394
363
}
395
364
396
365
void LLVMOrcRetainSymbolStringPoolEntry (LLVMOrcSymbolStringPoolEntryRef S) {
397
- OrcV2CAPIHelper::retainPoolEntry ( unwrap (S));
366
+ unwrap (S). retain ( );
398
367
}
399
368
400
369
void LLVMOrcReleaseSymbolStringPoolEntry (LLVMOrcSymbolStringPoolEntryRef S) {
401
- OrcV2CAPIHelper::releasePoolEntry ( unwrap (S));
370
+ unwrap (S). release ( );
402
371
}
403
372
404
373
const char *LLVMOrcSymbolStringPoolEntryStr (LLVMOrcSymbolStringPoolEntryRef S) {
405
- return unwrap (S)->getKey ().data ();
374
+ return unwrap (S). rawPtr () ->getKey ().data ();
406
375
}
407
376
408
377
LLVMOrcResourceTrackerRef
@@ -452,10 +421,10 @@ LLVMOrcMaterializationUnitRef LLVMOrcCreateCustomMaterializationUnit(
452
421
LLVMOrcMaterializationUnitDestroyFunction Destroy) {
453
422
SymbolFlagsMap SFM;
454
423
for (size_t I = 0 ; I != NumSyms; ++I)
455
- SFM[OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Syms[I].Name ))] =
424
+ SFM[unwrap (Syms[I].Name ). moveToSymbolStringPtr ( )] =
456
425
toJITSymbolFlags (Syms[I].Flags );
457
426
458
- auto IS = OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (InitSym));
427
+ auto IS = unwrap (InitSym). moveToSymbolStringPtr ( );
459
428
460
429
return wrap (new OrcCAPIMaterializationUnit (
461
430
Name, std::move (SFM), std::move (IS), Ctx, Materialize, Discard, Destroy));
@@ -476,9 +445,8 @@ LLVMOrcMaterializationUnitRef LLVMOrcLazyReexports(
476
445
for (size_t I = 0 ; I != NumPairs; ++I) {
477
446
auto pair = CallableAliases[I];
478
447
JITSymbolFlags Flags = toJITSymbolFlags (pair.Entry .Flags );
479
- SymbolStringPtr Name =
480
- OrcV2CAPIHelper::moveToSymbolStringPtr (unwrap (pair.Entry .Name ));
481
- SAM[OrcV2CAPIHelper::moveToSymbolStringPtr (unwrap (pair.Name ))] =
448
+ SymbolStringPtr Name = unwrap (pair.Entry .Name ).moveToSymbolStringPtr ();
449
+ SAM[unwrap (pair.Name ).moveToSymbolStringPtr ()] =
482
450
SymbolAliasMapEntry (Name, Flags);
483
451
}
484
452
@@ -511,7 +479,7 @@ LLVMOrcCSymbolFlagsMapPairs LLVMOrcMaterializationResponsibilityGetSymbols(
511
479
safe_malloc (Symbols.size () * sizeof (LLVMOrcCSymbolFlagsMapPair)));
512
480
size_t I = 0 ;
513
481
for (auto const &pair : Symbols) {
514
- auto Name = wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (pair.first ));
482
+ auto Name = wrap (SymbolStringPoolEntryUnsafe::from (pair.first ));
515
483
auto Flags = pair.second ;
516
484
Result[I] = {Name, fromJITSymbolFlags (Flags)};
517
485
I++;
@@ -528,7 +496,7 @@ LLVMOrcSymbolStringPoolEntryRef
528
496
LLVMOrcMaterializationResponsibilityGetInitializerSymbol (
529
497
LLVMOrcMaterializationResponsibilityRef MR) {
530
498
auto Sym = unwrap (MR)->getInitializerSymbol ();
531
- return wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (Sym));
499
+ return wrap (SymbolStringPoolEntryUnsafe::from (Sym));
532
500
}
533
501
534
502
LLVMOrcSymbolStringPoolEntryRef *
@@ -541,7 +509,7 @@ LLVMOrcMaterializationResponsibilityGetRequestedSymbols(
541
509
Symbols.size () * sizeof (LLVMOrcSymbolStringPoolEntryRef)));
542
510
size_t I = 0 ;
543
511
for (auto &Name : Symbols) {
544
- Result[I] = wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (Name));
512
+ Result[I] = wrap (SymbolStringPoolEntryUnsafe::from (Name));
545
513
I++;
546
514
}
547
515
*NumSymbols = Symbols.size ();
@@ -569,7 +537,7 @@ LLVMErrorRef LLVMOrcMaterializationResponsibilityDefineMaterializing(
569
537
LLVMOrcCSymbolFlagsMapPairs Syms, size_t NumSyms) {
570
538
SymbolFlagsMap SFM;
571
539
for (size_t I = 0 ; I != NumSyms; ++I)
572
- SFM[OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Syms[I].Name ))] =
540
+ SFM[unwrap (Syms[I].Name ). moveToSymbolStringPtr ( )] =
573
541
toJITSymbolFlags (Syms[I].Flags );
574
542
575
543
return wrap (unwrap (MR)->defineMaterializing (std::move (SFM)));
@@ -588,7 +556,7 @@ LLVMErrorRef LLVMOrcMaterializationResponsibilityDelegate(
588
556
LLVMOrcMaterializationResponsibilityRef *Result) {
589
557
SymbolNameSet Syms;
590
558
for (size_t I = 0 ; I != NumSymbols; I++) {
591
- Syms.insert (OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Symbols[I])));
559
+ Syms.insert (unwrap (Symbols[I]). moveToSymbolStringPtr ( ));
592
560
}
593
561
auto OtherMR = unwrap (MR)->delegate (Syms);
594
562
@@ -605,7 +573,7 @@ void LLVMOrcMaterializationResponsibilityAddDependencies(
605
573
LLVMOrcCDependenceMapPairs Dependencies, size_t NumPairs) {
606
574
607
575
SymbolDependenceMap SDM = toSymbolDependenceMap (Dependencies, NumPairs);
608
- auto Sym = OrcV2CAPIHelper::moveToSymbolStringPtr ( unwrap (Name));
576
+ auto Sym = unwrap (Name). moveToSymbolStringPtr ( );
609
577
unwrap (MR)->addDependencies (Sym, SDM);
610
578
}
611
579
@@ -698,7 +666,7 @@ LLVMErrorRef LLVMOrcCreateDynamicLibrarySearchGeneratorForProcess(
698
666
DynamicLibrarySearchGenerator::SymbolPredicate Pred;
699
667
if (Filter)
700
668
Pred = [=](const SymbolStringPtr &Name) -> bool {
701
- return Filter (FilterCtx, wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (Name)));
669
+ return Filter (FilterCtx, wrap (SymbolStringPoolEntryUnsafe::from (Name)));
702
670
};
703
671
704
672
auto ProcessSymsGenerator =
@@ -724,7 +692,7 @@ LLVMErrorRef LLVMOrcCreateDynamicLibrarySearchGeneratorForPath(
724
692
DynamicLibrarySearchGenerator::SymbolPredicate Pred;
725
693
if (Filter)
726
694
Pred = [=](const SymbolStringPtr &Name) -> bool {
727
- return Filter (FilterCtx, wrap (OrcV2CAPIHelper::getRawPoolEntryPtr (Name)));
695
+ return Filter (FilterCtx, wrap (SymbolStringPoolEntryUnsafe::from (Name)));
728
696
};
729
697
730
698
auto LibrarySymsGenerator =
@@ -992,7 +960,7 @@ char LLVMOrcLLJITGetGlobalPrefix(LLVMOrcLLJITRef J) {
992
960
993
961
LLVMOrcSymbolStringPoolEntryRef
994
962
LLVMOrcLLJITMangleAndIntern (LLVMOrcLLJITRef J, const char *UnmangledName) {
995
- return wrap (OrcV2CAPIHelper::moveFromSymbolStringPtr (
963
+ return wrap (SymbolStringPoolEntryUnsafe::take (
996
964
unwrap (J)->mangleAndIntern (UnmangledName)));
997
965
}
998
966
0 commit comments