14 #ifndef LLVM_EXECUTIONENGINE_ORC_IRTRANSFORMLAYER_H
15 #define LLVM_EXECUTIONENGINE_ORC_IRTRANSFORMLAYER_H
27 template <
typename BaseLayerT,
typename TransformFtor>
35 TransformFtor Transform = TransformFtor())
36 : BaseLayer(BaseLayer), Transform(std::move(Transform)) {}
43 template <
typename ModuleSetT,
typename MemoryManagerPtrT,
44 typename SymbolResolverPtrT>
46 MemoryManagerPtrT MemMgr,
47 SymbolResolverPtrT Resolver) {
49 for (
auto I = Ms.begin(),
E = Ms.end();
I !=
E; ++
I)
50 *
I = Transform(std::move(*
I));
52 return BaseLayer.addModuleSet(std::move(Ms), std::move(MemMgr),
64 return BaseLayer.findSymbol(Name, ExportedSymbolsOnly);
76 bool ExportedSymbolsOnly) {
77 return BaseLayer.findSymbolIn(H, Name, ExportedSymbolsOnly);
84 BaseLayer.emitAndFinalize(H);
94 BaseLayerT &BaseLayer;
95 TransformFtor Transform;
101 #endif // LLVM_EXECUTIONENGINE_ORC_IRTRANSFORMLAYER_H
Represents a symbol in the JIT.
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")