LLVM  10.0.0svn
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 243 of file OrcABISupport.h.

Member Typedef Documentation

◆ IndirectStubsInfo

Definition at line 248 of file OrcABISupport.h.

◆ JITReentryFn

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

Definition at line 251 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 658 of file OrcABISupport.cpp.

References llvm::sys::Memory::allocateMappedMemory(), llvm::errorCodeToError(), llvm::sys::Process::getPageSizeEstimate(), 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 539 of file OrcABISupport.cpp.

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 641 of file OrcABISupport.cpp.

References I.

Member Data Documentation

◆ PointerSize

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

Definition at line 245 of file OrcABISupport.h.

◆ ResolverCodeSize

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

Definition at line 247 of file OrcABISupport.h.

◆ TrampolineSize

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

Definition at line 246 of file OrcABISupport.h.


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