|
LLVM 22.0.0git
|
A ExecutorProcessControl implementation targeting the current process. More...
#include "llvm/ExecutionEngine/Orc/SelfExecutorProcessControl.h"
Public Member Functions | |
| SelfExecutorProcessControl (std::shared_ptr< SymbolStringPool > SSP, std::unique_ptr< TaskDispatcher > D, Triple TargetTriple, unsigned PageSize, std::unique_ptr< jitlink::JITLinkMemoryManager > MemMgr) | |
| Expected< int32_t > | runAsMain (ExecutorAddr MainFnAddr, ArrayRef< std::string > Args) override |
| Run function with a main-like signature. | |
| Expected< int32_t > | runAsVoidFunction (ExecutorAddr VoidFnAddr) override |
| Run function with a int (*)(void) signature. | |
| Expected< int32_t > | runAsIntFunction (ExecutorAddr IntFnAddr, int Arg) override |
| Run function with a int (*)(int) signature. | |
| void | callWrapperAsync (ExecutorAddr WrapperFnAddr, IncomingWFRHandler OnComplete, ArrayRef< char > ArgBuffer) override |
| Run a wrapper function in the executor. | |
| Error | disconnect () override |
| Disconnect from the target process. | |
| Public Member Functions inherited from llvm::orc::ExecutorProcessControl | |
| ExecutorProcessControl (std::shared_ptr< SymbolStringPool > SSP, std::unique_ptr< TaskDispatcher > D) | |
| virtual | ~ExecutorProcessControl () |
| ExecutionSession & | getExecutionSession () |
| Return the ExecutionSession associated with this instance. | |
| SymbolStringPtr | intern (StringRef SymName) |
| Intern a symbol name in the SymbolStringPool. | |
| std::shared_ptr< SymbolStringPool > | getSymbolStringPool () const |
| Return a shared pointer to the SymbolStringPool for this instance. | |
| TaskDispatcher & | getDispatcher () |
| const Triple & | getTargetTriple () const |
| Return the Triple for the target process. | |
| unsigned | getPageSize () const |
| Get the page size for the target process. | |
| const JITDispatchInfo & | getJITDispatchInfo () const |
| Get the JIT dispatch function and context address for the executor. | |
| MemoryAccess & | getMemoryAccess () const |
| Return a MemoryAccess object for the target process. | |
| jitlink::JITLinkMemoryManager & | getMemMgr () const |
| Return a JITLinkMemoryManager for the target process. | |
| DylibManager & | getDylibMgr () const |
| Return the DylibManager for the target process. | |
| const StringMap< std::vector< char > > & | getBootstrapMap () const |
| Returns the bootstrap map. | |
| template<typename T, typename SPSTagT> | |
| Error | getBootstrapMapValue (StringRef Key, std::optional< T > &Val) const |
| Look up and SPS-deserialize a bootstrap map value. | |
| const StringMap< ExecutorAddr > & | getBootstrapSymbolsMap () const |
| Returns the bootstrap symbol map. | |
| Error | getBootstrapSymbols (ArrayRef< std::pair< ExecutorAddr &, StringRef > > Pairs) const |
| For each (ExecutorAddr&, StringRef) pair, looks up the string in the bootstrap symbols map and writes its address to the ExecutorAddr if found. | |
| template<typename RunPolicyT, typename FnT> | |
| void | callWrapperAsync (RunPolicyT &&Runner, ExecutorAddr WrapperFnAddr, FnT &&OnComplete, ArrayRef< char > ArgBuffer) |
| Run a wrapper function in the executor using the given Runner to dispatch OnComplete when the result is ready. | |
| template<typename FnT> | |
| void | callWrapperAsync (ExecutorAddr WrapperFnAddr, FnT &&OnComplete, ArrayRef< char > ArgBuffer) |
| Run a wrapper function in the executor. | |
| shared::WrapperFunctionResult | callWrapper (ExecutorAddr WrapperFnAddr, ArrayRef< char > ArgBuffer) |
| Run a wrapper function in the executor. | |
| template<typename SPSSignature, typename RunPolicyT, typename SendResultT, typename... ArgTs> | |
| void | callSPSWrapperAsync (RunPolicyT &&Runner, ExecutorAddr WrapperFnAddr, SendResultT &&SendResult, const ArgTs &...Args) |
| Run a wrapper function using SPS to serialize the arguments and deserialize the results. | |
| template<typename SPSSignature, typename SendResultT, typename... ArgTs> | |
| void | callSPSWrapperAsync (ExecutorAddr WrapperFnAddr, SendResultT &&SendResult, const ArgTs &...Args) |
| Run a wrapper function using SPS to serialize the arguments and deserialize the results. | |
| template<typename SPSSignature, typename... WrapperCallArgTs> | |
| Error | callSPSWrapper (ExecutorAddr WrapperFnAddr, WrapperCallArgTs &&...WrapperCallArgs) |
| Run a wrapper function using SPS to serialize the arguments and deserialize the results. | |
Static Public Member Functions | |
| static Expected< std::unique_ptr< SelfExecutorProcessControl > > | Create (std::shared_ptr< SymbolStringPool > SSP=nullptr, std::unique_ptr< TaskDispatcher > D=nullptr, std::unique_ptr< jitlink::JITLinkMemoryManager > MemMgr=nullptr) |
| Create a SelfExecutorProcessControl with the given symbol string pool and memory manager. | |
Additional Inherited Members | |
| Protected Attributes inherited from llvm::orc::ExecutorProcessControl | |
| std::shared_ptr< SymbolStringPool > | SSP |
| std::unique_ptr< TaskDispatcher > | D |
| ExecutionSession * | ES = nullptr |
| Triple | TargetTriple |
| unsigned | PageSize = 0 |
| JITDispatchInfo | JDI |
| MemoryAccess * | MemAccess = nullptr |
| jitlink::JITLinkMemoryManager * | MemMgr = nullptr |
| DylibManager * | DylibMgr = nullptr |
| StringMap< std::vector< char > > | BootstrapMap |
| StringMap< ExecutorAddr > | BootstrapSymbols |
A ExecutorProcessControl implementation targeting the current process.
Definition at line 25 of file SelfExecutorProcessControl.h.
| llvm::orc::SelfExecutorProcessControl::SelfExecutorProcessControl | ( | std::shared_ptr< SymbolStringPool > | SSP, |
| std::unique_ptr< TaskDispatcher > | D, | ||
| Triple | TargetTriple, | ||
| unsigned | PageSize, | ||
| std::unique_ptr< jitlink::JITLinkMemoryManager > | MemMgr ) |
Definition at line 22 of file SelfExecutorProcessControl.cpp.
References llvm::orc::UnwindInfoManager::addBootstrapSymbols(), llvm::orc::addDefaultBootstrapValuesForHostProcess(), llvm::orc::ExecutorProcessControl::BootstrapMap, llvm::orc::ExecutorProcessControl::BootstrapSymbols, llvm::orc::ExecutorProcessControl::D, llvm::orc::ExecutorProcessControl::DylibMgr, llvm::orc::ExecutorProcessControl::ExecutorProcessControl(), llvm::orc::ExecutorAddr::fromPtr(), llvm::sys::Process::getPageSizeEstimate(), llvm::Triple::isOSBinFormatMachO(), llvm::orc::ExecutorProcessControl::JDI, llvm::orc::ExecutorProcessControl::MemAccess, llvm::orc::ExecutorProcessControl::MemMgr, llvm::move(), llvm::orc::ExecutorProcessControl::PageSize, llvm::orc::ExecutorProcessControl::SSP, llvm::orc::ExecutorProcessControl::TargetTriple, and llvm::orc::UnwindInfoManager::TryEnable().
|
overridevirtual |
Run a wrapper function in the executor.
The given WFRHandler will be called on the result when it is returned.
The wrapper function should be callable as:
{.cpp}
Implements llvm::orc::ExecutorProcessControl.
Definition at line 131 of file SelfExecutorProcessControl.cpp.
References llvm::Data, llvm::ArrayRef< T >::data(), Size, llvm::ArrayRef< T >::size(), and llvm::orc::ExecutorAddr::toPtr().
|
static |
Create a SelfExecutorProcessControl with the given symbol string pool and memory manager.
If no symbol string pool is given then one will be created. If no memory manager is given a jitlink::InProcessMemoryManager will be created and used by default.
Definition at line 57 of file SelfExecutorProcessControl.cpp.
References llvm::orc::ExecutorProcessControl::D, llvm::sys::Process::getPageSize(), llvm::sys::getProcessTriple(), llvm::orc::ExecutorProcessControl::MemMgr, llvm::orc::ExecutorProcessControl::PageSize, and llvm::orc::ExecutorProcessControl::SSP.
Referenced by llvm::orc::LLJIT::LLJIT(), and llvm::orc::LLJITBuilderState::prepareForConstruction().
|
overridevirtual |
Disconnect from the target process.
This should be called after the JIT session is shut down.
Implements llvm::orc::ExecutorProcessControl.
Definition at line 140 of file SelfExecutorProcessControl.cpp.
References llvm::orc::ExecutorProcessControl::D, and llvm::Error::success().
|
overridevirtual |
Run function with a int (*)(int) signature.
Implements llvm::orc::ExecutorProcessControl.
Definition at line 126 of file SelfExecutorProcessControl.cpp.
References llvm::orc::runAsIntFunction(), and llvm::orc::ExecutorAddr::toPtr().
|
overridevirtual |
Run function with a main-like signature.
Implements llvm::orc::ExecutorProcessControl.
Definition at line 113 of file SelfExecutorProcessControl.cpp.
References llvm::orc::runAsMain(), and llvm::orc::ExecutorAddr::toPtr().
|
overridevirtual |
Run function with a int (*)(void) signature.
Implements llvm::orc::ExecutorProcessControl.
Definition at line 120 of file SelfExecutorProcessControl.cpp.
References llvm::orc::runAsVoidFunction(), and llvm::orc::ExecutorAddr::toPtr().