class ExecutionSession
Declaration
class ExecutionSession { /* full declaration omitted */ };
Description
An ExecutionSession represents a running JIT program.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1358
Member Variables
- private std::recursive_mutex SessionMutex
- private bool SessionOpen = true
- private std::unique_ptr<ExecutorProcessControl> EPC
- private std::unique_ptr<Platform> P
- private llvm::orc::ExecutionSession::ErrorReporter ReportError = logErrorsToStdErr
- private llvm::orc::ExecutionSession::DispatchTaskFunction DispatchTask = runOnCurrentThread
- private std::vector<ResourceManager*> ResourceManagers
- private std::vector<JITDylibSP> JDs
- private std::recursive_mutex OutstandingMUsMutex
- private std::vector<std::pair< std::unique_ptr<MaterializationUnit>, std::unique_ptr< MaterializationResponsibility>>> OutstandingMUs
- private std::mutex JITDispatchHandlersMutex
- private DenseMap< llvm::JITTargetAddress, std::shared_ptr<JITDispatchHandlerFunction>> JITDispatchHandlers
Method Overview
- public ExecutionSession(std::unique_ptr<ExecutorProcessControl> EPC)
- private llvm::Error IL_updateCandidatesFor(llvm::orc::JITDylib & JD, llvm::orc::JITDylibLookupFlags JDLookupFlags, llvm::orc::SymbolLookupSet & Candidates, llvm::orc::SymbolLookupSet * NonCandidates)
- private void OL_addDependencies(llvm::orc::MaterializationResponsibility & MR, const llvm::orc::SymbolStringPtr & Name, const llvm::orc::SymbolDependenceMap & Dependencies)
- private void OL_addDependenciesForAll(llvm::orc::MaterializationResponsibility & MR, const llvm::orc::SymbolDependenceMap & Dependencies)
- private void OL_applyQueryPhase1(std::unique_ptr<InProgressLookupState> IPLS, llvm::Error Err)
- private void OL_completeLookup(std::unique_ptr<InProgressLookupState> IPLS, std::shared_ptr<AsynchronousSymbolQuery> Q, llvm::orc::RegisterDependenciesFunction RegisterDependencies)
- private void OL_completeLookupFlags(std::unique_ptr<InProgressLookupState> IPLS, unique_function<void (Expected<llvm::orc::SymbolFlagsMap>)> OnComplete)
- private llvm::Error OL_defineMaterializing(llvm::orc::MaterializationResponsibility & MR, llvm::orc::SymbolFlagsMap SymbolFlags)
- private Expected<std::unique_ptr<MaterializationResponsibility>> OL_delegate(llvm::orc::MaterializationResponsibility & MR, const llvm::orc::SymbolNameSet & Symbols)
- private void OL_destroyMaterializationResponsibility(llvm::orc::MaterializationResponsibility & MR)
- private llvm::orc::SymbolNameSet OL_getRequestedSymbols(const llvm::orc::MaterializationResponsibility & MR)
- private llvm::Error OL_notifyEmitted(llvm::orc::MaterializationResponsibility & MR)
- private void OL_notifyFailed(llvm::orc::MaterializationResponsibility & MR)
- private llvm::Error OL_notifyResolved(llvm::orc::MaterializationResponsibility & MR, const llvm::orc::SymbolMap & Symbols)
- private llvm::Error OL_replace(llvm::orc::MaterializationResponsibility & MR, std::unique_ptr<MaterializationUnit> MU)
- public template <typename SPSSignature, typename... WrapperCallArgTs>llvm::Error callSPSWrapper(llvm::orc::ExecutorAddr WrapperFnAddr, WrapperCallArgTs &&... WrapperCallArgs)
- public template <typename SPSSignature, typename SendResultT, typename... ArgTs>void callSPSWrapperAsync(llvm::orc::ExecutorAddr WrapperFnAddr, SendResultT && SendResult, const ArgTs &... Args)
- public shared::WrapperFunctionResult callWrapper(llvm::orc::ExecutorAddr WrapperFnAddr, ArrayRef<char> ArgBuffer)
- public template <typename... ArgTs>void callWrapperAsync(ArgTs &&... Args)
- public llvm::orc::JITDylib & createBareJITDylib(std::string Name)
- public Expected<llvm::orc::JITDylib &> createJITDylib(std::string Name)
- private static std::unique_ptr<MaterializationResponsibility> createMaterializationResponsibility(llvm::orc::ResourceTracker & RT, llvm::orc::SymbolFlagsMap Symbols, llvm::orc::SymbolStringPtr InitSymbol)
- public void deregisterResourceManager(llvm::orc::ResourceManager & RM)
- private void destroyResourceTracker(llvm::orc::ResourceTracker & RT)
- private void dispatchOutstandingMUs()
- public void dispatchTask(std::unique_ptr<Task> T)
- public void dump(llvm::raw_ostream & OS)
- private void dumpDispatchInfo(llvm::orc::Task & T)
- public llvm::Error endSession()
- public llvm::orc::ExecutorProcessControl & getExecutorProcessControl()
- public llvm::orc::JITDylib * getJITDylibByName(llvm::StringRef Name)
- public llvm::orc::Platform * getPlatform()
- public std::shared_ptr<SymbolStringPool> getSymbolStringPool()
- public llvm::orc::SymbolStringPtr intern(llvm::StringRef SymName)
- private static void logErrorsToStdErr(llvm::Error Err)
- public Expected<llvm::JITEvaluatedSymbol> lookup(const llvm::orc::JITDylibSearchOrder & SearchOrder, llvm::orc::SymbolStringPtr Symbol, llvm::orc::SymbolState RequiredState = SymbolState::Ready)
- public void lookup(llvm::orc::LookupKind K, const llvm::orc::JITDylibSearchOrder & SearchOrder, llvm::orc::SymbolLookupSet Symbols, llvm::orc::SymbolState RequiredState, llvm::orc::SymbolsResolvedCallback NotifyComplete, llvm::orc::RegisterDependenciesFunction RegisterDependencies)
- public Expected<llvm::JITEvaluatedSymbol> lookup(ArrayRef<llvm::orc::JITDylib *> SearchOrder, llvm::StringRef Symbol, llvm::orc::SymbolState RequiredState = SymbolState::Ready)
- public Expected<llvm::JITEvaluatedSymbol> lookup(ArrayRef<llvm::orc::JITDylib *> SearchOrder, llvm::orc::SymbolStringPtr Symbol, llvm::orc::SymbolState RequiredState = SymbolState::Ready)
- public Expected<llvm::orc::SymbolMap> lookup(const llvm::orc::JITDylibSearchOrder & SearchOrder, llvm::orc::SymbolLookupSet Symbols, llvm::orc::LookupKind K = LookupKind::Static, llvm::orc::SymbolState RequiredState = SymbolState::Ready, llvm::orc::RegisterDependenciesFunction RegisterDependencies = NoDependenciesToRegister)
- public void lookupFlags(llvm::orc::LookupKind K, llvm::orc::JITDylibSearchOrder SearchOrder, llvm::orc::SymbolLookupSet Symbols, unique_function<void (Expected<llvm::orc::SymbolFlagsMap>)> OnComplete)
- public Expected<llvm::orc::SymbolFlagsMap> lookupFlags(llvm::orc::LookupKind K, llvm::orc::JITDylibSearchOrder SearchOrder, llvm::orc::SymbolLookupSet Symbols)
- public llvm::Error registerJITDispatchHandlers(llvm::orc::JITDylib & JD, llvm::orc::ExecutionSession::JITDispatchHandlerAssociationMap WFs)
- public void registerResourceManager(llvm::orc::ResourceManager & RM)
- public llvm::Error removeJITDylib(llvm::orc::JITDylib & JD)
- private llvm::Error removeResourceTracker(llvm::orc::ResourceTracker & RT)
- public void reportError(llvm::Error Err)
- public void runJITDispatchHandler(llvm::orc::ExecutionSession::SendResultFunction SendResult, llvm::JITTargetAddress HandlerFnTagAddr, ArrayRef<char> ArgBuffer)
- private static void runOnCurrentThread(std::unique_ptr<Task> T)
- public template <typename Func>decltype(auto) runSessionLocked(Func && F)
- public llvm::orc::ExecutionSession & setDispatchTask(llvm::orc::ExecutionSession::DispatchTaskFunction DispatchTask)
- public llvm::orc::ExecutionSession & setErrorReporter(llvm::orc::ExecutionSession::ErrorReporter ReportError)
- public void setPlatform(std::unique_ptr<Platform> P)
- private void transferResourceTracker(llvm::orc::ResourceTracker & DstRT, llvm::orc::ResourceTracker & SrcRT)
- public template <typename SPSSignature, typename ClassT, typename... MethodArgTs>static llvm::orc::ExecutionSession::JITDispatchHandlerFunction wrapAsyncWithSPS(ClassT * Instance, void (ClassT::*)(MethodArgTs...) Method)
- public template <typename SPSSignature, typename HandlerT>static llvm::orc::ExecutionSession::JITDispatchHandlerFunction wrapAsyncWithSPS(HandlerT && H)
- public ~ExecutionSession()
Methods
¶ExecutionSession(
std::unique_ptr<ExecutorProcessControl> EPC)
ExecutionSession(
std::unique_ptr<ExecutorProcessControl> EPC)
Description
Construct an ExecutionSession with the given ExecutorProcessControl object.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1389
Parameters
- std::unique_ptr<ExecutorProcessControl> EPC
¶llvm::Error IL_updateCandidatesFor(
llvm::orc::JITDylib& JD,
llvm::orc::JITDylibLookupFlags JDLookupFlags,
llvm::orc::SymbolLookupSet& Candidates,
llvm::orc::SymbolLookupSet* NonCandidates)
llvm::Error IL_updateCandidatesFor(
llvm::orc::JITDylib& JD,
llvm::orc::JITDylibLookupFlags JDLookupFlags,
llvm::orc::SymbolLookupSet& Candidates,
llvm::orc::SymbolLookupSet* NonCandidates)
Description
IL_updateCandidatesFor is called to remove already-defined symbols that match a given query from the set of candidate symbols to generate definitions for (no need to generate a definition if one already exists).
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1695
Parameters
- llvm::orc::JITDylib& JD
- llvm::orc::JITDylibLookupFlags JDLookupFlags
- llvm::orc::SymbolLookupSet& Candidates
- llvm::orc::SymbolLookupSet* NonCandidates
¶void OL_addDependencies(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolStringPtr& Name,
const llvm::orc::SymbolDependenceMap&
Dependencies)
void OL_addDependencies(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolStringPtr& Name,
const llvm::orc::SymbolDependenceMap&
Dependencies)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1733
Parameters
- llvm::orc::MaterializationResponsibility& MR
- const llvm::orc::SymbolStringPtr& Name
- const llvm::orc::SymbolDependenceMap& Dependencies
¶void OL_addDependenciesForAll(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolDependenceMap&
Dependencies)
void OL_addDependenciesForAll(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolDependenceMap&
Dependencies)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1736
Parameters
- llvm::orc::MaterializationResponsibility& MR
- const llvm::orc::SymbolDependenceMap& Dependencies
¶void OL_applyQueryPhase1(
std::unique_ptr<InProgressLookupState> IPLS,
llvm::Error Err)
void OL_applyQueryPhase1(
std::unique_ptr<InProgressLookupState> IPLS,
llvm::Error Err)
Description
OL_applyQueryPhase1 is an optionally re-startable loop for triggering definition generation. It is called when a lookup is performed, and again each time that LookupState::continueLookup is called.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1702
Parameters
- std::unique_ptr<InProgressLookupState> IPLS
- llvm::Error Err
¶void OL_completeLookup(
std::unique_ptr<InProgressLookupState> IPLS,
std::shared_ptr<AsynchronousSymbolQuery> Q,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies)
void OL_completeLookup(
std::unique_ptr<InProgressLookupState> IPLS,
std::shared_ptr<AsynchronousSymbolQuery> Q,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies)
Description
OL_completeLookup is run once phase 1 successfully completes for a lookup call. It attempts to attach the symbol to all symbol table entries and collect all MaterializationUnits to dispatch. If this method fails then all MaterializationUnits will be left un-materialized.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1709
Parameters
- std::unique_ptr<InProgressLookupState> IPLS
- std::shared_ptr<AsynchronousSymbolQuery> Q
- llvm::orc::RegisterDependenciesFunction RegisterDependencies
¶void OL_completeLookupFlags(
std::unique_ptr<InProgressLookupState> IPLS,
unique_function<
void(Expected<llvm::orc::SymbolFlagsMap>)>
OnComplete)
void OL_completeLookupFlags(
std::unique_ptr<InProgressLookupState> IPLS,
unique_function<
void(Expected<llvm::orc::SymbolFlagsMap>)>
OnComplete)
Description
OL_completeLookupFlags is run once phase 1 successfully completes for a lookupFlags call.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1715
Parameters
- std::unique_ptr<InProgressLookupState> IPLS
- unique_function<void( Expected<llvm::orc::SymbolFlagsMap>)> OnComplete
¶llvm::Error OL_defineMaterializing(
llvm::orc::MaterializationResponsibility& MR,
llvm::orc::SymbolFlagsMap SymbolFlags)
llvm::Error OL_defineMaterializing(
llvm::orc::MaterializationResponsibility& MR,
llvm::orc::SymbolFlagsMap SymbolFlags)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1726
Parameters
¶Expected<std::unique_ptr<
MaterializationResponsibility>>
OL_delegate(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolNameSet& Symbols)
Expected<std::unique_ptr<
MaterializationResponsibility>>
OL_delegate(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolNameSet& Symbols)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1732
Parameters
- llvm::orc::MaterializationResponsibility& MR
- const llvm::orc::SymbolNameSet& Symbols
¶void OL_destroyMaterializationResponsibility(
llvm::orc::MaterializationResponsibility& MR)
void OL_destroyMaterializationResponsibility(
llvm::orc::MaterializationResponsibility& MR)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1720
Parameters
¶llvm::orc::SymbolNameSet OL_getRequestedSymbols(
const llvm::orc::
MaterializationResponsibility& MR)
llvm::orc::SymbolNameSet OL_getRequestedSymbols(
const llvm::orc::
MaterializationResponsibility& MR)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1722
Parameters
- const llvm::orc::MaterializationResponsibility& MR
¶llvm::Error OL_notifyEmitted(
llvm::orc::MaterializationResponsibility& MR)
llvm::Error OL_notifyEmitted(
llvm::orc::MaterializationResponsibility& MR)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1725
Parameters
¶void OL_notifyFailed(
llvm::orc::MaterializationResponsibility& MR)
void OL_notifyFailed(
llvm::orc::MaterializationResponsibility& MR)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1728
Parameters
¶llvm::Error OL_notifyResolved(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolMap& Symbols)
llvm::Error OL_notifyResolved(
llvm::orc::MaterializationResponsibility& MR,
const llvm::orc::SymbolMap& Symbols)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1723
Parameters
- llvm::orc::MaterializationResponsibility& MR
- const llvm::orc::SymbolMap& Symbols
¶llvm::Error OL_replace(
llvm::orc::MaterializationResponsibility& MR,
std::unique_ptr<MaterializationUnit> MU)
llvm::Error OL_replace(
llvm::orc::MaterializationResponsibility& MR,
std::unique_ptr<MaterializationUnit> MU)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1729
Parameters
- llvm::orc::MaterializationResponsibility& MR
- std::unique_ptr<MaterializationUnit> MU
¶template <typename SPSSignature,
typename... WrapperCallArgTs>
llvm::Error callSPSWrapper(
llvm::orc::ExecutorAddr WrapperFnAddr,
WrapperCallArgTs&&... WrapperCallArgs)
template <typename SPSSignature,
typename... WrapperCallArgTs>
llvm::Error callSPSWrapper(
llvm::orc::ExecutorAddr WrapperFnAddr,
WrapperCallArgTs&&... WrapperCallArgs)
Description
Run a wrapper function using SPS to serialize the arguments and deserialize the results. If SPSSignature is a non-void function signature then the second argument (the first in the Args list) should be a reference to a return value.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1603
Templates
- SPSSignature
- WrapperCallArgTs
Parameters
- llvm::orc::ExecutorAddr WrapperFnAddr
- WrapperCallArgTs&&... WrapperCallArgs
¶template <typename SPSSignature,
typename SendResultT,
typename... ArgTs>
void callSPSWrapperAsync(
llvm::orc::ExecutorAddr WrapperFnAddr,
SendResultT&& SendResult,
const ArgTs&... Args)
template <typename SPSSignature,
typename SendResultT,
typename... ArgTs>
void callSPSWrapperAsync(
llvm::orc::ExecutorAddr WrapperFnAddr,
SendResultT&& SendResult,
const ArgTs&... Args)
Description
Run a wrapper function using SPS to serialize the arguments and deserialize the results.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1591
Templates
- SPSSignature
- SendResultT
- ArgTs
Parameters
- llvm::orc::ExecutorAddr WrapperFnAddr
- SendResultT&& SendResult
- const ArgTs&... Args
¶shared::WrapperFunctionResult callWrapper(
llvm::orc::ExecutorAddr WrapperFnAddr,
ArrayRef<char> ArgBuffer)
shared::WrapperFunctionResult callWrapper(
llvm::orc::ExecutorAddr WrapperFnAddr,
ArrayRef<char> ArgBuffer)
Description
Run a wrapper function in the executor. The wrapper function should be callable as: {.cpp}
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1583
Parameters
- llvm::orc::ExecutorAddr WrapperFnAddr
- ArrayRef<char> ArgBuffer
¶template <typename... ArgTs>
void callWrapperAsync(ArgTs&&... Args)
template <typename... ArgTs>
void callWrapperAsync(ArgTs&&... Args)
Description
Run a wrapper function in the executor. The wrapper function should be callable as: {.cpp} The given OnComplete function will be called to return the result.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1573
Templates
- ArgTs
Parameters
- ArgTs&&... Args
¶llvm::orc::JITDylib& createBareJITDylib(
std::string Name)
llvm::orc::JITDylib& createBareJITDylib(
std::string Name)
Description
Add a new bare JITDylib to this ExecutionSession. The JITDylib Name is required to be unique. Clients should verify that names are not being re-used (E.g. by calling getJITDylibByName) if names are based on user input. This call does not install any library code or symbols into the newly created JITDylib. The client is responsible for all configuration.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1444
Parameters
- std::string Name
¶Expected<llvm::orc::JITDylib&> createJITDylib(
std::string Name)
Expected<llvm::orc::JITDylib&> createJITDylib(
std::string Name)
Description
Add a new JITDylib to this ExecutionSession. The JITDylib Name is required to be unique. Clients should verify that names are not being re-used (e.g. by calling getJITDylibByName) if names are based on user input. If a Platform is attached then Platform::setupJITDylib will be called to install standard platform symbols (e.g. standard library interposes). If no Platform is attached this call is equivalent to createBareJITDylib.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1455
Parameters
- std::string Name
¶static std::unique_ptr<
MaterializationResponsibility>
createMaterializationResponsibility(
llvm::orc::ResourceTracker& RT,
llvm::orc::SymbolFlagsMap Symbols,
llvm::orc::SymbolStringPtr InitSymbol)
static std::unique_ptr<
MaterializationResponsibility>
createMaterializationResponsibility(
llvm::orc::ResourceTracker& RT,
llvm::orc::SymbolFlagsMap Symbols,
llvm::orc::SymbolStringPtr InitSymbol)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1675
Parameters
- llvm::orc::ResourceTracker& RT
- llvm::orc::SymbolFlagsMap Symbols
- llvm::orc::SymbolStringPtr InitSymbol
¶void deregisterResourceManager(
llvm::orc::ResourceManager& RM)
void deregisterResourceManager(
llvm::orc::ResourceManager& RM)
Description
Deregister the given ResourceManager with this ExecutionSession. Manager must have been previously registered.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1430
Parameters
¶void destroyResourceTracker(
llvm::orc::ResourceTracker& RT)
void destroyResourceTracker(
llvm::orc::ResourceTracker& RT)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1688
Parameters
¶void dispatchOutstandingMUs()
void dispatchOutstandingMUs()
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1672
¶void dispatchTask(std::unique_ptr<Task> T)
void dispatchTask(std::unique_ptr<Task> T)
Description
Materialize the given unit.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1557
Parameters
- std::unique_ptr<Task> T
¶void dump(llvm::raw_ostream& OS)
void dump(llvm::raw_ostream& OS)
Description
Dump the state of all the JITDylibs in this session.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1663
Parameters
¶void dumpDispatchInfo(llvm::orc::Task& T)
void dumpDispatchInfo(llvm::orc::Task& T)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1740
Parameters
¶llvm::Error endSession()
llvm::Error endSession()
Description
End the session. Closes all JITDylibs and disconnects from the executor. Clients must call this method before destroying the session.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1397
¶llvm::orc::ExecutorProcessControl&
getExecutorProcessControl()
llvm::orc::ExecutorProcessControl&
getExecutorProcessControl()
Description
Get the ExecutorProcessControl object associated with this ExecutionSession.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1401
¶llvm::orc::JITDylib* getJITDylibByName(
llvm::StringRef Name)
llvm::orc::JITDylib* getJITDylibByName(
llvm::StringRef Name)
Description
Return a pointer to the "name" JITDylib. Ownership of JITDylib remains within Execution Session
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1434
Parameters
- llvm::StringRef Name
¶llvm::orc::Platform* getPlatform()
llvm::orc::Platform* getPlatform()
Description
Get the Platform for this session. Will return null if no Platform has been set for this ExecutionSession.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1416
¶std::shared_ptr<SymbolStringPool>
getSymbolStringPool()
std::shared_ptr<SymbolStringPool>
getSymbolStringPool()
Description
Get the SymbolStringPool for this instance.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1404
¶llvm::orc::SymbolStringPtr intern(
llvm::StringRef SymName)
llvm::orc::SymbolStringPtr intern(
llvm::StringRef SymName)
Description
Add a symbol name to the SymbolStringPool and return a pointer to it.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1409
Parameters
- llvm::StringRef SymName
¶static void logErrorsToStdErr(llvm::Error Err)
static void logErrorsToStdErr(llvm::Error Err)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1666
Parameters
- llvm::Error Err
¶Expected<llvm::JITEvaluatedSymbol> lookup(
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolStringPtr Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Expected<llvm::JITEvaluatedSymbol> lookup(
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolStringPtr Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Description
Convenience version of blocking lookup. Searches each of the JITDylibs in the search order in turn for the given symbol.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1539
Parameters
- const llvm::orc::JITDylibSearchOrder& SearchOrder
- llvm::orc::SymbolStringPtr Symbol
- llvm::orc::SymbolState RequiredState = SymbolState::Ready
¶void lookup(
llvm::orc::LookupKind K,
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
llvm::orc::SymbolState RequiredState,
llvm::orc::SymbolsResolvedCallback
NotifyComplete,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies)
void lookup(
llvm::orc::LookupKind K,
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
llvm::orc::SymbolState RequiredState,
llvm::orc::SymbolsResolvedCallback
NotifyComplete,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies)
Description
Search the given JITDylibs for the given symbols. SearchOrder lists the JITDylibs to search. For each dylib, the associated boolean indicates whether the search should match against non-exported (hidden visibility) symbols in that dylib (true means match against non-exported symbols, false means do not match). The NotifyComplete callback will be called once all requested symbols reach the required state. If all symbols are found, the RegisterDependencies function will be called while the session lock is held. This gives clients a chance to register dependencies for on the queried symbols for any symbols they are materializing (if a MaterializationResponsibility instance is present, this can be implemented by calling MaterializationResponsibility::addDependencies). If there are no dependenant symbols for this query (e.g. it is being made by a top level client to get an address to call) then the value NoDependenciesToRegister can be used.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1516
Parameters
- llvm::orc::LookupKind K
- const llvm::orc::JITDylibSearchOrder& SearchOrder
- llvm::orc::SymbolLookupSet Symbols
- llvm::orc::SymbolState RequiredState
- llvm::orc::SymbolsResolvedCallback NotifyComplete
- llvm::orc::RegisterDependenciesFunction RegisterDependencies
¶Expected<llvm::JITEvaluatedSymbol> lookup(
ArrayRef<llvm::orc::JITDylib*> SearchOrder,
llvm::StringRef Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Expected<llvm::JITEvaluatedSymbol> lookup(
ArrayRef<llvm::orc::JITDylib*> SearchOrder,
llvm::StringRef Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Description
Convenience version of blocking lookup. Searches each of the JITDylibs in the search order in turn for the given symbol. The search will not find non-exported symbols.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1553
Parameters
- ArrayRef<llvm::orc::JITDylib*> SearchOrder
- llvm::StringRef Symbol
- llvm::orc::SymbolState RequiredState = SymbolState::Ready
¶Expected<llvm::JITEvaluatedSymbol> lookup(
ArrayRef<llvm::orc::JITDylib*> SearchOrder,
llvm::orc::SymbolStringPtr Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Expected<llvm::JITEvaluatedSymbol> lookup(
ArrayRef<llvm::orc::JITDylib*> SearchOrder,
llvm::orc::SymbolStringPtr Symbol,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready)
Description
Convenience version of blocking lookup. Searches each of the JITDylibs in the search order in turn for the given symbol. The search will not find non-exported symbols.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1546
Parameters
- ArrayRef<llvm::orc::JITDylib*> SearchOrder
- llvm::orc::SymbolStringPtr Symbol
- llvm::orc::SymbolState RequiredState = SymbolState::Ready
¶Expected<llvm::orc::SymbolMap> lookup(
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
llvm::orc::LookupKind K = LookupKind::Static,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies =
NoDependenciesToRegister)
Expected<llvm::orc::SymbolMap> lookup(
const llvm::orc::JITDylibSearchOrder&
SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
llvm::orc::LookupKind K = LookupKind::Static,
llvm::orc::SymbolState RequiredState =
SymbolState::Ready,
llvm::orc::RegisterDependenciesFunction
RegisterDependencies =
NoDependenciesToRegister)
Description
Blocking version of lookup above. Returns the resolved symbol map. If WaitUntilReady is true (the default), will not return until all requested symbols are ready (or an error occurs). If WaitUntilReady is false, will return as soon as all requested symbols are resolved, or an error occurs. If WaitUntilReady is false and an error occurs after resolution, the function will return a success value, but the error will be reported via reportErrors.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1528
Parameters
- const llvm::orc::JITDylibSearchOrder& SearchOrder
- llvm::orc::SymbolLookupSet Symbols
- llvm::orc::LookupKind K = LookupKind::Static
- llvm::orc::SymbolState RequiredState = SymbolState::Ready
- llvm::orc::RegisterDependenciesFunction RegisterDependencies = NoDependenciesToRegister
¶void lookupFlags(
llvm::orc::LookupKind K,
llvm::orc::JITDylibSearchOrder SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
unique_function<
void(Expected<llvm::orc::SymbolFlagsMap>)>
OnComplete)
void lookupFlags(
llvm::orc::LookupKind K,
llvm::orc::JITDylibSearchOrder SearchOrder,
llvm::orc::SymbolLookupSet Symbols,
unique_function<
void(Expected<llvm::orc::SymbolFlagsMap>)>
OnComplete)
Description
Search the given JITDylibs to find the flags associated with each of the given symbols.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1488
Parameters
- llvm::orc::LookupKind K
- llvm::orc::JITDylibSearchOrder SearchOrder
- llvm::orc::SymbolLookupSet Symbols
- unique_function<void( Expected<llvm::orc::SymbolFlagsMap>)> OnComplete
¶Expected<llvm::orc::SymbolFlagsMap> lookupFlags(
llvm::orc::LookupKind K,
llvm::orc::JITDylibSearchOrder SearchOrder,
llvm::orc::SymbolLookupSet Symbols)
Expected<llvm::orc::SymbolFlagsMap> lookupFlags(
llvm::orc::LookupKind K,
llvm::orc::JITDylibSearchOrder SearchOrder,
llvm::orc::SymbolLookupSet Symbols)
Description
Blocking version of lookupFlags.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1493
Parameters
- llvm::orc::LookupKind K
- llvm::orc::JITDylibSearchOrder SearchOrder
- llvm::orc::SymbolLookupSet Symbols
¶llvm::Error registerJITDispatchHandlers(
llvm::orc::JITDylib& JD,
llvm::orc::ExecutionSession::
JITDispatchHandlerAssociationMap WFs)
llvm::Error registerJITDispatchHandlers(
llvm::orc::JITDylib& JD,
llvm::orc::ExecutionSession::
JITDispatchHandlerAssociationMap WFs)
Description
For each tag symbol name, associate the corresponding AsyncHandlerWrapperFunction with the address of that symbol. The handler becomes callable from the executor using the ORC runtime __orc_rt_jit_dispatch function and the given tag. Tag symbols will be looked up in JD using LookupKind::Static, JITDylibLookupFlags::MatchAllSymbols (hidden tags will be found), and LookupFlags::WeaklyReferencedSymbol. Missing tag definitions will not cause an error, the handler will simply be dropped.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1651
Parameters
- llvm::orc::JITDylib& JD
- llvm::orc::ExecutionSession:: JITDispatchHandlerAssociationMap WFs
¶void registerResourceManager(
llvm::orc::ResourceManager& RM)
void registerResourceManager(
llvm::orc::ResourceManager& RM)
Description
Register the given ResourceManager with this ExecutionSession. Managers will be notified of events in reverse order of registration.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1426
Parameters
¶llvm::Error removeJITDylib(
llvm::orc::JITDylib& JD)
llvm::Error removeJITDylib(
llvm::orc::JITDylib& JD)
Description
Closes the given JITDylib. This method clears all resources held for the JITDylib, puts it in the closed state, and clears all references held by the ExecutionSession and other JITDylibs. No further code can be added to the JITDylib, and the object will be freed once any remaining JITDylibSPs to it are destroyed. This method does *not* run static destructors. This method can only be called once for each JITDylib.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1467
Parameters
¶llvm::Error removeResourceTracker(
llvm::orc::ResourceTracker& RT)
llvm::Error removeResourceTracker(
llvm::orc::ResourceTracker& RT)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1686
Parameters
¶void reportError(llvm::Error Err)
void reportError(llvm::Error Err)
Description
Report a error for this execution session. Unhandled errors can be sent here to log them.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1478
Parameters
- llvm::Error Err
¶void runJITDispatchHandler(
llvm::orc::ExecutionSession::
SendResultFunction SendResult,
llvm::JITTargetAddress HandlerFnTagAddr,
ArrayRef<char> ArgBuffer)
void runJITDispatchHandler(
llvm::orc::ExecutionSession::
SendResultFunction SendResult,
llvm::JITTargetAddress HandlerFnTagAddr,
ArrayRef<char> ArgBuffer)
Description
Run a registered jit-side wrapper function. This should be called by the ExecutorProcessControl instance in response to incoming jit-dispatch requests from the executor.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1658
Parameters
- llvm::orc::ExecutionSession::SendResultFunction SendResult
- llvm::JITTargetAddress HandlerFnTagAddr
- ArrayRef<char> ArgBuffer
¶static void runOnCurrentThread(
std::unique_ptr<Task> T)
static void runOnCurrentThread(
std::unique_ptr<Task> T)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1670
Parameters
- std::unique_ptr<Task> T
¶template <typename Func>
decltype(auto) runSessionLocked(Func&& F)
template <typename Func>
decltype(auto) runSessionLocked(Func&& F)
Description
Run the given lambda with the session mutex locked.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1419
Templates
- Func
Parameters
- Func&& F
¶llvm::orc::ExecutionSession& setDispatchTask(
llvm::orc::ExecutionSession::
DispatchTaskFunction DispatchTask)
llvm::orc::ExecutionSession& setDispatchTask(
llvm::orc::ExecutionSession::
DispatchTaskFunction DispatchTask)
Description
Set the task dispatch function.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1481
Parameters
- llvm::orc::ExecutionSession::DispatchTaskFunction DispatchTask
¶llvm::orc::ExecutionSession& setErrorReporter(
llvm::orc::ExecutionSession::ErrorReporter
ReportError)
llvm::orc::ExecutionSession& setErrorReporter(
llvm::orc::ExecutionSession::ErrorReporter
ReportError)
Description
Set the error reporter function.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1470
Parameters
- llvm::orc::ExecutionSession::ErrorReporter ReportError
¶void setPlatform(std::unique_ptr<Platform> P)
void setPlatform(std::unique_ptr<Platform> P)
Description
Set the Platform for this ExecutionSession.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1412
Parameters
- std::unique_ptr<Platform> P
¶void transferResourceTracker(
llvm::orc::ResourceTracker& DstRT,
llvm::orc::ResourceTracker& SrcRT)
void transferResourceTracker(
llvm::orc::ResourceTracker& DstRT,
llvm::orc::ResourceTracker& SrcRT)
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1687
Parameters
- llvm::orc::ResourceTracker& DstRT
- llvm::orc::ResourceTracker& SrcRT
¶template <typename SPSSignature,
typename ClassT,
typename... MethodArgTs>
static llvm::orc::ExecutionSession::
JITDispatchHandlerFunction
wrapAsyncWithSPS(
ClassT* Instance,
void (ClassT::*)(MethodArgTs...) Method)
template <typename SPSSignature,
typename ClassT,
typename... MethodArgTs>
static llvm::orc::ExecutionSession::
JITDispatchHandlerFunction
wrapAsyncWithSPS(
ClassT* Instance,
void (ClassT::*)(MethodArgTs...) Method)
Description
Wrap a class method that takes concrete argument types (and a sender for a concrete return type) to produce an AsyncHandlerWrapperFunction. Uses SPS to unpack teh arguments and pack the result. This function is intended to support easy construction of AsyncHandlerWrapperFunctions that can be associated with a tag (using registerJITDispatchHandler) and called from the executor.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1635
Templates
- SPSSignature
- ClassT
- MethodArgTs
Parameters
- ClassT* Instance
- void (ClassT::*)(MethodArgTs...) Method
¶template <typename SPSSignature,
typename HandlerT>
static llvm::orc::ExecutionSession::
JITDispatchHandlerFunction
wrapAsyncWithSPS(HandlerT&& H)
template <typename SPSSignature,
typename HandlerT>
static llvm::orc::ExecutionSession::
JITDispatchHandlerFunction
wrapAsyncWithSPS(HandlerT&& H)
Description
Wrap a handler that takes concrete argument types (and a sender for a concrete return type) to produce an AsyncHandlerWrapperFunction. Uses SPS to unpack the arguments and pack the result. This function is intended to support easy construction of AsyncHandlerWrapperFunctions that can be associated with a tag (using registerJITDispatchHandler) and called from the executor.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1617
Templates
- SPSSignature
- HandlerT
Parameters
- HandlerT&& H
¶~ExecutionSession()
~ExecutionSession()
Description
Destroy an ExecutionSession. Verifies that endSession was called prior to destruction.
Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1393