LLVM
8.0.1
|
#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"
Public Types | |
using | IndirectStubsInfo = GenericIndirectStubsInfo< 16 > |
using | JITReentryFn = JITTargetAddress(*)(void *CallbackMgr, void *TrampolineId) |
Static Public Member Functions | |
static void | writeTrampolines (uint8_t *TrampolineMem, void *ResolverAddr, unsigned NumTrampolines) |
Write the requsted number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines. More... | |
static void | writeResolverCode (uint8_t *ResolveMem, JITReentryFn Reentry, void *CallbackMgr, bool isBigEndian) |
Write the resolver code into the given memory. More... | |
static Error | emitIndirectStubsBlock (IndirectStubsInfo &StubsInfo, unsigned MinStubs, void *InitialPtrVal) |
Emit at least MinStubs worth of indirect call stubs, rounded out to the nearest page size. More... | |
Static Public Attributes | |
static const unsigned | PointerSize = 4 |
static const unsigned | TrampolineSize = 20 |
static const unsigned | ResolverCodeSize = 0xfc |
Definition at line 244 of file OrcABISupport.h.
Definition at line 249 of file OrcABISupport.h.
using llvm::orc::OrcMips32_Base::JITReentryFn = JITTargetAddress (*)(void *CallbackMgr, void *TrampolineId) |
Definition at line 252 of file OrcABISupport.h.
|
static |
Emit at least MinStubs worth of indirect call stubs, rounded out to the nearest page size.
E.g. Asking for 4 stubs on Mips32, where stubs are 8-bytes, with 4k pages will return a block of 512 stubs (4096 / 8 = 512). Asking for 513 will return a block of 1024 (2-pages worth).
Definition at line 659 of file OrcABISupport.cpp.
References llvm::sys::Memory::allocateMappedMemory(), llvm::errorCodeToError(), llvm::sys::Process::getPageSize(), I, llvm::sys::Memory::MF_EXEC, llvm::sys::Memory::MF_READ, llvm::sys::Memory::MF_WRITE, PageSize, llvm::sys::Memory::protectMappedMemory(), llvm::orc::GenericIndirectStubsInfo< StubSizeVal >::StubSize, and llvm::Error::success().
|
static |
Write the resolver code into the given memory.
The user is be responsible for allocating the memory and setting permissions.
Definition at line 540 of file OrcABISupport.cpp.
References llvm::Intrinsic::memcpy.
Referenced by llvm::orc::OrcMips32Le::writeResolverCode(), and llvm::orc::OrcMips32Be::writeResolverCode().
|
static |
Write the requsted number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines.
Definition at line 642 of file OrcABISupport.cpp.
References I.
Definition at line 246 of file OrcABISupport.h.
Definition at line 248 of file OrcABISupport.h.
Definition at line 247 of file OrcABISupport.h.