LLVM 20.0.0git
|
Provides ExecutorProcessControl based indirect stubs, trampoline pool and lazy call through manager. More...
#include "llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h"
Classes | |
class | ABISupport |
ABI support base class. More... | |
Public Member Functions | |
ExecutorProcessControl & | getExecutorProcessControl () const |
Return a reference to the ExecutorProcessControl object. | |
ABISupport & | getABISupport () const |
Return a reference to the ABISupport object for this instance. | |
Error | cleanup () |
Release memory for resources held by this instance. | |
Expected< ExecutorAddr > | writeResolverBlock (ExecutorAddr ReentryFnAddr, ExecutorAddr ReentryCtxAddr) |
Write resolver code to the executor process and return its address. | |
ExecutorAddr | getResolverBlockAddress () const |
Returns the address of the Resolver block. | |
std::unique_ptr< IndirectStubsManager > | createIndirectStubsManager () |
Create an IndirectStubsManager for the executor process. | |
TrampolinePool & | getTrampolinePool () |
Create a TrampolinePool for the executor process. | |
LazyCallThroughManager & | createLazyCallThroughManager (ExecutionSession &ES, ExecutorAddr ErrorHandlerAddr) |
Create a LazyCallThroughManager. | |
LazyCallThroughManager & | getLazyCallThroughManager () |
Create a LazyCallThroughManager for the executor process. | |
Static Public Member Functions | |
template<typename ORCABI > | |
static std::unique_ptr< EPCIndirectionUtils > | CreateWithABI (ExecutorProcessControl &EPC) |
Create using the given ABI class. | |
static Expected< std::unique_ptr< EPCIndirectionUtils > > | Create (ExecutorProcessControl &EPC) |
Create based on the ExecutorProcessControl triple. | |
static Expected< std::unique_ptr< EPCIndirectionUtils > > | Create (ExecutionSession &ES) |
Create based on the ExecutorProcessControl triple. | |
Friends | |
class | EPCIndirectionUtilsAccess |
Provides ExecutorProcessControl based indirect stubs, trampoline pool and lazy call through manager.
Definition at line 30 of file EPCIndirectionUtils.h.
Error llvm::orc::EPCIndirectionUtils::cleanup | ( | ) |
Release memory for resources held by this instance.
This must be called prior to destruction of the class.
Definition at line 273 of file EPCIndirectionUtils.cpp.
References llvm::joinErrors().
|
inlinestatic |
Create based on the ExecutorProcessControl triple.
Definition at line 89 of file EPCIndirectionUtils.h.
References Create(), and llvm::orc::ExecutionSession::getExecutorProcessControl().
|
static |
Create based on the ExecutorProcessControl triple.
Definition at line 235 of file EPCIndirectionUtils.cpp.
References llvm::Triple::aarch64, llvm::Triple::aarch64_32, llvm::orc::ExecutorProcessControl::getTargetTriple(), llvm::inconvertibleErrorCode(), llvm::Triple::loongarch64, llvm::Triple::mips, llvm::Triple::mips64, llvm::Triple::mips64el, llvm::Triple::mipsel, llvm::Triple::riscv64, llvm::Triple::x86, and llvm::Triple::x86_64.
Referenced by Create().
std::unique_ptr< IndirectStubsManager > llvm::orc::EPCIndirectionUtils::createIndirectStubsManager | ( | ) |
Create an IndirectStubsManager for the executor process.
Definition at line 319 of file EPCIndirectionUtils.cpp.
LazyCallThroughManager & llvm::orc::EPCIndirectionUtils::createLazyCallThroughManager | ( | ExecutionSession & | ES, |
ExecutorAddr | ErrorHandlerAddr | ||
) |
Create a LazyCallThroughManager.
This function should only be called once.
Definition at line 329 of file EPCIndirectionUtils.cpp.
References assert().
|
static |
Create using the given ABI class.
Definition at line 216 of file EPCIndirectionUtils.h.
|
inline |
Return a reference to the ABISupport object for this instance.
Definition at line 97 of file EPCIndirectionUtils.h.
|
inline |
Return a reference to the ExecutorProcessControl object.
Definition at line 94 of file EPCIndirectionUtils.h.
|
inline |
Create a LazyCallThroughManager for the executor process.
Definition at line 126 of file EPCIndirectionUtils.h.
References assert().
Referenced by llvm::orc::setUpInProcessLCTMReentryViaEPCIU().
|
inline |
Returns the address of the Resolver block.
Returns zero if the writeResolverBlock method has not previously been called.
Definition at line 111 of file EPCIndirectionUtils.h.
TrampolinePool & llvm::orc::EPCIndirectionUtils::getTrampolinePool | ( | ) |
Create a TrampolinePool for the executor process.
Definition at line 323 of file EPCIndirectionUtils.cpp.
Expected< ExecutorAddr > llvm::orc::EPCIndirectionUtils::writeResolverBlock | ( | ExecutorAddr | ReentryFnAddr, |
ExecutorAddr | ReentryCtxAddr | ||
) |
Write resolver code to the executor process and return its address.
This must be called before any call to createTrampolinePool or createLazyCallThroughManager.
Definition at line 290 of file EPCIndirectionUtils.cpp.
References assert().
Referenced by llvm::orc::setUpInProcessLCTMReentryViaEPCIU().
|
friend |
Definition at line 31 of file EPCIndirectionUtils.h.