class LazyCallThroughManager

Declaration

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

Description

Manages a set of 'lazy call-through' trampolines. These are compiler re-entry trampolines that are pre-bound to look up a given symbol in a given JITDylib, then jump to that address. Since compilation of symbols is triggered on first lookup, these call-through trampolines can be used to implement lazy compilation. The easiest way to construct these call-throughs is using the lazyReexport function.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:38

Member Variables

private std::mutex LCTMMutex
private llvm::orc::ExecutionSession& ES
private llvm::JITTargetAddress ErrorHandlerAddr
private llvm::orc::TrampolinePool* TP = nullptr
private llvm::orc::LazyCallThroughManager::ReexportsMap Reexports
private llvm::orc::LazyCallThroughManager::NotifiersMap Notifiers

Method Overview

  • public LazyCallThroughManager(llvm::orc::ExecutionSession & ES, llvm::JITTargetAddress ErrorHandlerAddr, llvm::orc::TrampolinePool * TP)
  • protected Expected<llvm::orc::LazyCallThroughManager::ReexportsEntry> findReexport(llvm::JITTargetAddress TrampolineAddr)
  • public Expected<llvm::JITTargetAddress> getCallThroughTrampoline(llvm::orc::JITDylib & SourceJD, llvm::orc::SymbolStringPtr SymbolName, llvm::orc::LazyCallThroughManager::NotifyResolvedFunction NotifyResolved)
  • protected llvm::Error notifyResolved(llvm::JITTargetAddress TrampolineAddr, llvm::JITTargetAddress ResolvedAddr)
  • protected llvm::JITTargetAddress reportCallThroughError(llvm::Error Err)
  • public void resolveTrampolineLandingAddress(llvm::JITTargetAddress TrampolineAddr, TrampolinePool::NotifyLandingResolvedFunction NotifyLandingResolved)
  • protected void setTrampolinePool(llvm::orc::TrampolinePool & TP)
  • public virtual ~LazyCallThroughManager()

Methods

LazyCallThroughManager(
    llvm::orc::ExecutionSession& ES,
    llvm::JITTargetAddress ErrorHandlerAddr,
    llvm::orc::TrampolinePool* TP)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:43

Parameters

llvm::orc::ExecutionSession& ES
llvm::JITTargetAddress ErrorHandlerAddr
llvm::orc::TrampolinePool* TP

Expected<llvm::orc::LazyCallThroughManager::
             ReexportsEntry>
findReexport(
    llvm::JITTargetAddress TrampolineAddr)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:68

Parameters

llvm::JITTargetAddress TrampolineAddr

Expected<llvm::JITTargetAddress>
getCallThroughTrampoline(
    llvm::orc::JITDylib& SourceJD,
    llvm::orc::SymbolStringPtr SymbolName,
    llvm::orc::LazyCallThroughManager::
        NotifyResolvedFunction NotifyResolved)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:49

Parameters

llvm::orc::JITDylib& SourceJD
llvm::orc::SymbolStringPtr SymbolName
llvm::orc::LazyCallThroughManager:: NotifyResolvedFunction NotifyResolved

llvm::Error notifyResolved(
    llvm::JITTargetAddress TrampolineAddr,
    llvm::JITTargetAddress ResolvedAddr)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:69

Parameters

llvm::JITTargetAddress TrampolineAddr
llvm::JITTargetAddress ResolvedAddr

llvm::JITTargetAddress reportCallThroughError(
    llvm::Error Err)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:67

Parameters

llvm::Error Err

void resolveTrampolineLandingAddress(
    llvm::JITTargetAddress TrampolineAddr,
    TrampolinePool::NotifyLandingResolvedFunction
        NotifyLandingResolved)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:52

Parameters

llvm::JITTargetAddress TrampolineAddr
TrampolinePool::NotifyLandingResolvedFunction NotifyLandingResolved

void setTrampolinePool(
    llvm::orc::TrampolinePool& TP)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:71

Parameters

llvm::orc::TrampolinePool& TP

virtual ~LazyCallThroughManager()

Declared at: llvm/include/llvm/ExecutionEngine/Orc/LazyReexports.h:56