LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::StackMapParser< Endianness > Class Template Reference

A parser for the latest stackmap format. At the moment, latest=V3. More...

#include "llvm/Object/StackMapParser.h"

Classes

class  AccessorIterator
 
class  ConstantAccessor
 Accessor for constants. More...
 
class  FunctionAccessor
 Accessor for function records. More...
 
class  LiveOutAccessor
 Accessor for stackmap live-out fields. More...
 
class  LocationAccessor
 Accessor for location records. More...
 
class  RecordAccessor
 Accessor for stackmap records. More...
 

Public Types

enum class  LocationKind : uint8_t {
  Register = 1 , Direct = 2 , Indirect = 3 , Constant = 4 ,
  ConstantIndex = 5
}
 
using function_iterator = AccessorIterator< FunctionAccessor >
 
using constant_iterator = AccessorIterator< ConstantAccessor >
 
using record_iterator = AccessorIterator< RecordAccessor >
 

Public Member Functions

 StackMapParser (ArrayRef< uint8_t > StackMapSection)
 Construct a parser for a version-3 stackmap.
 
unsigned getVersion () const
 Get the version number of this stackmap. (Always returns 3).
 
uint32_t getNumFunctions () const
 Get the number of functions in the stack map.
 
uint32_t getNumConstants () const
 Get the number of large constants in the stack map.
 
uint32_t getNumRecords () const
 Get the number of stackmap records in the stackmap.
 
FunctionAccessor getFunction (unsigned FunctionIndex) const
 Return an FunctionAccessor for the given function index.
 
function_iterator functions_begin () const
 Begin iterator for functions.
 
function_iterator functions_end () const
 End iterator for functions.
 
iterator_range< function_iteratorfunctions () const
 Iterator range for functions.
 
ConstantAccessor getConstant (unsigned ConstantIndex) const
 Return the large constant at the given index.
 
constant_iterator constants_begin () const
 Begin iterator for constants.
 
constant_iterator constants_end () const
 End iterator for constants.
 
iterator_range< constant_iteratorconstants () const
 Iterator range for constants.
 
RecordAccessor getRecord (unsigned RecordIndex) const
 Return a RecordAccessor for the given record index.
 
record_iterator records_begin () const
 Begin iterator for records.
 
record_iterator records_end () const
 End iterator for records.
 
iterator_range< record_iteratorrecords () const
 Iterator range for records.
 

Static Public Member Functions

static Error validateHeader (ArrayRef< uint8_t > StackMapSection)
 Validates the header of the specified stack map section.
 

Detailed Description

template<llvm::endianness Endianness>
class llvm::StackMapParser< Endianness >

A parser for the latest stackmap format. At the moment, latest=V3.

Definition at line 24 of file StackMapParser.h.

Member Typedef Documentation

◆ constant_iterator

template<llvm::endianness Endianness>
using llvm::StackMapParser< Endianness >::constant_iterator = AccessorIterator<ConstantAccessor>

Definition at line 341 of file StackMapParser.h.

◆ function_iterator

template<llvm::endianness Endianness>
using llvm::StackMapParser< Endianness >::function_iterator = AccessorIterator<FunctionAccessor>

Definition at line 340 of file StackMapParser.h.

◆ record_iterator

template<llvm::endianness Endianness>
using llvm::StackMapParser< Endianness >::record_iterator = AccessorIterator<RecordAccessor>

Definition at line 342 of file StackMapParser.h.

Member Enumeration Documentation

◆ LocationKind

template<llvm::endianness Endianness>
enum class llvm::StackMapParser::LocationKind : uint8_t
strong
Enumerator
Register 
Direct 
Indirect 
Constant 
ConstantIndex 

Definition at line 105 of file StackMapParser.h.

Constructor & Destructor Documentation

◆ StackMapParser()

template<llvm::endianness Endianness>
llvm::StackMapParser< Endianness >::StackMapParser ( ArrayRef< uint8_t StackMapSection)
inline

Construct a parser for a version-3 stackmap.

StackMap data will be read from the given array.

Definition at line 306 of file StackMapParser.h.

References assert(), E, llvm::StackMapParser< Endianness >::getNumConstants(), llvm::StackMapParser< Endianness >::getNumFunctions(), llvm::StackMapParser< Endianness >::getNumRecords(), and I.

Member Function Documentation

◆ constants()

template<llvm::endianness Endianness>
iterator_range< constant_iterator > llvm::StackMapParser< Endianness >::constants ( ) const
inline

◆ constants_begin()

template<llvm::endianness Endianness>
constant_iterator llvm::StackMapParser< Endianness >::constants_begin ( ) const
inline

Begin iterator for constants.

Definition at line 392 of file StackMapParser.h.

References llvm::StackMapParser< Endianness >::getConstant().

Referenced by llvm::StackMapParser< Endianness >::constants().

◆ constants_end()

template<llvm::endianness Endianness>
constant_iterator llvm::StackMapParser< Endianness >::constants_end ( ) const
inline

◆ functions()

template<llvm::endianness Endianness>
iterator_range< function_iterator > llvm::StackMapParser< Endianness >::functions ( ) const
inline

◆ functions_begin()

template<llvm::endianness Endianness>
function_iterator llvm::StackMapParser< Endianness >::functions_begin ( ) const
inline

Begin iterator for functions.

Definition at line 369 of file StackMapParser.h.

References llvm::StackMapParser< Endianness >::getFunction().

Referenced by llvm::StackMapParser< Endianness >::functions().

◆ functions_end()

template<llvm::endianness Endianness>
function_iterator llvm::StackMapParser< Endianness >::functions_end ( ) const
inline

◆ getConstant()

template<llvm::endianness Endianness>
ConstantAccessor llvm::StackMapParser< Endianness >::getConstant ( unsigned  ConstantIndex) const
inline

Return the large constant at the given index.

Definition at line 386 of file StackMapParser.h.

References llvm::StackMapParser< Endianness >::ConstantIndex, and llvm::ArrayRef< T >::data().

Referenced by llvm::StackMapParser< Endianness >::constants_begin().

◆ getFunction()

template<llvm::endianness Endianness>
FunctionAccessor llvm::StackMapParser< Endianness >::getFunction ( unsigned  FunctionIndex) const
inline

Return an FunctionAccessor for the given function index.

Definition at line 363 of file StackMapParser.h.

References llvm::ArrayRef< T >::data().

Referenced by llvm::StackMapParser< Endianness >::functions_begin().

◆ getNumConstants()

template<llvm::endianness Endianness>
uint32_t llvm::StackMapParser< Endianness >::getNumConstants ( ) const
inline

Get the number of large constants in the stack map.

Definition at line 353 of file StackMapParser.h.

Referenced by llvm::StackMapParser< Endianness >::constants_end(), and llvm::StackMapParser< Endianness >::StackMapParser().

◆ getNumFunctions()

template<llvm::endianness Endianness>
uint32_t llvm::StackMapParser< Endianness >::getNumFunctions ( ) const
inline

Get the number of functions in the stack map.

Definition at line 348 of file StackMapParser.h.

Referenced by llvm::StackMapParser< Endianness >::functions_end(), and llvm::StackMapParser< Endianness >::StackMapParser().

◆ getNumRecords()

template<llvm::endianness Endianness>
uint32_t llvm::StackMapParser< Endianness >::getNumRecords ( ) const
inline

◆ getRecord()

template<llvm::endianness Endianness>
RecordAccessor llvm::StackMapParser< Endianness >::getRecord ( unsigned  RecordIndex) const
inline

◆ getVersion()

template<llvm::endianness Endianness>
unsigned llvm::StackMapParser< Endianness >::getVersion ( ) const
inline

Get the version number of this stackmap. (Always returns 3).

Definition at line 345 of file StackMapParser.h.

◆ records()

template<llvm::endianness Endianness>
iterator_range< record_iterator > llvm::StackMapParser< Endianness >::records ( ) const
inline

◆ records_begin()

template<llvm::endianness Endianness>
record_iterator llvm::StackMapParser< Endianness >::records_begin ( ) const
inline

◆ records_end()

template<llvm::endianness Endianness>
record_iterator llvm::StackMapParser< Endianness >::records_end ( ) const
inline

◆ validateHeader()

template<llvm::endianness Endianness>
static Error llvm::StackMapParser< Endianness >::validateHeader ( ArrayRef< uint8_t StackMapSection)
inlinestatic

Validates the header of the specified stack map section.

Definition at line 324 of file StackMapParser.h.

References llvm::object::createError(), llvm::ArrayRef< T >::size(), llvm::Error::success(), and llvm::Version.


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