LLVM
8.0.1
|
#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 MachineInstr &MI) |
Generate a stackmap record for a stackmap instruction. More... | |
void | recordPatchPoint (const MachineInstr &MI) |
Generate a stackmap record for a patchpoint instruction. More... | |
void | recordStatepoint (const MachineInstr &MI) |
Generate a stackmap record for a statepoint instruction. More... | |
void | serializeToStackMapSection () |
If there is any stack map data, create a stack map section and serialize the map info into it. More... | |
CallsiteInfoList & | getCSInfos () |
Get call site info. More... | |
FnInfoMap & | getFnInfos () |
Get function info. More... | |
Definition at line 194 of file StackMaps.h.
using llvm::StackMaps::CallsiteInfoList = std::vector<CallsiteInfo> |
Definition at line 265 of file StackMaps.h.
using llvm::StackMaps::ConstantPool = MapVector<uint64_t, uint64_t> |
Definition at line 241 of file StackMaps.h.
using llvm::StackMaps::FnInfoMap = MapVector<const MCSymbol *, FunctionInfo> |
Definition at line 264 of file StackMaps.h.
using llvm::StackMaps::LiveOutVec = SmallVector<LiveOutReg, 8> |
Definition at line 240 of file StackMaps.h.
using llvm::StackMaps::LocationVec = SmallVector<Location, 8> |
Definition at line 239 of file StackMaps.h.
using llvm::StackMaps::OpType = enum { DirectMemRefOp, IndirectMemRefOp, ConstantOp } |
Definition at line 229 of file StackMaps.h.
StackMaps::StackMaps | ( | AsmPrinter & | AP | ) |
Definition at line 87 of file StackMaps.cpp.
References llvm_unreachable, and StackMapVersion.
|
inline |
Get call site info.
Definition at line 284 of file StackMaps.h.
|
inline |
Get function info.
Definition at line 287 of file StackMaps.h.
References llvm::dbgs(), debug, llvm::BitmaskEnumDetail::Mask(), MI, print(), Reg, and TRI.
void StackMaps::recordPatchPoint | ( | const MachineInstr & | MI | ) |
Generate a stackmap record for a patchpoint instruction.
Definition at line 373 of file StackMaps.cpp.
References assert(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::operands_begin(), llvm::MachineInstr::operands_end(), and llvm::StackMaps::Location::Register.
Referenced by EmitNop(), and EmitNops().
void StackMaps::recordStackMap | ( | const MachineInstr & | MI | ) |
Generate a stackmap record for a stackmap instruction.
MI must be a raw STACKMAP, not a PATCHPOINT.
Definition at line 364 of file StackMaps.cpp.
References assert(), llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::PatchPointOpers::IDPos, llvm::MachineInstr::operands_begin(), and llvm::MachineInstr::operands_end().
Referenced by EmitNop(), and EmitNops().
void StackMaps::recordStatepoint | ( | const MachineInstr & | MI | ) |
Generate a stackmap record for a statepoint instruction.
Definition at line 394 of file StackMaps.cpp.
References assert(), llvm::dbgs(), llvm::MCStreamer::EmitIntValue(), llvm::MCStreamer::EmitSymbolValue(), llvm::MCStreamer::EmitValue(), llvm::MCStreamer::EmitValueToAlignment(), llvm::MachineInstr::getOpcode(), LLVM_DEBUG, llvm::AArch64CC::LO, llvm::MachineInstr::operands_begin(), llvm::MachineInstr::operands_end(), llvm::SmallVectorBase::size(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::size(), StackMapVersion, and UINT64_MAX.
Referenced by EmitNops().
|
inline |
Definition at line 233 of file StackMaps.h.
Referenced by llvm::SystemZAsmPrinter::doInitialization(), and llvm::X86AsmPrinter::doInitialization().
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 549 of file StackMaps.cpp.
References llvm::MCStreamer::AddBlankLine(), assert(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::clear(), llvm::dbgs(), llvm::MCStreamer::EmitLabel(), llvm::MapVector< KeyT, ValueT, MapType, VectorType >::empty(), llvm::MCContext::getObjectFileInfo(), llvm::MCContext::getOrCreateSymbol(), llvm::MCObjectFileInfo::getStackMapSection(), LLVM_DEBUG, llvm::AsmPrinter::OutStreamer, and llvm::MCStreamer::SwitchSection().
Referenced by llvm::AsmPrinter::emitStackMaps().