14 #ifndef LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H
15 #define LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H
27 template <
typename BaseLayerT,
typename TransformFtor>
35 TransformFtor Transform = TransformFtor())
36 : BaseLayer(BaseLayer), Transform(std::move(Transform)) {}
43 template <
typename ObjSetT,
typename MemoryManagerPtrT,
44 typename SymbolResolverPtrT>
46 SymbolResolverPtrT Resolver) {
48 for (
auto I = Objects.begin(), E = Objects.end();
I != E; ++
I)
49 *
I = Transform(std::move(*
I));
51 return BaseLayer.addObjectSet(Objects, std::move(MemMgr),
63 return BaseLayer.findSymbol(Name, ExportedSymbolsOnly);
75 bool ExportedSymbolsOnly) {
76 return BaseLayer.findSymbolIn(H, Name, ExportedSymbolsOnly);
87 BaseLayer.mapSectionAddress(H, LocalAddress, TargetAddr);
93 template <
typename OwningMBSet>
95 BaseLayer.takeOwnershipOfBuffers(H, std::move(MBs));
105 BaseLayerT &BaseLayer;
106 TransformFtor Transform;
112 #endif // LLVM_EXECUTIONENGINE_ORC_OBJECTTRANSFORMLAYER_H
Represents a symbol in the JIT.
uint64_t TargetAddress
Represents an address in the target process's address space.