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)

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)

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)

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)

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)

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)

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)

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)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1726

Parameters

llvm::orc::MaterializationResponsibility& MR
llvm::orc::SymbolFlagsMap SymbolFlags

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)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1720

Parameters

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)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1725

Parameters

llvm::orc::MaterializationResponsibility& MR

void OL_notifyFailed(
    llvm::orc::MaterializationResponsibility& MR)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1728

Parameters

llvm::orc::MaterializationResponsibility& MR

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)

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)

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)

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)

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)

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)

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)

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)

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)

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

llvm::orc::ResourceManager& RM

void destroyResourceTracker(
    llvm::orc::ResourceTracker& RT)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1688

Parameters

llvm::orc::ResourceTracker& RT

void dispatchOutstandingMUs()

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1672

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)

Description

Dump the state of all the JITDylibs in this session.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1663

Parameters

llvm::raw_ostream& OS

void dumpDispatchInfo(llvm::orc::Task& T)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1740

Parameters

llvm::orc::Task& T

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()

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)

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()

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()

Description

Get the SymbolStringPool for this instance.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1404

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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::orc::ResourceManager& RM

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::orc::JITDylib& JD

llvm::Error removeResourceTracker(
    llvm::orc::ResourceTracker& RT)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1686

Parameters

llvm::orc::ResourceTracker& RT

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)

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)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1670

Parameters

std::unique_ptr<Task> T

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)

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)

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)

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)

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)

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)

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()

Description

Destroy an ExecutionSession. Verifies that endSession was called prior to destruction.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/Core.h:1393