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

Methods

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

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

llvm::orc::ExecutorProcessControl& EPC

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()

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()

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)

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

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

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)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/EPCIndirectionUtils.h:146

Parameters

unsigned int NumStubs

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

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()

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)

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