LLVM 22.0.0git
llvm::orc::shared Namespace Reference

Namespaces

namespace  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  SPSOptional
 SPS tag type for optionals. More...
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< 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...
 FIXME: This specialization should be moved into TargetProcessControlTypes.h (or wherever those types get merged to) once ORC depends on JITLink. More...
class  SPSSerializationTraits< SPSExecutorAddrRange, ExecutorAddrRange >
 Serialization traits for address ranges. More...
class  SPSSerializationTraits< SPSExecutorSymbolDef, ExecutorSymbolDef >
 SPS serializatior for ExecutorSymbolDef. 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< SPSJITSymbolFlags, JITSymbolFlags >
 SPS serializatior for JITSymbolFlags. More...
class  SPSSerializationTraits< SPSMachOExecutorSymbolFlags, MachOPlatform::MachOExecutorSymbolFlags >
class  SPSSerializationTraits< SPSMachOJITDylibDepInfo, MachOPlatform::MachOJITDylibDepInfo >
class  SPSSerializationTraits< SPSMemoryAccessBufferWrite, tpctypes::BufferWrite >
class  SPSSerializationTraits< SPSMemoryAccessPointerWrite, tpctypes::PointerWrite >
class  SPSSerializationTraits< SPSMemoryAccessUIntWrite< T >, tpctypes::UIntWrite< T > >
class  SPSSerializationTraits< SPSOptional< SPSTagT >, std::optional< T > >
 SPSOptional serialization for std::optional. More...
class  SPSSerializationTraits< SPSPerfJITCodeLoadRecord, PerfJITCodeLoadRecord >
class  SPSSerializationTraits< SPSPerfJITCodeUnwindingInfoRecord, PerfJITCodeUnwindingInfoRecord >
class  SPSSerializationTraits< SPSPerfJITDebugEntry, PerfJITDebugEntry >
class  SPSSerializationTraits< SPSPerfJITDebugInfoRecord, PerfJITDebugInfoRecord >
class  SPSSerializationTraits< SPSPerfJITRecordBatch, PerfJITRecordBatch >
class  SPSSerializationTraits< SPSPerfJITRecordPrefix, PerfJITRecordPrefix >
class  SPSSerializationTraits< SPSRemoteAllocGroup, tpctypes::RemoteAllocGroup >
class  SPSSerializationTraits< SPSRemoteSymbolLookup, DylibManager::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< SPSSharedMemoryFinalizeRequest, tpctypes::SharedMemoryFinalizeRequest >
class  SPSSerializationTraits< SPSSharedMemorySegFinalizeRequest, tpctypes::SharedMemorySegFinalizeRequest >
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< SPSVTuneMethodBatch, VTuneMethodBatch >
class  SPSSerializationTraits< SPSVTuneMethodInfo, VTuneMethodInfo >
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
using SPSELFNixJITDylibDepInfoMap
using AllocActions = std::vector<AllocActionCallPair>
 A vector of allocation actions to be run for this allocation.
using OnRunFinalizeActionsCompleteFn
using OnRunDeallocActionsComeleteFn = unique_function<void(Error)>
using SPSAllocActionCallPair
using SPSExecutorAddrRange = SPSTuple<SPSExecutorAddr, SPSExecutorAddr>
using SPSExecutorAddrRangeSequence = SPSSequence<SPSExecutorAddrRange>
using SPSJITSymbolFlags
using SPSExecutorSymbolDef = SPSTuple<SPSExecutorAddr, SPSJITSymbolFlags>
using SPSPerfJITRecordPrefix = SPSTuple<uint32_t, uint32_t>
using SPSPerfJITCodeLoadRecord
using SPSPerfJITDebugEntry = SPSTuple<uint64_t, uint32_t, uint32_t, SPSString>
using SPSPerfJITDebugInfoRecord
using SPSPerfJITCodeUnwindingInfoRecord
using SPSPerfJITRecordBatch
using SPSString = SPSSequence<char>
 SPS tag type for strings, which are equivalent to sequences of chars.
template<typename SPSTagT1, typename SPSTagT2>
using SPSMap = SPSSequence<SPSTuple<SPSTagT1, SPSTagT2>>
 SPS tag type for maps.
using SPSRemoteSymbolLookupSetElement = SPSTuple<SPSString, bool>
using SPSRemoteSymbolLookupSet = SPSSequence<SPSRemoteSymbolLookupSetElement>
using SPSRemoteSymbolLookup = SPSTuple<uint64_t, SPSRemoteSymbolLookupSet>
using SPSSimpleRemoteEPCExecutorInfo
 Tuple containing target triple, page size, and bootstrap symbols.
using SPSLoadDylibSignature
using SPSLookupSymbolsSignature
using SPSSegFinalizeRequest
using SPSFinalizeRequest
using SPSSharedMemorySegFinalizeRequest
using SPSSharedMemoryFinalizeRequest
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 SPSMemoryAccessPointerWrite = SPSTuple<SPSExecutorAddr, SPSExecutorAddr>
using SPSVTuneLineTable = SPSSequence<SPSTuple<uint32_t, uint32_t>>
using SPSVTuneMethodInfo
using SPSVTuneMethodTable = SPSSequence<SPSVTuneMethodInfo>
using SPSVTuneStringTable = SPSSequence<SPSString>
using SPSVTuneMethodBatch = SPSTuple<SPSVTuneMethodTable, SPSVTuneStringTable>
using SPSVTuneUnloadedMethodIDs = SPSSequence<SPSTuple<uint64_t, uint64_t>>
using SPSWrapperFunctionCall = SPSTuple<SPSExecutorAddr, SPSSequence<char>>
using SPSCOFFJITDylibDepInfo = SPSSequence<SPSExecutorAddr>
using SPSCOFFJITDylibDepInfoMap
using SPSCOFFObjectSectionsMap
using SPSCOFFRegisterObjectSectionsArgs
using SPSCOFFDeregisterObjectSectionsArgs
using SPSMachOJITDylibDepInfo = SPSTuple<bool, SPSSequence<SPSExecutorAddr>>
using SPSMachOJITDylibDepInfoMap

Functions

size_t numDeallocActions (const AllocActions &AAs)
 Returns the number of deallocaton actions in the given AllocActions array.
LLVM_ABI void runFinalizeActions (AllocActions &AAs, OnRunFinalizeActionsCompleteFn OnComplete)
 Run finalize actions.
LLVM_ABI void runDeallocActions (ArrayRef< WrapperFunctionCall > DAs, OnRunDeallocActionsComeleteFn OnComplete)
 Run deallocation actions.
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.

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 46 of file AllocationActions.h.

◆ OnRunDeallocActionsComeleteFn

◆ OnRunFinalizeActionsCompleteFn

Initial value:
unique_function<void(Expected<std::vector<WrapperFunctionCall>>)>
Tagged union holding either a T or a Error.
Definition Error.h:485
unique_function is a type-erasing functor similar to std::function.

Definition at line 57 of file AllocationActions.h.

◆ SPSAllocActionCallPair

◆ SPSCOFFDeregisterObjectSectionsArgs

Initial value:
A utility class for serializing to a blob from a variadic list.

Definition at line 41 of file COFFPlatform.cpp.

◆ SPSCOFFJITDylibDepInfo

◆ SPSCOFFJITDylibDepInfoMap

◆ SPSCOFFObjectSectionsMap

◆ SPSCOFFRegisterObjectSectionsArgs

◆ SPSELFNixJITDylibDepInfoMap

◆ SPSELFPerObjectSectionsToRegister

◆ SPSExecutorAddrRange

◆ SPSExecutorAddrRangeSequence

◆ SPSExecutorSymbolDef

◆ SPSFinalizeRequest

◆ SPSJITSymbolFlags

◆ SPSLoadDylibSignature

Initial value:
SPS tag type for expecteds, which are either a T or a string representing an error.
SPSSequence< char > SPSString
SPS tag type for strings, which are equivalent to sequences of chars.

Definition at line 227 of file SimpleRemoteEPCUtils.h.

◆ SPSLookupSymbolsSignature

◆ SPSMachOJITDylibDepInfo

◆ SPSMachOJITDylibDepInfoMap

◆ SPSMap

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

SPS tag type for maps.

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

Definition at line 223 of file SimplePackedSerialization.h.

◆ SPSMemoryAccessBufferWrite

◆ SPSMemoryAccessPointerWrite

◆ SPSMemoryAccessUInt16Write

◆ SPSMemoryAccessUInt32Write

◆ SPSMemoryAccessUInt64Write

◆ SPSMemoryAccessUInt8Write

◆ SPSMemoryAccessUIntWrite

◆ SPSPerfJITCodeLoadRecord

◆ SPSPerfJITCodeUnwindingInfoRecord

◆ SPSPerfJITDebugEntry

◆ SPSPerfJITDebugInfoRecord

◆ SPSPerfJITRecordBatch

Initial value:
SPSTuple< SPSPerfJITRecordPrefix, uint64_t, uint64_t, uint64_t, uint64_t, SPSString, uint64_t > SPSPerfJITCodeUnwindingInfoRecord

Definition at line 207 of file PerfSharedStructs.h.

◆ SPSPerfJITRecordPrefix

◆ SPSRemoteSymbolLookup

◆ SPSRemoteSymbolLookupSet

◆ SPSRemoteSymbolLookupSetElement

◆ SPSSegFinalizeRequest

◆ SPSSharedMemoryFinalizeRequest

◆ SPSSharedMemorySegFinalizeRequest

◆ SPSSimpleRemoteEPCExecutorInfo

Initial value:

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 217 of file SimplePackedSerialization.h.

◆ SPSVTuneLineTable

◆ SPSVTuneMethodBatch

◆ SPSVTuneMethodInfo

Initial value:

Definition at line 55 of file VTuneSharedStructs.h.

◆ SPSVTuneMethodTable

◆ SPSVTuneStringTable

◆ SPSVTuneUnloadedMethodIDs

◆ SPSWrapperFunctionCall

Function Documentation

◆ makeMethodWrapperHandler()

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

Create a MethodWrapperHandler object from the given method pointer.

Definition at line 619 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 52 of file AllocationActions.h.

References llvm::count_if(), and P.

Referenced by runFinalizeActions().

◆ runDeallocActions()

void llvm::orc::shared::runDeallocActions ( ArrayRef< WrapperFunctionCall > DAs,
OnRunDeallocActionsComeleteFn OnComplete )

Run deallocation actions.

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

Definition at line 40 of file AllocationActions.cpp.

References llvm::ArrayRef< T >::back(), llvm::ArrayRef< T >::drop_back(), llvm::ArrayRef< T >::empty(), llvm::joinErrors(), and llvm::Error::success().

Referenced by llvm::orc::InProcessMemoryMapper::deinitialize(), and llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::deinitialize().

◆ runFinalizeActions()

void llvm::orc::shared::runFinalizeActions ( AllocActions & AAs,
OnRunFinalizeActionsCompleteFn OnComplete )

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 15 of file AllocationActions.cpp.

References llvm::joinErrors(), and numDeallocActions().

Referenced by llvm::orc::InProcessMemoryMapper::initialize(), and llvm::orc::rt_bootstrap::ExecutorSharedMemoryMapperService::initialize().