class StatepointLoweringState
Declaration
class StatepointLoweringState { /* full declaration omitted */ };
Description
This class tracks both per-statepoint and per-selectiondag information. For each statepoint it tracks locations of it's gc valuess (incoming and relocated) and list of gcreloc calls scheduled for visiting (this is used for a debug mode consistency check only). The spill slot tracking works in concert with information in FunctionLoweringInfo.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:35
Method Overview
- public StatepointLoweringState()
- public llvm::SDValue allocateStackSlot(llvm::EVT ValueType, llvm::SelectionDAGBuilder & Builder)
- public void clear()
- public llvm::SDValue getLocation(llvm::SDValue Val)
- public bool isStackSlotAllocated(int Offset)
- public void relocCallVisited(const llvm::CallInst & RelocCall)
- public void reserveStackSlot(int Offset)
- public void scheduleRelocCall(const llvm::CallInst & RelocCall)
- public void setLocation(llvm::SDValue Val, llvm::SDValue Location)
- public void startNewStatepoint(llvm::SelectionDAGBuilder & Builder)
Methods
¶StatepointLoweringState()
StatepointLoweringState()
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:37
¶llvm::SDValue allocateStackSlot(
llvm::EVT ValueType,
llvm::SelectionDAGBuilder& Builder)
llvm::SDValue allocateStackSlot(
llvm::EVT ValueType,
llvm::SelectionDAGBuilder& Builder)
Description
Get a stack slot we can use to store an value of type ValueType. This will hopefully be a recylced slot from another statepoint.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:92
Parameters
- llvm::EVT ValueType
- llvm::SelectionDAGBuilder& Builder
¶void clear()
void clear()
Description
Clear the memory usage of this object. This is called from SelectionDAGBuilder::clear. We require this is never called in the midst of processing a statepoint sequence.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:46
¶llvm::SDValue getLocation(llvm::SDValue Val)
llvm::SDValue getLocation(llvm::SDValue Val)
Description
Returns the spill location of a value incoming to the current statepoint. Will return SDValue() if this value hasn't been spilled. Otherwise, the value has already been spilled and no further action is required by the caller.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:52
Parameters
- llvm::SDValue Val
¶bool isStackSlotAllocated(int Offset)
bool isStackSlotAllocated(int Offset)
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:102
Parameters
- int Offset
¶void relocCallVisited(
const llvm::CallInst& RelocCall)
void relocCallVisited(
const llvm::CallInst& RelocCall)
Description
Remove this gc_relocate from the list we're expecting to see before the next statepoint. If we weren't expecting to see it, we'll report an assertion.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:77
Parameters
- const llvm::CallInst& RelocCall
¶void reserveStackSlot(int Offset)
void reserveStackSlot(int Offset)
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:94
Parameters
- int Offset
¶void scheduleRelocCall(
const llvm::CallInst& RelocCall)
void scheduleRelocCall(
const llvm::CallInst& RelocCall)
Description
Record the fact that we expect to encounter a given gc_relocate before the next statepoint. If we don't see it, we'll report an assertion.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:68
Parameters
- const llvm::CallInst& RelocCall
¶void setLocation(llvm::SDValue Val,
llvm::SDValue Location)
void setLocation(llvm::SDValue Val,
llvm::SDValue Location)
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:59
Parameters
- llvm::SDValue Val
- llvm::SDValue Location
¶void startNewStatepoint(
llvm::SelectionDAGBuilder& Builder)
void startNewStatepoint(
llvm::SelectionDAGBuilder& Builder)
Description
Reset all state tracking for a newly encountered safepoint. Also performs some consistency checking.
Declared at: llvm/lib/CodeGen/SelectionDAG/StatepointLowering.h:41
Parameters
- llvm::SelectionDAGBuilder& Builder