|
LLVM
3.7.0
|
This class tracks both per-statepoint and per-selectiondag information. More...
#include <StatepointLowering.h>
Public Member Functions | |
| StatepointLoweringState () | |
| void | startNewStatepoint (SelectionDAGBuilder &Builder) |
| Reset all state tracking for a newly encountered safepoint. More... | |
| void | clear () |
| Clear the memory usage of this object. More... | |
| SDValue | getLocation (SDValue val) |
| Returns the spill location of a value incoming to the current statepoint. More... | |
| void | setLocation (SDValue val, SDValue Location) |
| void | scheduleRelocCall (const CallInst &RelocCall) |
| Record the fact that we expect to encounter a given gc_relocate before the next statepoint. More... | |
| void | relocCallVisited (const CallInst &RelocCall) |
| Remove this gc_relocate from the list we're expecting to see before the next statepoint. More... | |
| SDValue | allocateStackSlot (EVT ValueType, SelectionDAGBuilder &Builder) |
| Get a stack slot we can use to store an value of type ValueType. More... | |
| void | reserveStackSlot (int Offset) |
| bool | isStackSlotAllocated (int Offset) |
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.
Definition at line 31 of file StatepointLowering.h.
|
inline |
Definition at line 33 of file StatepointLowering.h.
| SDValue StatepointLoweringState::allocateStackSlot | ( | EVT | ValueType, |
| SelectionDAGBuilder & | Builder | ||
| ) |
Get a stack slot we can use to store an value of type ValueType.
This will hopefully be a recylced slot from another statepoint.
Definition at line 72 of file StatepointLowering.cpp.
References llvm::SelectionDAG::CreateStackTemporary(), llvm::SelectionDAGBuilder::DAG, llvm::SelectionDAGBuilder::FuncInfo, llvm::SelectionDAG::getFrameIndex(), llvm_unreachable, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::FunctionLoweringInfo::StatepointStackSlots.
Referenced by spillIncomingStatepointValue().
| void StatepointLoweringState::clear | ( | ) |
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.
Definition at line 64 of file StatepointLowering.cpp.
References llvm::SmallVectorImpl< T >::clear().
Referenced by llvm::SelectionDAGBuilder::clear().
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.
Definition at line 48 of file StatepointLowering.h.
Referenced by lowerStatepointMetaArgs(), reservePreviousStackSlotForValue(), and spillIncomingStatepointValue().
Definition at line 91 of file StatepointLowering.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by reservePreviousStackSlotForValue().
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.
Definition at line 68 of file StatepointLowering.h.
|
inline |
Definition at line 84 of file StatepointLowering.h.
References llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by reservePreviousStackSlotForValue().
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.
Definition at line 62 of file StatepointLowering.h.
Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().
Definition at line 53 of file StatepointLowering.h.
Referenced by reservePreviousStackSlotForValue(), and spillIncomingStatepointValue().
| void StatepointLoweringState::startNewStatepoint | ( | SelectionDAGBuilder & | Builder | ) |
Reset all state tracking for a newly encountered safepoint.
Also performs some consistency checking.
Definition at line 49 of file StatepointLowering.cpp.
References llvm::SelectionDAGBuilder::FuncInfo, llvm::SmallVectorImpl< T >::resize(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::FunctionLoweringInfo::StatepointStackSlots.
Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().
1.8.6