LLVM: llvm::orc::ExecutorAddr Class Reference (original) (raw)

Represents an address in the executor process. More...

#include "[llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h](ExecutorAddress%5F8h%5Fsource.html)"

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
using rawPtr = llvm::identity
A wrap/unwrap function that leaves pointers unmodified.
template<typename T>
using defaultWrap = rawPtr
Default wrap function to use on this host.
template<typename T>
using defaultUnwrap = rawPtr
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>>
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>
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>
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.

defaultUnwrap

defaultWrap

rawPtr

A wrap/unwrap function that leaves pointers unmodified.

Definition at line 37 of file ExecutorAddress.h.

llvm::orc::ExecutorAddr::ExecutorAddr ( ) default

Referenced by fromPtr(), operator!=, operator++(), operator++(), operator+=(), operator--(), operator--(), operator-=(), operator<, operator<=, operator==, operator>, and operator>=.

ExecutorAddr() [2/2]

llvm::orc::ExecutorAddr::ExecutorAddr ( uint64_t Addr) inlineexplicitconstexpr

fromPtr()

template<typename T, typename UnwrapFn = defaultUnwrap>

ExecutorAddr llvm::orc::ExecutorAddr::fromPtr ( T * Ptr, UnwrapFn && Unwrap = UnwrapFn() ) 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 T.

Referenced by llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::addBootstrapSymbols(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::addBootstrapSymbols(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::addBootstrapSymbols(), llvm::orc::UnwindInfoManager::addBootstrapSymbols(), llvm::orc::addDefaultBootstrapValuesForHostProcess(), llvm::orc::Speculator::addSpeculationRuntime(), llvm::orc::rt_bootstrap::addTo(), llvm::jitlink::InProcessMemoryManager::allocate(), llvm::orc::LocalIndirectStubsInfo< ORCABI >::create(), llvm::orc::LocalCXXRuntimeOverrides::enable(), llvm::orc::LocalIndirectStubsManager< TargetT >::findPointer(), llvm::orc::LocalIndirectStubsManager< TargetT >::findStub(), llvm::orc::ExecutorSymbolDef::fromPtr(), llvm::orc::ExecutorAddrRange::fromPtrRange(), llvm::orc::ExecutorAddrRange::fromPtrRange(), llvm::orc::rt_bootstrap::SimpleExecutorDylibManager::open(), llvm::orc::InProcessMemoryAccess::readPointersAsync(), llvm::orc::rt_bootstrap::readPointersWrapper(), llvm::orc::InProcessMemoryMapper::reserve(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::reserve(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::reserve(), llvm::orc::DylibSymbolResolver::resolveAsync(), llvm::orc::SelfExecutorProcessControl::SelfExecutorProcessControl(), llvm::orc::setUpInProcessLCTMReentryViaEPCIU(), llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::shutdown(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::shutdown(), llvm::orc::DynamicLibrarySearchGenerator::tryToGenerate(), and llvm::orc::InProcessMemoryMapper::~InProcessMemoryMapper().

getValue()

uint64_t llvm::orc::ExecutorAddr::getValue ( ) const inline

Definition at line 136 of file ExecutorAddress.h.

Referenced by llvm::jitlink::alignToBlock(), llvm::jitlink::aarch64::applyFixup(), llvm::jitlink::ppc64::applyFixup(), llvm::jitlink::systemz::applyFixup(), llvm::jitlink::aarch32::applyFixupArm(), llvm::jitlink::aarch32::applyFixupData(), llvm::jitlink::aarch32::applyFixupThumb(), llvm::jitlink::SimpleSegmentAlloc::Create(), llvm::orc::createIRTypedAddress(), LLVMOrcLazyCallThroughManagerRef::fromExecutorSymbolDef(), llvm::DenseMapInfo< orc::ExecutorAddr >::getHashValue(), llvm::jitlink::ELFLinkGraphBuilder< ELFT >::graphifySymbols(), llvm::jitlink::x86_64::optimizeGOTAndStubAccesses(), 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::OrcI386::writeResolverCode(), llvm::orc::OrcMips32_Base::writeResolverCode(), llvm::orc::OrcMips64::writeResolverCode(), llvm::orc::OrcI386::writeTrampolines(), llvm::orc::OrcMips32_Base::writeTrampolines(), and llvm::orc::OrcMips64::writeTrampolines().

isNull()

bool llvm::orc::ExecutorAddr::isNull ( ) const inline

operator bool()

llvm::orc::ExecutorAddr::operator bool ( ) const inlineexplicit

operator++() [1/2]

ExecutorAddr & llvm::orc::ExecutorAddr::operator++ ( ) inline

operator++() [2/2]

ExecutorAddr llvm::orc::ExecutorAddr::operator++ ( int ) inline

operator+=()

operator--() [1/2]

ExecutorAddr & llvm::orc::ExecutorAddr::operator-- ( ) inline

operator--() [2/2]

ExecutorAddr llvm::orc::ExecutorAddr::operator-- ( int ) inline

operator-=()

setValue()

void llvm::orc::ExecutorAddr::setValue ( uint64_t Addr) inline

toPtr() [1/2]

template<typename T, typename WrapFn = defaultWrap<std::remove_pointer_t>>

std::enable_if_t< std::is_pointer< T >::value, T > llvm::orc::ExecutorAddr::toPtr ( WrapFn && Wrap = WrapFn()) const 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(), and T.

Referenced by llvm::orc::SelfExecutorProcessControl::callWrapperAsync(), deregisterEHFrameWrapper(), llvm::orc::InProcessMemoryMapper::initialize(), llvm::orc::rt_bootstrap::SimpleExecutorMemoryManager::initialize(), llvm::orc::shared::MethodWrapperHandler< RetT, ClassT, ArgTs >::operator()(), llvm::orc::InProcessMemoryMapper::prepare(), registerEHFrameWrapper(), 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().

toPtr() [2/2]

template<typename T, typename WrapFn = defaultWrap>

std::enable_if_t< std::is_function< T >::value, T * > llvm::orc::ExecutorAddr::toPtr ( WrapFn && Wrap = WrapFn()) const inline

operator!=

operator<

operator<=

operator==

operator>

operator>=


The documentation for this class was generated from the following file: