LLVM
8.0.1
|
X86_64 code that's common to all ABIs. More...
#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"
Public Types | |
using | IndirectStubsInfo = GenericIndirectStubsInfo< 8 > |
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 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 = 8 |
static const unsigned | TrampolineSize = 8 |
X86_64 code that's common to all ABIs.
X86_64 supports lazy JITing.
Definition at line 151 of file OrcABISupport.h.
Definition at line 156 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 x86-64, 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 207 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 requsted number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines.
Definition at line 192 of file OrcABISupport.cpp.
References I, llvm::Intrinsic::memcpy, and llvm::orc::OrcAArch64::TrampolineSize.
Definition at line 153 of file OrcABISupport.h.
Definition at line 154 of file OrcABISupport.h.