class EPCIndirectionUtils
Declaration
class EPCIndirectionUtils { /* full declaration omitted */ };
Description
Provides ExecutorProcessControl based indirect stubs, trampoline pool and lazy call through manager.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:30
Member Variables
- private std::mutex EPCUIMutex
- private llvm::orc::ExecutorProcessControl& EPC
- private std::unique_ptr<ABISupport> ABI
- private llvm::JITTargetAddress ResolverBlockAddr = 0
- private llvm::orc::EPCIndirectionUtils::FinalizedAlloc ResolverBlock
- private std::unique_ptr<TrampolinePool> TP
- private std::unique_ptr<LazyCallThroughManager> LCTM
- private std::vector<IndirectStubInfo> AvailableIndirectStubs
- private std::vector<FinalizedAlloc> IndirectStubAllocs
Method Overview
- public static Expected<std::unique_ptr<EPCIndirectionUtils>> Create(llvm::orc::ExecutorProcessControl & EPC)
- public template <typename ORCABI>static std::unique_ptr<EPCIndirectionUtils> CreateWithABI(llvm::orc::ExecutorProcessControl & EPC)
- private EPCIndirectionUtils(llvm::orc::ExecutorProcessControl & EPC, std::unique_ptr<ABISupport> ABI)
- public llvm::Error cleanup()
- public std::unique_ptr<IndirectStubsManager> createIndirectStubsManager()
- public llvm::orc::LazyCallThroughManager & createLazyCallThroughManager(llvm::orc::ExecutionSession & ES, llvm::JITTargetAddress ErrorHandlerAddr)
- public llvm::orc::EPCIndirectionUtils::ABISupport & getABISupport() const
- public llvm::orc::ExecutorProcessControl & getExecutorProcessControl() const
- private Expected<llvm::orc::EPCIndirectionUtils::IndirectStubInfoVector> getIndirectStubs(unsigned int NumStubs)
- public llvm::orc::LazyCallThroughManager & getLazyCallThroughManager()
- public llvm::JITTargetAddress getResolverBlockAddress() const
- public llvm::orc::TrampolinePool & getTrampolinePool()
- public Expected<llvm::JITTargetAddress> writeResolverBlock(llvm::JITTargetAddress ReentryFnAddr, llvm::JITTargetAddress ReentryCtxAddr)
Methods
¶static Expected<
std::unique_ptr<EPCIndirectionUtils>>
Create(llvm::orc::ExecutorProcessControl& EPC)
static Expected<
std::unique_ptr<EPCIndirectionUtils>>
Create(llvm::orc::ExecutorProcessControl& EPC)
Description
Create based on the ExecutorProcessControl triple.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:87
Parameters
¶template <typename ORCABI>
static std::unique_ptr<EPCIndirectionUtils>
CreateWithABI(
llvm::orc::ExecutorProcessControl& EPC)
template <typename ORCABI>
static std::unique_ptr<EPCIndirectionUtils>
CreateWithABI(
llvm::orc::ExecutorProcessControl& EPC)
Description
Create using the given ABI class.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:83
Templates
- ORCABI
Parameters
¶EPCIndirectionUtils(
llvm::orc::ExecutorProcessControl& EPC,
std::unique_ptr<ABISupport> ABI)
EPCIndirectionUtils(
llvm::orc::ExecutorProcessControl& EPC,
std::unique_ptr<ABISupport> ABI)
Description
Create an EPCIndirectionUtils instance.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:143
Parameters
- llvm::orc::ExecutorProcessControl& EPC
- std::unique_ptr<ABISupport> ABI
¶llvm::Error cleanup()
llvm::Error cleanup()
Description
Release memory for resources held by this instance. This *must* be called prior to destruction of the class.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:97
¶std::unique_ptr<IndirectStubsManager>
createIndirectStubsManager()
std::unique_ptr<IndirectStubsManager>
createIndirectStubsManager()
Description
Create an IndirectStubsManager for the executor process.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:111
¶llvm::orc::LazyCallThroughManager&
createLazyCallThroughManager(
llvm::orc::ExecutionSession& ES,
llvm::JITTargetAddress ErrorHandlerAddr)
llvm::orc::LazyCallThroughManager&
createLazyCallThroughManager(
llvm::orc::ExecutionSession& ES,
llvm::JITTargetAddress ErrorHandlerAddr)
Description
Create a LazyCallThroughManager. This function should only be called once.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:119
Parameters
- llvm::orc::ExecutionSession& ES
- llvm::JITTargetAddress ErrorHandlerAddr
¶llvm::orc::EPCIndirectionUtils::ABISupport&
getABISupport() const
llvm::orc::EPCIndirectionUtils::ABISupport&
getABISupport() const
Description
Return a reference to the ABISupport object for this instance.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:93
¶llvm::orc::ExecutorProcessControl&
getExecutorProcessControl() const
llvm::orc::ExecutorProcessControl&
getExecutorProcessControl() const
Description
Return a reference to the ExecutorProcessControl object.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:90
¶Expected<llvm::orc::EPCIndirectionUtils::
IndirectStubInfoVector>
getIndirectStubs(unsigned int NumStubs)
Expected<llvm::orc::EPCIndirectionUtils::
IndirectStubInfoVector>
getIndirectStubs(unsigned int NumStubs)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:146
Parameters
- unsigned int NumStubs
¶llvm::orc::LazyCallThroughManager&
getLazyCallThroughManager()
llvm::orc::LazyCallThroughManager&
getLazyCallThroughManager()
Description
Create a LazyCallThroughManager for the executor process.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:123
¶llvm::JITTargetAddress getResolverBlockAddress()
const
llvm::JITTargetAddress getResolverBlockAddress()
const
Description
Returns the address of the Resolver block. Returns zero if the writeResolverBlock method has not previously been called.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:108
¶llvm::orc::TrampolinePool& getTrampolinePool()
llvm::orc::TrampolinePool& getTrampolinePool()
Description
Create a TrampolinePool for the executor process.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:114
¶Expected<llvm::JITTargetAddress>
writeResolverBlock(
llvm::JITTargetAddress ReentryFnAddr,
llvm::JITTargetAddress ReentryCtxAddr)
Expected<llvm::JITTargetAddress>
writeResolverBlock(
llvm::JITTargetAddress ReentryFnAddr,
llvm::JITTargetAddress ReentryCtxAddr)
Description
Write resolver code to the executor process and return its address. This must be called before any call to createTrampolinePool or createLazyCallThroughManager.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:103
Parameters
- llvm::JITTargetAddress ReentryFnAddr
- llvm::JITTargetAddress ReentryCtxAddr