LLVM 17.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::StackMaps Class Reference

#include "llvm/CodeGen/StackMaps.h"

Classes

struct  CallsiteInfo
 
struct  FunctionInfo
 
struct  LiveOutReg
 
struct  Location
 

Public Types

using OpType = enum { DirectMemRefOp, IndirectMemRefOp, ConstantOp }
 
using LocationVec = SmallVector< Location, 8 >
 
using LiveOutVec = SmallVector< LiveOutReg, 8 >
 
using ConstantPool = MapVector< uint64_t, uint64_t >
 
using FnInfoMap = MapVector< const MCSymbol *, FunctionInfo >
 
using CallsiteInfoList = std::vector< CallsiteInfo >
 

Public Member Functions

 StackMaps (AsmPrinter &AP)
 
void reset ()
 
void recordStackMap (const MCSymbol &L, const MachineInstr &MI)
 Generate a stackmap record for a stackmap instruction.
 
void recordPatchPoint (const MCSymbol &L, const MachineInstr &MI)
 Generate a stackmap record for a patchpoint instruction.
 
void recordStatepoint (const MCSymbol &L, const MachineInstr &MI)
 Generate a stackmap record for a statepoint instruction.
 
void serializeToStackMapSection ()
 If there is any stack map data, create a stack map section and serialize the map info into it.
 
CallsiteInfoListgetCSInfos ()
 Get call site info.
 
FnInfoMapgetFnInfos ()
 Get function info.
 

Static Public Member Functions

static unsigned getNextMetaArgIdx (const MachineInstr *MI, unsigned CurIdx)
 Get index of next meta operand.
 

Detailed Description

Definition at line 259 of file StackMaps.h.

Member Typedef Documentation

◆ CallsiteInfoList

Definition at line 334 of file StackMaps.h.

◆ ConstantPool

Definition at line 310 of file StackMaps.h.

◆ FnInfoMap

Definition at line 333 of file StackMaps.h.

◆ LiveOutVec

Definition at line 309 of file StackMaps.h.

◆ LocationVec

Definition at line 308 of file StackMaps.h.

◆ OpType

using llvm::StackMaps::OpType = enum { DirectMemRefOp, IndirectMemRefOp, ConstantOp }

Definition at line 294 of file StackMaps.h.

Constructor & Destructor Documentation

◆ StackMaps()

StackMaps::StackMaps ( AsmPrinter AP)

Definition at line 166 of file StackMaps.cpp.

References llvm_unreachable, and StackMapVersion.

Member Function Documentation

◆ getCSInfos()

CallsiteInfoList & llvm::StackMaps::getCSInfos ( )
inline

Get call site info.

Definition at line 356 of file StackMaps.h.

◆ getFnInfos()

FnInfoMap & llvm::StackMaps::getFnInfos ( )
inline

Get function info.

Definition at line 359 of file StackMaps.h.

◆ getNextMetaArgIdx()

unsigned StackMaps::getNextMetaArgIdx ( const MachineInstr MI,
unsigned  CurIdx 
)
static

Get index of next meta operand.

Similar to parseOperand, but does not actually parses operand meaning.

Definition at line 171 of file StackMaps.cpp.

References assert(), llvm_unreachable, and MI.

Referenced by llvm::MachineInstr::findTiedOperandIdx(), llvm::StatepointOpers::getNumAllocaIdx(), llvm::StatepointOpers::getNumGcMapEntriesIdx(), and llvm::StatepointOpers::getNumGCPtrIdx().

◆ recordPatchPoint()

void StackMaps::recordPatchPoint ( const MCSymbol L,
const MachineInstr MI 
)

◆ recordStackMap()

void StackMaps::recordStackMap ( const MCSymbol L,
const MachineInstr MI 
)

Generate a stackmap record for a stackmap instruction.

MI must be a raw STACKMAP, not a PATCHPOINT.

Definition at line 541 of file StackMaps.cpp.

References assert(), llvm::StackMapOpers::getVarIdx(), llvm::PatchPointOpers::IDPos, and MI.

◆ recordStatepoint()

void StackMaps::recordStatepoint ( const MCSymbol L,
const MachineInstr MI 
)

Generate a stackmap record for a statepoint instruction.

Definition at line 572 of file StackMaps.cpp.

References assert(), llvm::StatepointOpers::getID(), llvm::StatepointOpers::getVarIdx(), and MI.

◆ reset()

void llvm::StackMaps::reset ( )
inline

◆ serializeToStackMapSection()

void StackMaps::serializeToStackMapSection ( )

If there is any stack map data, create a stack map section and serialize the map info into it.

Serialize the stackmap data.

This clears the stack map data structures afterwards.

Definition at line 725 of file StackMaps.cpp.

References llvm::MCStreamer::addBlankLine(), assert(), llvm::dbgs(), llvm::MCStreamer::emitLabel(), llvm::MCContext::getObjectFileInfo(), llvm::MCContext::getOrCreateSymbol(), llvm::MCObjectFileInfo::getStackMapSection(), LLVM_DEBUG, llvm::AsmPrinter::OutStreamer, and llvm::MCStreamer::switchSection().

Referenced by llvm::AsmPrinter::emitStackMaps().


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