LLVM  15.0.0git
Namespaces | Classes | Typedefs | Functions
llvm::orc::shared Namespace Reference

Namespaces

 detail
 

Classes

struct  AllocActionCallPair
 A pair of WrapperFunctionCalls, one to be run at finalization time, one to be run at deallocation time. More...
 
struct  CWrapperFunctionResult
 
union  CWrapperFunctionResultDataUnion
 
class  MethodWrapperHandler
 A function object that takes an ExecutorAddr as its first argument, casts that address to a ClassT*, then calls the given method on that pointer passing in the remaining function arguments. More...
 
class  SPSArgList
 A utility class for serializing to a blob from a variadic list. More...
 
class  SPSArgList< SPSTagT, SPSTagTs... >
 
class  SPSArgList<>
 
class  SPSEmpty
 
class  SPSExecutorAddr
 
class  SPSExpected
 SPS tag type for expecteds, which are either a T or a string representing an error. More...
 
class  SPSInputBuffer
 Input char buffer with underflow check. More...
 
class  SPSMemoryProtectionFlags
 
class  SPSOutputBuffer
 Output char buffer with overflow check. More...
 
class  SPSSequence
 SPS tag type for sequences. More...
 
class  SPSSerializationTraits
 Specialize to describe how to serialize/deserialize to/from the given concrete type. More...
 
class  SPSSerializationTraits< SPSAllocActionCallPair, AllocActionCallPair >
 
class  SPSSerializationTraits< SPSELFJITDylibDeinitializers, ELFNixJITDylibDeinitializers >
 
class  SPSSerializationTraits< SPSELFNixJITDylibInitializers, ELFNixJITDylibInitializers >
 Serialization traits for ELFNixJITDylibInitializers. More...
 
class  SPSSerializationTraits< SPSELFPerObjectSectionsToRegister, ELFPerObjectSectionsToRegister >
 
class  SPSSerializationTraits< SPSEmpty, SPSEmpty >
 Serialization for SPSEmpty type. More...
 
class  SPSSerializationTraits< SPSError, detail::SPSSerializableError >
 Serialize to a SPSError from a detail::SPSSerializableError. More...
 
class  SPSSerializationTraits< SPSExecutorAddr, ExecutorAddr >
 SPS serializatior for ExecutorAddr. More...
 
class  SPSSerializationTraits< SPSExecutorAddr, jitlink::JITLinkMemoryManager::FinalizedAlloc >
 FIXME: This specialization should be moved into TargetProcessControlTypes.h (or whereever those types get merged to) once ORC depends on JITLink. More...
 
class  SPSSerializationTraits< SPSExecutorAddrRange, ExecutorAddrRange >
 Serialization traits for address ranges. More...
 
class  SPSSerializationTraits< SPSExpected< SPSTagT >, detail::SPSSerializableError >
 Serialize to a SPSExpected<SPSTagT> from a detail::SPSSerializableError. More...
 
class  SPSSerializationTraits< SPSExpected< SPSTagT >, detail::SPSSerializableExpected< T > >
 Serialize to a SPSExpected<SPSTagT> from a detail::SPSSerializableExpected<T>. More...
 
class  SPSSerializationTraits< SPSExpected< SPSTagT >, T >
 Serialize to a SPSExpected<SPSTagT> from a T. More...
 
class  SPSSerializationTraits< SPSFinalizeRequest, tpctypes::FinalizeRequest >
 
class  SPSSerializationTraits< SPSMachOJITDylibDepInfo, MachOPlatform::MachOJITDylibDepInfo >
 
class  SPSSerializationTraits< SPSMemoryAccessBufferWrite, tpctypes::BufferWrite >
 
class  SPSSerializationTraits< SPSMemoryAccessUIntWrite< T >, tpctypes::UIntWrite< T > >
 
class  SPSSerializationTraits< SPSMemoryProtectionFlags, tpctypes::WireProtectionFlags >
 
class  SPSSerializationTraits< SPSRemoteSymbolLookup, ExecutorProcessControl::LookupRequest >
 
class  SPSSerializationTraits< SPSRemoteSymbolLookup, RemoteSymbolLookup >
 
class  SPSSerializationTraits< SPSRemoteSymbolLookupSetElement, RemoteSymbolLookupSetElement >
 
class  SPSSerializationTraits< SPSRemoteSymbolLookupSetElement, SymbolLookupSet::value_type >
 
class  SPSSerializationTraits< SPSSegFinalizeRequest, tpctypes::SegFinalizeRequest >
 
class  SPSSerializationTraits< SPSSequence< char >, ArrayRef< char > >
 Specialized SPSSequence<char> -> ArrayRef<char> serialization. More...
 
class  SPSSerializationTraits< SPSSequence< SPSElementTagT >, SequenceT, std::enable_if_t< TrivialSPSSequenceSerialization< SPSElementTagT, SequenceT >::available > >
 'Trivial' sequence serialization: Sequence is serialized as a uint64_t size followed by a for-earch loop over the elements of the sequence to serialize each of them. More...
 
class  SPSSerializationTraits< SPSSequence< SPSTuple< SPSString, SPSValueT > >, StringMap< ValueT > >
 Serialization for StringMap<ValueT>s. More...
 
class  SPSSerializationTraits< SPSSimpleRemoteEPCExecutorInfo, SimpleRemoteEPCExecutorInfo >
 
class  SPSSerializationTraits< SPSString, StringRef >
 Serialization for StringRefs. More...
 
class  SPSSerializationTraits< SPSTagT, SPSTagT, std::enable_if_t< std::is_same< SPSTagT, bool >::value||std::is_same< SPSTagT, char >::value||std::is_same< SPSTagT, int8_t >::value||std::is_same< SPSTagT, int16_t >::value||std::is_same< SPSTagT, int32_t >::value||std::is_same< SPSTagT, int64_t >::value||std::is_same< SPSTagT, uint8_t >::value||std::is_same< SPSTagT, uint16_t >::value||std::is_same< SPSTagT, uint32_t >::value||std::is_same< SPSTagT, uint64_t >::value > >
 SPS serialization for integral types, bool, and char. More...
 
class  SPSSerializationTraits< SPSTuple< SPSTagT1, SPSTagT2 >, std::pair< T1, T2 > >
 SPSTuple serialization for std::pair. More...
 
class  SPSSerializationTraits< SPSTuple< SPSTagTs... >, std::tuple< Ts... > >
 SPSTuple serialization for std::tuple. More...
 
class  SPSSerializationTraits< SPSWrapperFunctionCall, WrapperFunctionCall >
 
class  SPSTuple
 SPS tag type for tuples. More...
 
class  TrivialSPSSequenceDeserialization
 Specialize this to implement 'trivial' sequence deserialization for a concrete sequence type. More...
 
class  TrivialSPSSequenceDeserialization< char, std::string >
 Trivial SPSSequence<char> -> std::string deserialization. More...
 
class  TrivialSPSSequenceDeserialization< SPSElementTagT, SmallVector< T, N > >
 Trivial SPSSequence<SPSElementTagT> -> SmallVectorImpl<T> deserialization. More...
 
class  TrivialSPSSequenceDeserialization< SPSElementTagT, SmallVectorImpl< T > >
 Trivial SPSSequence<SPSElementTagT> -> SmallVectorImpl<T> deserialization. More...
 
class  TrivialSPSSequenceDeserialization< SPSElementTagT, std::vector< T > >
 Trivial SPSSequence<SPSElementTagT> -> std::vector<T> deserialization. More...
 
class  TrivialSPSSequenceSerialization
 Specialize this to implement 'trivial' sequence serialization for a concrete sequence type. More...
 
class  TrivialSPSSequenceSerialization< char, std::string >
 Trivial std::string -> SPSSequence<char> serialization. More...
 
class  TrivialSPSSequenceSerialization< SPSElementTagT, ArrayRef< T > >
 Trivial ArrayRef<T> -> SPSSequence<SPSElementTagT> serialization. More...
 
class  TrivialSPSSequenceSerialization< SPSElementTagT, SmallVector< T, N > >
 Trivial SmallVectorImpl<T> -> SPSSequence<char> serialization. More...
 
class  TrivialSPSSequenceSerialization< SPSElementTagT, SmallVectorImpl< T > >
 Trivial SmallVectorImpl<T> -> SPSSequence<char> serialization. More...
 
class  TrivialSPSSequenceSerialization< SPSElementTagT, std::vector< T > >
 Trivial std::vector<T> -> SPSSequence<SPSElementTagT> serialization. More...
 
class  TrivialSPSSequenceSerialization< SPSRemoteSymbolLookupSetElement, SymbolLookupSet >
 
class  WrapperFunction
 
class  WrapperFunction< SPSRetTagT(SPSTagTs...)>
 
class  WrapperFunction< void(SPSTagTs...)>
 
class  WrapperFunctionCall
 Represents a serialized wrapper function call. More...
 
class  WrapperFunctionResult
 C++ wrapper function result: Same as CWrapperFunctionResult but auto-releases memory. More...
 

Typedefs

using SPSELFPerObjectSectionsToRegister = SPSTuple< SPSExecutorAddrRange, SPSExecutorAddrRange >
 
using SPSNamedExecutorAddrRangeSequenceMap = SPSSequence< SPSTuple< SPSString, SPSExecutorAddrRangeSequence > >
 
using SPSELFNixJITDylibInitializers = SPSTuple< SPSString, SPSExecutorAddr, SPSNamedExecutorAddrRangeSequenceMap >
 
using SPSELFNixJITDylibInitializerSequence = SPSSequence< SPSELFNixJITDylibInitializers >
 
using SPSELFJITDylibDeinitializers = SPSEmpty
 
using SPSELFJITDylibDeinitializerSequence = SPSSequence< SPSELFJITDylibDeinitializers >
 
using SPSNamedExecutorAddrRangeSequence = SPSSequence< SPSTuple< SPSString, SPSExecutorAddrRange > >
 
using AllocActions = std::vector< AllocActionCallPair >
 A vector of allocation actions to be run for this allocation. More...
 
using SPSAllocActionCallPair = SPSTuple< SPSWrapperFunctionCall, SPSWrapperFunctionCall >
 
using SPSExecutorAddrRange = SPSTuple< SPSExecutorAddr, SPSExecutorAddr >
 
using SPSExecutorAddrRangeSequence = SPSSequence< SPSExecutorAddrRange >
 
using SPSString = SPSSequence< char >
 SPS tag type for strings, which are equivalent to sequences of chars. More...
 
template<typename SPSTagT1 , typename SPSTagT2 >
using SPSMap = SPSSequence< SPSTuple< SPSTagT1, SPSTagT2 > >
 SPS tag type for maps. More...
 
using SPSRemoteSymbolLookupSetElement = SPSTuple< SPSString, bool >
 
using SPSRemoteSymbolLookupSet = SPSSequence< SPSRemoteSymbolLookupSetElement >
 
using SPSRemoteSymbolLookup = SPSTuple< uint64_t, SPSRemoteSymbolLookupSet >
 
using SPSSimpleRemoteEPCExecutorInfo = SPSTuple< SPSString, uint64_t, SPSSequence< SPSTuple< SPSString, SPSExecutorAddr > >>
 Tuple containing target triple, page size, and bootstrap symbols. More...
 
using SPSLoadDylibSignature = SPSExpected< SPSExecutorAddr >(SPSExecutorAddr, SPSString, uint64_t)
 
using SPSLookupSymbolsSignature = SPSExpected< SPSSequence< SPSSequence< SPSExecutorAddr > >>(SPSExecutorAddr, SPSSequence< SPSRemoteSymbolLookup >)
 
using SPSSegFinalizeRequest = SPSTuple< SPSMemoryProtectionFlags, SPSExecutorAddr, uint64_t, SPSSequence< char > >
 
using SPSFinalizeRequest = SPSTuple< SPSSequence< SPSSegFinalizeRequest >, SPSSequence< SPSAllocActionCallPair > >
 
template<typename T >
using SPSMemoryAccessUIntWrite = SPSTuple< SPSExecutorAddr, T >
 
using SPSMemoryAccessUInt8Write = SPSMemoryAccessUIntWrite< uint8_t >
 
using SPSMemoryAccessUInt16Write = SPSMemoryAccessUIntWrite< uint16_t >
 
using SPSMemoryAccessUInt32Write = SPSMemoryAccessUIntWrite< uint32_t >
 
using SPSMemoryAccessUInt64Write = SPSMemoryAccessUIntWrite< uint64_t >
 
using SPSMemoryAccessBufferWrite = SPSTuple< SPSExecutorAddr, SPSSequence< char > >
 
using SPSWrapperFunctionCall = SPSTuple< SPSExecutorAddr, SPSSequence< char > >
 
using SPSMachOJITDylibDepInfo = SPSTuple< bool, SPSSequence< SPSExecutorAddr > >
 
using SPSMachOJITDylibDepInfoMap = SPSSequence< SPSTuple< SPSExecutorAddr, SPSMachOJITDylibDepInfo > >
 

Functions

size_t numDeallocActions (const AllocActions &AAs)
 Returns the number of deallocaton actions in the given AllocActions array. More...
 
Expected< std::vector< WrapperFunctionCall > > runFinalizeActions (AllocActions &AAs)
 Run finalize actions. More...
 
Error runDeallocActions (ArrayRef< WrapperFunctionCall > DAs)
 Run deallocation actions. More...
 
template<typename RetT , typename ClassT , typename... ArgTs>
MethodWrapperHandler< RetT, ClassT, ArgTs... > makeMethodWrapperHandler (RetT(ClassT::*Method)(ArgTs...))
 Create a MethodWrapperHandler object from the given method pointer. More...
 

Typedef Documentation

◆ AllocActions

A vector of allocation actions to be run for this allocation.

Finalize allocations will be run in order at finalize time. Dealloc actions will be run in reverse order at deallocation time.

Definition at line 44 of file AllocationActions.h.

◆ SPSAllocActionCallPair

Definition at line 74 of file AllocationActions.h.

◆ SPSELFJITDylibDeinitializers

Definition at line 305 of file ELFNixPlatform.h.

◆ SPSELFJITDylibDeinitializerSequence

Definition at line 308 of file ELFNixPlatform.h.

◆ SPSELFNixJITDylibInitializers

Definition at line 277 of file ELFNixPlatform.h.

◆ SPSELFNixJITDylibInitializerSequence

Definition at line 280 of file ELFNixPlatform.h.

◆ SPSELFPerObjectSectionsToRegister

Definition at line 248 of file ELFNixPlatform.h.

◆ SPSExecutorAddrRange

Definition at line 207 of file ExecutorAddress.h.

◆ SPSExecutorAddrRangeSequence

Definition at line 229 of file ExecutorAddress.h.

◆ SPSFinalizeRequest

Definition at line 132 of file TargetProcessControlTypes.h.

◆ SPSLoadDylibSignature

Definition at line 225 of file SimpleRemoteEPCUtils.h.

◆ SPSLookupSymbolsSignature

Definition at line 229 of file SimpleRemoteEPCUtils.h.

◆ SPSMachOJITDylibDepInfo

Definition at line 29 of file MachOPlatform.cpp.

◆ SPSMachOJITDylibDepInfoMap

Definition at line 31 of file MachOPlatform.cpp.

◆ SPSMap

template<typename SPSTagT1 , typename SPSTagT2 >
using llvm::orc::shared::SPSMap = typedef SPSSequence<SPSTuple<SPSTagT1, SPSTagT2> >

SPS tag type for maps.

SPS maps are just sequences of (Key, Value) tuples.

Definition at line 213 of file SimplePackedSerialization.h.

◆ SPSMemoryAccessBufferWrite

Definition at line 142 of file TargetProcessControlTypes.h.

◆ SPSMemoryAccessUInt16Write

Definition at line 138 of file TargetProcessControlTypes.h.

◆ SPSMemoryAccessUInt32Write

Definition at line 139 of file TargetProcessControlTypes.h.

◆ SPSMemoryAccessUInt64Write

Definition at line 140 of file TargetProcessControlTypes.h.

◆ SPSMemoryAccessUInt8Write

Definition at line 137 of file TargetProcessControlTypes.h.

◆ SPSMemoryAccessUIntWrite

template<typename T >
using llvm::orc::shared::SPSMemoryAccessUIntWrite = typedef SPSTuple<SPSExecutorAddr, T>

Definition at line 135 of file TargetProcessControlTypes.h.

◆ SPSNamedExecutorAddrRangeSequence

Definition at line 236 of file MachOPlatform.h.

◆ SPSNamedExecutorAddrRangeSequenceMap

Definition at line 274 of file ELFNixPlatform.h.

◆ SPSRemoteSymbolLookup

Definition at line 159 of file SimpleRemoteEPCUtils.h.

◆ SPSRemoteSymbolLookupSet

Definition at line 157 of file SimpleRemoteEPCUtils.h.

◆ SPSRemoteSymbolLookupSetElement

Definition at line 155 of file SimpleRemoteEPCUtils.h.

◆ SPSSegFinalizeRequest

Definition at line 129 of file TargetProcessControlTypes.h.

◆ SPSSimpleRemoteEPCExecutorInfo

Tuple containing target triple, page size, and bootstrap symbols.

Definition at line 164 of file SimpleRemoteEPCUtils.h.

◆ SPSString

SPS tag type for strings, which are equivalent to sequences of chars.

Definition at line 207 of file SimplePackedSerialization.h.

◆ SPSWrapperFunctionCall

Definition at line 707 of file WrapperFunctionUtils.h.

Function Documentation

◆ makeMethodWrapperHandler()

template<typename RetT , typename ClassT , typename... ArgTs>
MethodWrapperHandler<RetT, ClassT, ArgTs...> llvm::orc::shared::makeMethodWrapperHandler ( RetT(ClassT::*)(ArgTs...)  Method)

Create a MethodWrapperHandler object from the given method pointer.

Definition at line 617 of file WrapperFunctionUtils.h.

◆ numDeallocActions()

size_t llvm::orc::shared::numDeallocActions ( const AllocActions AAs)
inline

Returns the number of deallocaton actions in the given AllocActions array.

This can be useful if clients want to pre-allocate room for deallocation actions with the rest of their memory.

Definition at line 50 of file AllocationActions.h.

References llvm::count_if(), and P.

Referenced by runFinalizeActions().

◆ runDeallocActions()

Error llvm::orc::shared::runDeallocActions ( ArrayRef< WrapperFunctionCall DAs)

Run deallocation actions.

Dealloc actions will be run in reverse order (from last element of DAs to first).

Definition at line 33 of file AllocationActions.cpp.

◆ runFinalizeActions()

Expected< std::vector< WrapperFunctionCall > > llvm::orc::shared::runFinalizeActions ( AllocActions AAs)

Run finalize actions.

If any finalize action fails then the corresponding dealloc actions will be run in reverse order (not including the deallocation action for the failed finalize action), and the error for the failing action will be returned.

If all finalize actions succeed then a vector of deallocation actions will be returned. The dealloc actions should be run by calling runDeallocationActions. If this function succeeds then the AA argument will be cleared before the function returns.

Definition at line 16 of file AllocationActions.cpp.

References numDeallocActions().

Referenced by llvm::orc::InProcessMemoryMapper::initialize().