class OrcMips32_Base

Declaration

class OrcMips32_Base { /* full declaration omitted */ };

Declared at: llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h:235

Member Variables

public static const unsigned int PointerSize = 4
public static const unsigned int TrampolineSize = 20
public static const unsigned int StubSize = 8
public static const unsigned int StubToPointerMaxDisplacement = 1 << 31
public static const unsigned int ResolverCodeSize = 252

Method Overview

  • public static void writeIndirectStubsBlock(char * StubsBlockWorkingMem, llvm::JITTargetAddress StubsBlockTargetAddress, llvm::JITTargetAddress PointersBlockTargetAddress, unsigned int NumStubs)
  • public static void writeResolverCode(char * ResolverBlockWorkingMem, llvm::JITTargetAddress ResolverBlockTargetAddress, llvm::JITTargetAddress ReentryFnAddr, llvm::JITTargetAddress ReentryCtxAddr, bool isBigEndian)
  • public static void writeTrampolines(char * TrampolineBlockWorkingMem, llvm::JITTargetAddress TrampolineBlockTargetAddress, llvm::JITTargetAddress ResolverAddr, unsigned int NumTrampolines)

Methods

static void writeIndirectStubsBlock(
    char* StubsBlockWorkingMem,
    llvm::JITTargetAddress
        StubsBlockTargetAddress,
    llvm::JITTargetAddress
        PointersBlockTargetAddress,
    unsigned int NumStubs)

Description

Write NumStubs indirect stubs to working memory at StubsBlockWorkingMem. Stubs will be written as if linked at StubsBlockTargetAddress, with the Nth stub using the Nth pointer in memory starting at PointersBlockTargetAddress.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h:267

Parameters

char* StubsBlockWorkingMem
llvm::JITTargetAddress StubsBlockTargetAddress
llvm::JITTargetAddress PointersBlockTargetAddress
unsigned int NumStubs

static void writeResolverCode(
    char* ResolverBlockWorkingMem,
    llvm::JITTargetAddress
        ResolverBlockTargetAddress,
    llvm::JITTargetAddress ReentryFnAddr,
    llvm::JITTargetAddress ReentryCtxAddr,
    bool isBigEndian)

Description

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.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h:258

Parameters

char* ResolverBlockWorkingMem
llvm::JITTargetAddress ResolverBlockTargetAddress
llvm::JITTargetAddress ReentryFnAddr
llvm::JITTargetAddress ReentryCtxAddr
bool isBigEndian

static void writeTrampolines(
    char* TrampolineBlockWorkingMem,
    llvm::JITTargetAddress
        TrampolineBlockTargetAddress,
    llvm::JITTargetAddress ResolverAddr,
    unsigned int NumTrampolines)

Description

Write the requested number of trampolines into the given memory, which must be big enough to hold 1 pointer, plus NumTrampolines trampolines.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/OrcABISupport.h:246

Parameters

char* TrampolineBlockWorkingMem
llvm::JITTargetAddress TrampolineBlockTargetAddress
llvm::JITTargetAddress ResolverAddr
unsigned int NumTrampolines