LLVM  15.0.0git
Classes | Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::orc::EPCIndirectionUtils Class Reference

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

ExecutorProcessControlgetExecutorProcessControl () const
 Return a reference to the ExecutorProcessControl object. More...
 
ABISupportgetABISupport () const
 Return a reference to the ABISupport object for this instance. More...
 
Error cleanup ()
 Release memory for resources held by this instance. More...
 
Expected< JITTargetAddresswriteResolverBlock (JITTargetAddress ReentryFnAddr, JITTargetAddress ReentryCtxAddr)
 Write resolver code to the executor process and return its address. More...
 
JITTargetAddress getResolverBlockAddress () const
 Returns the address of the Resolver block. More...
 
std::unique_ptr< IndirectStubsManagercreateIndirectStubsManager ()
 Create an IndirectStubsManager for the executor process. More...
 
TrampolinePoolgetTrampolinePool ()
 Create a TrampolinePool for the executor process. More...
 
LazyCallThroughManagercreateLazyCallThroughManager (ExecutionSession &ES, JITTargetAddress ErrorHandlerAddr)
 Create a LazyCallThroughManager. More...
 
LazyCallThroughManagergetLazyCallThroughManager ()
 Create a LazyCallThroughManager for the executor process. More...
 

Static Public Member Functions

template<typename ORCABI >
static std::unique_ptr< EPCIndirectionUtilsCreateWithABI (ExecutorProcessControl &EPC)
 Create using the given ABI class. More...
 
static Expected< std::unique_ptr< EPCIndirectionUtils > > Create (ExecutorProcessControl &EPC)
 Create based on the ExecutorProcessControl triple. More...
 

Friends

class EPCIndirectionUtilsAccess
 

Detailed Description

Provides ExecutorProcessControl based indirect stubs, trampoline pool and lazy call through manager.

Definition at line 30 of file EPCIndirectionUtils.h.

Member Function Documentation

◆ cleanup()

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 274 of file EPCIndirectionUtils.cpp.

◆ Create()

Expected< std::unique_ptr< EPCIndirectionUtils > > llvm::orc::EPCIndirectionUtils::Create ( ExecutorProcessControl EPC)
static

◆ createIndirectStubsManager()

std::unique_ptr< IndirectStubsManager > llvm::orc::EPCIndirectionUtils::createIndirectStubsManager ( )

Create an IndirectStubsManager for the executor process.

Definition at line 320 of file EPCIndirectionUtils.cpp.

◆ createLazyCallThroughManager()

LazyCallThroughManager & llvm::orc::EPCIndirectionUtils::createLazyCallThroughManager ( ExecutionSession ES,
JITTargetAddress  ErrorHandlerAddr 
)

Create a LazyCallThroughManager.

This function should only be called once.

Definition at line 330 of file EPCIndirectionUtils.cpp.

References assert().

◆ CreateWithABI()

template<typename ORCABI >
std::unique_ptr< EPCIndirectionUtils > llvm::orc::EPCIndirectionUtils::CreateWithABI ( ExecutorProcessControl EPC)
static

Create using the given ABI class.

Definition at line 214 of file EPCIndirectionUtils.h.

◆ getABISupport()

ABISupport& llvm::orc::EPCIndirectionUtils::getABISupport ( ) const
inline

Return a reference to the ABISupport object for this instance.

Definition at line 93 of file EPCIndirectionUtils.h.

◆ getExecutorProcessControl()

ExecutorProcessControl& llvm::orc::EPCIndirectionUtils::getExecutorProcessControl ( ) const
inline

Return a reference to the ExecutorProcessControl object.

Definition at line 90 of file EPCIndirectionUtils.h.

◆ getLazyCallThroughManager()

LazyCallThroughManager& llvm::orc::EPCIndirectionUtils::getLazyCallThroughManager ( )
inline

Create a LazyCallThroughManager for the executor process.

Definition at line 123 of file EPCIndirectionUtils.h.

References assert().

Referenced by llvm::orc::setUpInProcessLCTMReentryViaEPCIU().

◆ getResolverBlockAddress()

JITTargetAddress llvm::orc::EPCIndirectionUtils::getResolverBlockAddress ( ) const
inline

Returns the address of the Resolver block.

Returns zero if the writeResolverBlock method has not previously been called.

Definition at line 108 of file EPCIndirectionUtils.h.

◆ getTrampolinePool()

TrampolinePool & llvm::orc::EPCIndirectionUtils::getTrampolinePool ( )

Create a TrampolinePool for the executor process.

Definition at line 324 of file EPCIndirectionUtils.cpp.

◆ writeResolverBlock()

Expected< JITTargetAddress > llvm::orc::EPCIndirectionUtils::writeResolverBlock ( JITTargetAddress  ReentryFnAddr,
JITTargetAddress  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 291 of file EPCIndirectionUtils.cpp.

References ABI, and assert().

Referenced by llvm::orc::setUpInProcessLCTMReentryViaEPCIU().

Friends And Related Function Documentation

◆ EPCIndirectionUtilsAccess

friend class EPCIndirectionUtilsAccess
friend

Definition at line 31 of file EPCIndirectionUtils.h.


The documentation for this class was generated from the following files: