LLVM 20.0.0git
|
Represents an address in the executor process. More...
#include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
Classes | |
class | Tag |
Merges a tag into the raw address value: P' = P | (TagValue << TagOffset). More... | |
class | Untag |
Strips a tag of the given length from the given offset within the pointer: P' = P & ~(((1 << TagLen) -1) << TagOffset) More... | |
Public Types | |
template<typename T > | |
using | rawPtr = llvm::identity< T * > |
A wrap/unwrap function that leaves pointers unmodified. | |
template<typename T > | |
using | defaultWrap = rawPtr< T > |
Default wrap function to use on this host. | |
template<typename T > | |
using | defaultUnwrap = rawPtr< T > |
Default unwrap function to use on this host. | |
Public Member Functions | |
ExecutorAddr ()=default | |
constexpr | ExecutorAddr (uint64_t Addr) |
Create an ExecutorAddr from the given value. | |
template<typename T , typename WrapFn = defaultWrap<std::remove_pointer_t<T>>> | |
std::enable_if_t< std::is_pointer< T >::value, T > | toPtr (WrapFn &&Wrap=WrapFn()) const |
Cast this ExecutorAddr to a pointer of the given type. | |
template<typename T , typename WrapFn = defaultWrap<T>> | |
std::enable_if_t< std::is_function< T >::value, T * > | toPtr (WrapFn &&Wrap=WrapFn()) const |
Cast this ExecutorAddr to a pointer of the given function type. | |
uint64_t | getValue () const |
void | setValue (uint64_t Addr) |
bool | isNull () const |
operator bool () const | |
ExecutorAddr & | operator++ () |
ExecutorAddr & | operator-- () |
ExecutorAddr | operator++ (int) |
ExecutorAddr | operator-- (int) |
ExecutorAddr & | operator+= (const ExecutorAddrDiff &Delta) |
ExecutorAddr & | operator-= (const ExecutorAddrDiff &Delta) |
Static Public Member Functions | |
template<typename T , typename UnwrapFn = defaultUnwrap<T>> | |
static ExecutorAddr | fromPtr (T *Ptr, UnwrapFn &&Unwrap=UnwrapFn()) |
Create an ExecutorAddr from the given pointer. | |
Friends | |
bool | operator== (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
bool | operator!= (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
bool | operator< (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
bool | operator<= (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
bool | operator> (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
bool | operator>= (const ExecutorAddr &LHS, const ExecutorAddr &RHS) |
Represents an address in the executor process.
Definition at line 34 of file ExecutorAddress.h.
using llvm::orc::ExecutorAddr::defaultUnwrap = rawPtr<T> |
Default unwrap function to use on this host.
Definition at line 69 of file ExecutorAddress.h.
using llvm::orc::ExecutorAddr::defaultWrap = rawPtr<T> |
Default wrap function to use on this host.
Definition at line 66 of file ExecutorAddress.h.
using llvm::orc::ExecutorAddr::rawPtr = llvm::identity<T *> |
A wrap/unwrap function that leaves pointers unmodified.
Definition at line 37 of file ExecutorAddress.h.
|
default |
Referenced by fromPtr(), operator++(), and operator--().
|
inlineexplicitconstexpr |
Create an ExecutorAddr from the given value.
Definition at line 106 of file ExecutorAddress.h.
References Addr.
|
inlinestatic |
Create an ExecutorAddr from the given pointer.
Warning: This should only be used when JITing in-process.
Definition at line 111 of file ExecutorAddress.h.
References ExecutorAddr(), and Ptr.
Referenced by llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::addBootstrapSymbols(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::addBootstrapSymbols(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::addBootstrapSymbols(), llvm::orc::Speculator::addSpeculationRuntime(), llvm::orc::rt_bootstrap::addTo(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::allocate(), llvm::orc::LocalIndirectStubsInfo< ORCABI >::create(), llvm::orc::LocalCXXRuntimeOverrides::enable(), llvm::orc::LocalIndirectStubsManager< TargetT >::findPointer(), llvm::orc::LocalIndirectStubsManager< TargetT >::findStub(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::lookup(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::open(), llvm::orc::InProcessMemoryMapper::reserve(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::reserve(), llvm::orc::SelfExecutorProcessControl::SelfExecutorProcessControl(), llvm::orc::setUpInProcessLCTMReentryViaEPCIU(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::shutdown(), llvm::orc::DynamicLibrarySearchGenerator::tryToGenerate(), and llvm::orc::InProcessMemoryMapper::~InProcessMemoryMapper().
|
inline |
Definition at line 136 of file ExecutorAddress.h.
Referenced by llvm::jitlink::aarch64::applyFixup(), llvm::jitlink::ppc64::applyFixup(), llvm::jitlink::aarch32::applyFixupArm(), llvm::jitlink::aarch32::applyFixupData(), llvm::jitlink::aarch32::applyFixupThumb(), llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::finalize(), LLVMOrcLazyCallThroughManagerRef::fromExecutorSymbolDef(), llvm::jitlink::makeAlignmentError(), llvm::jitlink::x86_64::optimizeGOTAndStubAccesses(), llvm::jitlink::relaxAlign(), llvm::orc::FDSimpleRemoteEPCTransport::sendMessage(), llvm::orc::shared::SPSSerializationTraits< SPSExecutorAddr, ExecutorAddr >::serialize(), llvm::orc::shared::SPSSerializationTraits< SPSExecutorAddr, ExecutorAddr >::size(), llvm::orc::LocalIndirectStubsManager< TargetT >::updatePointer(), llvm::orc::OrcI386::writeIndirectStubsBlock(), llvm::orc::OrcMips32_Base::writeIndirectStubsBlock(), llvm::orc::OrcMips64::writeIndirectStubsBlock(), llvm::orc::OrcMips32_Base::writeResolverCode(), llvm::orc::OrcI386::writeResolverCode(), llvm::orc::OrcMips64::writeResolverCode(), llvm::orc::OrcI386::writeTrampolines(), llvm::orc::OrcMips32_Base::writeTrampolines(), and llvm::orc::OrcMips64::writeTrampolines().
|
inline |
Definition at line 138 of file ExecutorAddress.h.
|
inlineexplicit |
Definition at line 140 of file ExecutorAddress.h.
|
inline |
Definition at line 166 of file ExecutorAddress.h.
|
inline |
Definition at line 174 of file ExecutorAddress.h.
References ExecutorAddr().
|
inline |
Definition at line 177 of file ExecutorAddress.h.
|
inline |
Definition at line 170 of file ExecutorAddress.h.
|
inline |
Definition at line 175 of file ExecutorAddress.h.
References ExecutorAddr().
|
inline |
Definition at line 182 of file ExecutorAddress.h.
|
inline |
Definition at line 137 of file ExecutorAddress.h.
References Addr.
|
inline |
Cast this ExecutorAddr to a pointer of the given type.
Warning: This should only be used when JITing in-process.
Definition at line 120 of file ExecutorAddress.h.
References assert().
Referenced by llvm::orc::SelfExecutorProcessControl::callWrapperAsync(), llvm::jitlink::InProcessEHFrameRegistrar::deregisterEHFrames(), deregisterEHFrameWrapper(), llvm::orc::InProcessMemoryMapper::initialize(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::initialize(), llvm::orc::shared::MethodWrapperHandler< RetT, ClassT, ArgTs >::operator()(), llvm::jitlink::InProcessEHFrameRegistrar::registerEHFrames(), registerEHFrameWrapper(), llvm::orc::shared::WrapperFunctionCall::run(), llvm::orc::SelfExecutorProcessControl::runAsIntFunction(), llvm::orc::rt_bootstrap::runAsIntFunctionWrapper(), llvm::orc::SelfExecutorProcessControl::runAsMain(), llvm::orc::rt_bootstrap::runAsMainWrapper(), llvm::orc::SelfExecutorProcessControl::runAsVoidFunction(), and llvm::orc::rt_bootstrap::runAsVoidFunctionWrapper().
|
inline |
Cast this ExecutorAddr to a pointer of the given function type.
Warning: This should only be used when JITing in-process.
Definition at line 130 of file ExecutorAddress.h.
References assert().
|
friend |
Definition at line 146 of file ExecutorAddress.h.
|
friend |
Definition at line 150 of file ExecutorAddress.h.
|
friend |
Definition at line 154 of file ExecutorAddress.h.
|
friend |
Definition at line 142 of file ExecutorAddress.h.
|
friend |
Definition at line 158 of file ExecutorAddress.h.
|
friend |
Definition at line 162 of file ExecutorAddress.h.