|
LLVM 23.0.0git
|
CRTP base for compact unwind traits classes. More...
#include "ExecutionEngine/JITLink/CompactUnwindSupport.h"
Static Public Member Functions | |
| static uint32_t | readPCRangeSize (ArrayRef< char > RecordContent) |
| static uint32_t | readEncoding (ArrayRef< char > RecordContent) |
| static std::optional< uint32_t > | encodeDWARFOffset (size_t Delta) |
Static Public Attributes | |
| static constexpr size_t | PointerSize = PtrSize |
| static constexpr size_t | Size = 3 * PointerSize + 2 * 4 |
| static constexpr size_t | FnFieldOffset = 0 |
| static constexpr size_t | SizeFieldOffset = FnFieldOffset + PointerSize |
| static constexpr size_t | EncodingFieldOffset = SizeFieldOffset + 4 |
| static constexpr size_t | PersonalityFieldOffset = EncodingFieldOffset + 4 |
| static constexpr size_t | LSDAFieldOffset |
CRTP base for compact unwind traits classes.
Automatically provides derived constants.
Derived classes should implement the following properties and methods:
Endianness:
constexpr static endianness Endianness = ...;
Encoding mask for offset to DWARF section for records that need DWARF:
constexpr static uint32_t DWARFSectionOffsetMask = ...;
Predicate for checking whether encoding needs DWARF:
static bool encodingSpecifiesDWARF(uint32_t Encoding) { ... }
Predicate for checking whether record can be merged with a previous record with the same encoding:
static bool encodingCanBeMerged(uint32_t Encoding) { ... }
FIXME: Passing PtrSize as a template parameter is a hack to work around a bug in older MSVC compilers (until at least MSVC 15) where constexpr fields in the CRTP impl class were not visible to the base class. Once we no longer need to support these compilers the PtrSize template argument should be removed and PointerSize should be defined as a member in the CRTP Impl classes.
Definition at line 60 of file CompactUnwindSupport.h.
|
inlinestatic |
Definition at line 84 of file CompactUnwindSupport.h.
|
inlinestatic |
Definition at line 77 of file CompactUnwindSupport.h.
References assert(), llvm::ArrayRef< T >::data(), EncodingFieldOffset, llvm::support::endian::read32(), and llvm::ArrayRef< T >::size().
|
inlinestatic |
Definition at line 70 of file CompactUnwindSupport.h.
References assert(), llvm::ArrayRef< T >::data(), llvm::support::endian::read32(), llvm::ArrayRef< T >::size(), and SizeFieldOffset.
|
staticconstexpr |
Definition at line 65 of file CompactUnwindSupport.h.
Referenced by readEncoding().
|
staticconstexpr |
Definition at line 63 of file CompactUnwindSupport.h.
|
staticconstexpr |
Definition at line 67 of file CompactUnwindSupport.h.
|
staticconstexpr |
Definition at line 66 of file CompactUnwindSupport.h.
|
staticconstexpr |
Definition at line 61 of file CompactUnwindSupport.h.
|
staticconstexpr |
Definition at line 62 of file CompactUnwindSupport.h.
|
staticconstexpr |
Definition at line 64 of file CompactUnwindSupport.h.
Referenced by readPCRangeSize().