LLVM 20.0.0git
|
Manages a set of 'lazy call-through' trampolines. More...
#include "llvm/ExecutionEngine/Orc/LazyReexports.h"
Classes | |
struct | ReexportsEntry |
Public Types | |
using | NotifyResolvedFunction = unique_function< Error(ExecutorAddr ResolvedAddr)> |
Public Member Functions | |
LazyCallThroughManager (ExecutionSession &ES, ExecutorAddr ErrorHandlerAddr, TrampolinePool *TP) | |
Expected< ExecutorAddr > | getCallThroughTrampoline (JITDylib &SourceJD, SymbolStringPtr SymbolName, NotifyResolvedFunction NotifyResolved) |
void | resolveTrampolineLandingAddress (ExecutorAddr TrampolineAddr, TrampolinePool::NotifyLandingResolvedFunction NotifyLandingResolved) |
virtual | ~LazyCallThroughManager ()=default |
Protected Types | |
using | NotifyLandingResolvedFunction = TrampolinePool::NotifyLandingResolvedFunction |
Protected Member Functions | |
ExecutorAddr | reportCallThroughError (Error Err) |
Expected< ReexportsEntry > | findReexport (ExecutorAddr TrampolineAddr) |
Error | notifyResolved (ExecutorAddr TrampolineAddr, ExecutorAddr ResolvedAddr) |
void | setTrampolinePool (TrampolinePool &TP) |
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.
Definition at line 39 of file LazyReexports.h.
|
protected |
Definition at line 60 of file LazyReexports.h.
using llvm::orc::LazyCallThroughManager::NotifyResolvedFunction = unique_function<Error(ExecutorAddr ResolvedAddr)> |
Definition at line 41 of file LazyReexports.h.
llvm::orc::LazyCallThroughManager::LazyCallThroughManager | ( | ExecutionSession & | ES, |
ExecutorAddr | ErrorHandlerAddr, | ||
TrampolinePool * | TP | ||
) |
Definition at line 21 of file LazyReexports.cpp.
|
virtualdefault |
|
protected |
Definition at line 48 of file LazyReexports.cpp.
References llvm::createStringError(), llvm::formatv(), I, and llvm::inconvertibleErrorCode().
Referenced by resolveTrampolineLandingAddress().
Expected< ExecutorAddr > llvm::orc::LazyCallThroughManager::getCallThroughTrampoline | ( | JITDylib & | SourceJD, |
SymbolStringPtr | SymbolName, | ||
NotifyResolvedFunction | NotifyResolved | ||
) |
Definition at line 26 of file LazyReexports.cpp.
References assert(), and llvm::orc::TrampolinePool::getTrampoline().
|
protected |
Definition at line 58 of file LazyReexports.cpp.
References I, and llvm::Error::success().
Referenced by resolveTrampolineLandingAddress().
|
protected |
Definition at line 42 of file LazyReexports.cpp.
References llvm::orc::ExecutionSession::reportError().
Referenced by resolveTrampolineLandingAddress().
void llvm::orc::LazyCallThroughManager::resolveTrampolineLandingAddress | ( | ExecutorAddr | TrampolineAddr, |
TrampolinePool::NotifyLandingResolvedFunction | NotifyLandingResolved | ||
) |
Definition at line 73 of file LazyReexports.cpp.
References assert(), findReexport(), llvm::orc::ExecutionSession::lookup(), llvm::orc::makeJITDylibSearchOrder(), llvm::orc::MatchAllSymbols, llvm::orc::NoDependenciesToRegister, notifyResolved(), llvm::orc::Ready, reportCallThroughError(), llvm::orc::Result, and llvm::orc::Static.
|
inlineprotected |
Definition at line 71 of file LazyReexports.h.