LLVM  6.0.0svn
Public Types | Public Member Functions | Protected Member Functions | List of all members
llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy > Class Template Reference

Analogous to CallSiteBase, this provides most of the actual functionality for Statepoint and ImmutableStatepoint. More...

#include "llvm/IR/Statepoint.h"

Inheritance diagram for llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >:
Inheritance graph
[legend]

Public Types

enum  {
  IDPos = 0, NumPatchBytesPos = 1, CalledFunctionPos = 2, NumCallArgsPos = 3,
  FlagsPos = 4, CallArgsBeginPos = 5
}
 
using arg_iterator = typename CallSiteTy::arg_iterator
 

Public Member Functions

void * operator new (size_t, unsigned)=delete
 
void * operator new (size_t s)=delete
 
 operator bool () const
 
CallSiteTy getCallSite () const
 Return the underlying CallSite. More...
 
uint64_t getFlags () const
 
uint64_t getID () const
 Return the ID associated with this statepoint. More...
 
uint32_t getNumPatchBytes () const
 Return the number of patchable bytes associated with this statepoint. More...
 
ValueTy * getCalledValue () const
 Return the value actually being called or invoked. More...
 
InstructionTy * getInstruction () const
 
FunTy * getCalledFunction () const
 Return the function being called if this is a direct call, otherwise return null (if it's an indirect call). More...
 
FunTy * getCaller () const
 Return the caller function for this statepoint. More...
 
bool doesNotThrow () const
 Determine if the statepoint cannot unwind. More...
 
TypegetActualReturnType () const
 Return the type of the value returned by the call underlying the statepoint. More...
 
int getNumCallArgs () const
 Number of arguments to be passed to the actual callee. More...
 
size_t arg_size () const
 
CallSiteTy::arg_iterator arg_begin () const
 
CallSiteTy::arg_iterator arg_end () const
 
ValueTy * getArgument (unsigned Index)
 
iterator_range< arg_iteratorcall_args () const
 range adapter for call arguments More...
 
bool paramHasAttr (unsigned i, Attribute::AttrKind A) const
 Return true if the call or the callee has the given attribute. More...
 
int getNumTotalGCTransitionArgs () const
 Number of GC transition args. More...
 
CallSiteTy::arg_iterator gc_transition_args_begin () const
 
CallSiteTy::arg_iterator gc_transition_args_end () const
 
iterator_range< arg_iteratorgc_transition_args () const
 range adapter for GC transition arguments More...
 
int getNumTotalVMSArgs () const
 Number of additional arguments excluding those intended for garbage collection. More...
 
CallSiteTy::arg_iterator deopt_begin () const
 
CallSiteTy::arg_iterator deopt_end () const
 
iterator_range< arg_iteratordeopt_operands () const
 range adapter for vm state arguments More...
 
CallSiteTy::arg_iterator gc_args_begin () const
 
CallSiteTy::arg_iterator gc_args_end () const
 
unsigned gcArgsStartIdx () const
 
iterator_range< arg_iteratorgc_args () const
 range adapter for gc arguments More...
 
std::vector< const GCRelocateInst * > getRelocates () const
 Get list of all gc reloactes linked to this statepoint May contain several relocations for the same base/derived pair. More...
 
const GCResultInstgetGCResult () const
 Get the experimental_gc_result call tied to this statepoint. More...
 
void verify ()
 Asserts if this statepoint is malformed. More...
 

Protected Member Functions

 StatepointBase (InstructionTy *I)
 
 StatepointBase (CallSiteTy CS)
 

Detailed Description

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
class llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >

Analogous to CallSiteBase, this provides most of the actual functionality for Statepoint and ImmutableStatepoint.

It is templatized to allow easily specializing of const and non-const concrete subtypes. This is structured analogous to CallSite rather than the IntrinsicInst.h helpers since we need to support invokable statepoints.

Definition at line 78 of file Statepoint.h.

Member Typedef Documentation

◆ arg_iterator

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
using llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::arg_iterator = typename CallSiteTy::arg_iterator

Definition at line 95 of file Statepoint.h.

Member Enumeration Documentation

◆ anonymous enum

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
anonymous enum
Enumerator
IDPos 
NumPatchBytesPos 
CalledFunctionPos 
NumCallArgsPos 
FlagsPos 
CallArgsBeginPos 

Definition at line 97 of file Statepoint.h.

Constructor & Destructor Documentation

◆ StatepointBase() [1/2]

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::StatepointBase ( InstructionTy *  I)
inlineexplicitprotected

Definition at line 82 of file Statepoint.h.

◆ StatepointBase() [2/2]

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::StatepointBase ( CallSiteTy  CS)
inlineexplicitprotected

Definition at line 89 of file Statepoint.h.

Member Function Documentation

◆ arg_begin()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::arg_begin ( ) const
inline

Definition at line 179 of file Statepoint.h.

◆ arg_end()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::arg_end ( ) const
inline

Definition at line 183 of file Statepoint.h.

◆ arg_size()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
size_t llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::arg_size ( ) const
inline

Definition at line 178 of file Statepoint.h.

◆ call_args()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
iterator_range<arg_iterator> llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::call_args ( ) const
inline

range adapter for call arguments

Definition at line 195 of file Statepoint.h.

◆ deopt_begin()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::deopt_begin ( ) const
inline

Definition at line 234 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ deopt_end()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::deopt_end ( ) const
inline

Definition at line 239 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ deopt_operands()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
iterator_range<arg_iterator> llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::deopt_operands ( ) const
inline

range adapter for vm state arguments

Definition at line 246 of file Statepoint.h.

◆ doesNotThrow()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
bool llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::doesNotThrow ( ) const
inline

Determine if the statepoint cannot unwind.

Definition at line 159 of file Statepoint.h.

◆ gc_args()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
iterator_range<arg_iterator> llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_args ( ) const
inline

range adapter for gc arguments

Definition at line 262 of file Statepoint.h.

Referenced by insertParsePoints().

◆ gc_args_begin()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_args_begin ( ) const
inline

Definition at line 250 of file Statepoint.h.

Referenced by insertParsePoints(), and llvm::SelectionDAGBuilder::LowerStatepoint().

◆ gc_args_end()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_args_end ( ) const
inline

Definition at line 253 of file Statepoint.h.

Referenced by insertParsePoints(), and llvm::SelectionDAGBuilder::LowerStatepoint().

◆ gc_transition_args()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
iterator_range<arg_iterator> llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_transition_args ( ) const
inline

range adapter for GC transition arguments

Definition at line 223 of file Statepoint.h.

◆ gc_transition_args_begin()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_transition_args_begin ( ) const
inline

Definition at line 211 of file Statepoint.h.

◆ gc_transition_args_end()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy::arg_iterator llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gc_transition_args_end ( ) const
inline

Definition at line 216 of file Statepoint.h.

◆ gcArgsStartIdx()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
unsigned llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::gcArgsStartIdx ( ) const
inline

Definition at line 257 of file Statepoint.h.

Referenced by makeStatepointExplicitImpl().

◆ getActualReturnType()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
Type* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getActualReturnType ( ) const
inline

Return the type of the value returned by the call underlying the statepoint.

Definition at line 166 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getArgument()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
ValueTy* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getArgument ( unsigned  Index)
inline

Definition at line 189 of file Statepoint.h.

◆ getCalledFunction()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
FunTy* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getCalledFunction ( ) const
inline

Return the function being called if this is a direct call, otherwise return null (if it's an indirect call).

Definition at line 151 of file Statepoint.h.

◆ getCalledValue()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
ValueTy* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getCalledValue ( ) const
inline

Return the value actually being called or invoked.

Definition at line 141 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerCallSiteWithDeoptBundle(), and llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getCaller()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
FunTy* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getCaller ( ) const
inline

Return the caller function for this statepoint.

Definition at line 156 of file Statepoint.h.

◆ getCallSite()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
CallSiteTy llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getCallSite ( ) const
inline

Return the underlying CallSite.

Definition at line 115 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getFlags()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
uint64_t llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getFlags ( ) const
inline

Definition at line 120 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getGCResult()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
const GCResultInst* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getGCResult ( ) const
inline

Get the experimental_gc_result call tied to this statepoint.

Can be nullptr if there isn't a gc_result tied to this statepoint. Guaranteed to be a CallInst if non-null.

Definition at line 275 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getID()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
uint64_t llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getID ( ) const
inline

Return the ID associated with this statepoint.

Definition at line 126 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getInstruction()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
InstructionTy* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getInstruction ( ) const
inline

Definition at line 145 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getNumCallArgs()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
int llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getNumCallArgs ( ) const
inline

Number of arguments to be passed to the actual callee.

Definition at line 173 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getNumPatchBytes()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
uint32_t llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getNumPatchBytes ( ) const
inline

Return the number of patchable bytes associated with this statepoint.

Definition at line 132 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ getNumTotalGCTransitionArgs()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
int llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getNumTotalGCTransitionArgs ( ) const
inline

Number of GC transition args.

Definition at line 207 of file Statepoint.h.

◆ getNumTotalVMSArgs()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
int llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getNumTotalVMSArgs ( ) const
inline

Number of additional arguments excluding those intended for garbage collection.

Definition at line 229 of file Statepoint.h.

◆ getRelocates()

template<typename FunTy , typename InstructionTy , typename ValueTy , typename CallSiteTy >
std::vector< const GCRelocateInst * > llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::getRelocates ( ) const

Get list of all gc reloactes linked to this statepoint May contain several relocations for the same base/derived pair.

For example this could happen due to relocations on unwinding path of invoke.

Definition at line 423 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().

◆ operator bool()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::operator bool ( ) const
inlineexplicit

Definition at line 109 of file Statepoint.h.

◆ operator new() [1/2]

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
void* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::operator new ( size_t  ,
unsigned   
)
delete

◆ operator new() [2/2]

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
void* llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::operator new ( size_t  s)
delete

◆ paramHasAttr()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
bool llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::paramHasAttr ( unsigned  i,
Attribute::AttrKind  A 
) const
inline

Return true if the call or the callee has the given attribute.

Definition at line 200 of file Statepoint.h.

◆ verify()

template<typename FunTy, typename InstructionTy, typename ValueTy, typename CallSiteTy>
void llvm::StatepointBase< FunTy, InstructionTy, ValueTy, CallSiteTy >::verify ( )
inline

Asserts if this statepoint is malformed.

Common cases for failure include incorrect length prefixes for variable length sections or illegal values for parameters.

Definition at line 286 of file Statepoint.h.

Referenced by llvm::SelectionDAGBuilder::LowerStatepoint().


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