LLVM: llvm::orc::OrcI386 Class Reference (original) (raw)

I386 support. More...

#include "[llvm/ExecutionEngine/Orc/OrcABISupport.h](OrcABISupport%5F8h%5Fsource.html)"

Static Public Member Functions
static LLVM_ABI void writeResolverCode (char *ResolverWorkingMem, ExecutorAddr ResolverTargetAddress, ExecutorAddr ReentryFnAddr, ExecutorAddr ReentryCtxAddr)
Write the resolver code into the given memory.
static LLVM_ABI void writeTrampolines (char *TrampolineBlockWorkingMem, ExecutorAddr TrampolineBlockTargetAddress, ExecutorAddr ResolverAddr, unsigned NumTrampolines)
Write the requested number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines.
static LLVM_ABI void writeIndirectStubsBlock (char *StubsBlockWorkingMem, ExecutorAddr StubsBlockTargetAddress, ExecutorAddr PointersBlockTargetAddress, unsigned NumStubs)
Write NumStubs indirect stubs to working memory at StubsBlockWorkingMem.
Static Public Attributes
static constexpr unsigned PointerSize = 4
static constexpr unsigned TrampolineSize = 8
static constexpr unsigned StubSize = 8
static constexpr unsigned StubToPointerMaxDisplacement = 1 << 31
static constexpr unsigned ResolverCodeSize = 0x4a

I386 support.

I386 supports lazy JITing.

Definition at line 197 of file OrcABISupport.h.

writeIndirectStubsBlock()

void llvm::orc::OrcI386::writeIndirectStubsBlock ( char * StubsBlockWorkingMem, ExecutorAddr StubsBlockTargetAddress, ExecutorAddr PointersBlockTargetAddress, unsigned NumStubs ) static

writeResolverCode()

Write the resolver code into the given memory.

The user is responsible for allocating the memory and setting permissions.

ReentryFnAddr should be the address of a function whose signature matches void* (*)(void *TrampolineAddr, void *ReentryCtxAddr). The ReentryCtxAddr argument of writeResolverCode will be passed as the second argument to the function at ReentryFnAddr.

Definition at line 405 of file OrcABISupport.cpp.

References assert(), and llvm::orc::ExecutorAddr::getValue().

writeTrampolines()

void llvm::orc::OrcI386::writeTrampolines ( char * TrampolineBlockWorkingMem, ExecutorAddr TrampolineBlockTargetAddress, ExecutorAddr ResolverAddr, unsigned NumTrampolines ) static

PointerSize

unsigned llvm::orc::OrcI386::PointerSize = 4 staticconstexpr

ResolverCodeSize

unsigned llvm::orc::OrcI386::ResolverCodeSize = 0x4a staticconstexpr

StubSize

unsigned llvm::orc::OrcI386::StubSize = 8 staticconstexpr

StubToPointerMaxDisplacement

unsigned llvm::orc::OrcI386::StubToPointerMaxDisplacement = 1 << 31 staticconstexpr

TrampolineSize

unsigned llvm::orc::OrcI386::TrampolineSize = 8 staticconstexpr

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