LLVM  8.0.1
Public Types | Static Public Member Functions | Static Public Attributes | List of all members
llvm::orc::OrcMips32_Base Class Reference

#include "llvm/ExecutionEngine/Orc/OrcABISupport.h"

Inheritance diagram for llvm::orc::OrcMips32_Base:
Inheritance graph
[legend]
Collaboration diagram for llvm::orc::OrcMips32_Base:
Collaboration graph
[legend]

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
 

Detailed Description

Definition at line 244 of file OrcABISupport.h.

Member Typedef Documentation

◆ IndirectStubsInfo

Definition at line 249 of file OrcABISupport.h.

◆ JITReentryFn

using llvm::orc::OrcMips32_Base::JITReentryFn = JITTargetAddress (*)(void *CallbackMgr, void *TrampolineId)

Definition at line 252 of file OrcABISupport.h.

Member Function Documentation

◆ emitIndirectStubsBlock()

Error llvm::orc::OrcMips32_Base::emitIndirectStubsBlock ( IndirectStubsInfo StubsInfo,
unsigned  MinStubs,
void *  InitialPtrVal 
)
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().

◆ writeResolverCode()

void llvm::orc::OrcMips32_Base::writeResolverCode ( uint8_t *  ResolveMem,
JITReentryFn  Reentry,
void *  CallbackMgr,
bool  isBigEndian 
)
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().

◆ writeTrampolines()

void llvm::orc::OrcMips32_Base::writeTrampolines ( uint8_t *  TrampolineMem,
void *  ResolverAddr,
unsigned  NumTrampolines 
)
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.

Member Data Documentation

◆ PointerSize

const unsigned llvm::orc::OrcMips32_Base::PointerSize = 4
static

Definition at line 246 of file OrcABISupport.h.

◆ ResolverCodeSize

const unsigned llvm::orc::OrcMips32_Base::ResolverCodeSize = 0xfc
static

Definition at line 248 of file OrcABISupport.h.

◆ TrampolineSize

const unsigned llvm::orc::OrcMips32_Base::TrampolineSize = 20
static

Definition at line 247 of file OrcABISupport.h.


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