14#ifndef LLVM_EXECUTIONENGINE_ORC_COMPILEONDEMANDLAYER_H
15#define LLVM_EXECUTIONENGINE_ORC_COMPILEONDEMANDLAYER_H
60 std::function<std::unique_ptr<IndirectStubsManager>()>;
71 void emit(std::unique_ptr<MaterializationResponsibility> R,
75 struct PerDylibResources {
78 std::unique_ptr<IndirectStubsManager> ISMgr)
79 : ImplD(ImplD), ISMgr(
std::
move(ISMgr)) {}
80 JITDylib &getImplDylib() {
return ImplD; }
81 IndirectStubsManager &getISManager() {
return *ISMgr; }
85 std::unique_ptr<IndirectStubsManager> ISMgr;
88 using PerDylibResourcesMap = std::map<const JITDylib *, PerDylibResources>;
90 PerDylibResources &getPerDylibResources(JITDylib &TargetD);
92 mutable std::mutex CODLayerMutex;
95 LazyCallThroughManager &LCTMgr;
96 IndirectStubsManagerBuilder BuildIndirectStubsManager;
97 PerDylibResourcesMap DylibResources;
98 ImplSymbolMap *AliaseeImpls =
nullptr;
This file implements a class to represent arbitrary precision integral constant values and operations...
This file contains the simple types necessary to represent the attributes associated with functions a...
This file contains the declarations for the subclasses of Constant, which represent the different fla...
Module.h This file contains the declarations for the Module class.
void emit(std::unique_ptr< MaterializationResponsibility > R, ThreadSafeModule TSM) override
Emits the given module.
CompileOnDemandLayer(ExecutionSession &ES, IRLayer &BaseLayer, LazyCallThroughManager &LCTMgr, IndirectStubsManagerBuilder BuildIndirectStubsManager)
Construct a CompileOnDemandLayer.
void setImplMap(ImplSymbolMap *Imp)
Sets the ImplSymbolMap.
std::function< std::unique_ptr< IndirectStubsManager >()> IndirectStubsManagerBuilder
Builder for IndirectStubsManagers.
An ExecutionSession represents a running JIT program.
IRLayer(ExecutionSession &ES, const IRSymbolMapper::ManglingOptions *&MO)
Represents a JIT'd dynamic library.
Manages a set of 'lazy call-through' trampolines.
An LLVM Module together with a shared ThreadSafeContext.
This is an optimization pass for GlobalISel generic memory operations.
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Implement std::hash so that hash_code can be used in STL containers.