clang 22.0.0git
clang::interp::InterpStack Class Referencefinal

Stack frame storing temporaries and parameters. More...

#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/ByteCode/InterpStack.h"

Public Member Functions

 InterpStack ()=default
 ~InterpStack ()
 Destroys the stack, freeing up storage.
template<typename T, typename... Tys>
void push (Tys &&...Args)
 Constructs a value in place on the top of the stack.
template<typename T>
T pop ()
 Returns the value from the top of the stack and removes it.
template<typename T>
void discard ()
 Discards the top value from the stack.
template<typename T>
Tpeek () const
 Returns a reference to the value on the top of the stack.
template<typename T>
Tpeek (size_t Offset) const
void * top () const
 Returns a pointer to the top object.
size_t size () const
 Returns the size of the stack in bytes.
void clear ()
 Clears the stack.
void clearTo (size_t NewSize)
bool empty () const
 Returns whether the stack is empty.
void dump () const
 dump the stack contents to stderr.

Detailed Description

Stack frame storing temporaries and parameters.

Definition at line 25 of file InterpStack.h.

Constructor & Destructor Documentation

◆ InterpStack()

clang::interp::InterpStack::InterpStack ( )
default

◆ ~InterpStack()

InterpStack::~InterpStack ( )

Destroys the stack, freeing up storage.

Definition at line 22 of file InterpStack.cpp.

Member Function Documentation

◆ clear()

void InterpStack::clear ( )

Clears the stack.

Definition at line 30 of file InterpStack.cpp.

References discard(), empty(), and TYPE_SWITCH.

Referenced by clearTo().

◆ clearTo()

void InterpStack::clearTo ( size_t NewSize)

Definition at line 38 of file InterpStack.cpp.

References clear(), discard(), size(), and TYPE_SWITCH.

Referenced by BCP().

◆ discard()

template<typename T>
void clang::interp::InterpStack::discard ( )
inline

◆ dump()

void InterpStack::dump ( ) const

dump the stack contents to stderr.

Definition at line 97 of file InterpStack.cpp.

References clang::interp::align(), peek(), clang::interp::primSize(), size(), clang::T, TYPE_SWITCH, and V.

Referenced by clang::interp::Dump().

◆ empty()

bool clang::interp::InterpStack::empty ( ) const
inline

Returns whether the stack is empty.

Definition at line 84 of file InterpStack.h.

Referenced by clear().

◆ peek() [1/2]

template<typename T>
T & clang::interp::InterpStack::peek ( ) const
inline

Returns a reference to the value on the top of the stack.

Definition at line 62 of file InterpStack.h.

References clang::T.

Referenced by clang::interp::Activate(), clang::interp::ArrayElem(), clang::interp::ArrayElemPtr(), clang::interp::BitCast(), clang::interp::Call(), clang::interp::CallVar(), clang::interp::CallVirt(), clang::interp::CheckDestruction(), clang::interp::CheckEnumValue(), clang::interp::CheckNewTypeMismatch(), clang::interp::CheckNonNullArg(), clang::interp::CheckNonNullArgs(), clang::interp::CheckNull(), clang::interp::CMP3(), clang::interp::CopyArray(), clang::interp::Divc(), dump(), clang::interp::Dup(), clang::interp::EndLifetime(), clang::interp::FinishInit(), clang::interp::FinishInitActivate(), clang::interp::GetField(), clang::interp::GetPtrBase(), clang::interp::GetPtrField(), clang::interp::Init(), clang::interp::InitBitField(), clang::interp::InitBitFieldActivate(), clang::interp::InitElem(), clang::interp::InitField(), clang::interp::InitFieldActivate(), clang::interp::InitGlobalTempComp(), clang::interp::interp__builtin_blend(), clang::interp::interp__builtin_complex(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_popcount(), clang::interp::interp__builtin_elementwise_triop(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_select(), clang::interp::interp__builtin_x86_insert_subvector(), clang::interp::Load(), clang::interp::Memcpy(), clang::interp::Mulc(), clang::interp::PreDec(), clang::interp::PreInc(), clang::interp::PtrPtrCast(), clang::interp::SetField(), clang::interp::StartLifetime(), clang::interp::Store(), clang::interp::StoreActivate(), clang::interp::StoreBitField(), and clang::interp::StoreBitFieldActivate().

◆ peek() [2/2]

template<typename T>
T & clang::interp::InterpStack::peek ( size_t Offset) const
inline

Definition at line 68 of file InterpStack.h.

References clang::interp::aligned(), and clang::T.

◆ pop()

template<typename T>
T clang::interp::InterpStack::pop ( )
inline

Returns the value from the top of the stack and removes it.

Definition at line 39 of file InterpStack.h.

References clang::T.

Referenced by clang::interp::Add(), clang::interp::Addf(), clang::interp::AddOffset(), clang::interp::AddSubMulHelper(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::ArrayDecay(), clang::interp::ArrayElemPop(), clang::interp::ArrayElemPtr(), clang::interp::ArrayElemPtrPop(), clang::interp::Assume(), BCP(), clang::interp::BitAnd(), clang::interp::BitCast(), clang::interp::BitCastPrim(), clang::interp::BitOr(), clang::interp::BitXor(), clang::interp::CallPtr(), clang::interp::Cast(), clang::interp::CastAP(), clang::interp::CastAPS(), clang::interp::CastFixedPoint(), clang::interp::CastFixedPointFloating(), clang::interp::CastFixedPointIntegral(), clang::interp::CastFloatingFixedPoint(), clang::interp::CastFloatingIntegral(), clang::interp::CastFloatingIntegralAP(), clang::interp::CastFloatingIntegralAPS(), clang::interp::CastFP(), clang::interp::CastIntegralFixedPoint(), clang::interp::CastIntegralFloating(), clang::interp::CastMemberPtrPtr(), clang::interp::CastPointerIntegral(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::CheckNewTypeMismatchArray(), clang::interp::CMP3(), clang::interp::CmpHelper(), clang::interp::CmpHelper< Pointer >(), clang::interp::CmpHelperEQ< MemberPointer >(), clang::interp::CmpHelperEQ< Pointer >(), clang::interp::Comp(), clang::interp::CopyArray(), clang::interp::Dec(), clang::interp::DecayPtr(), clang::interp::Decf(), clang::interp::DecfPop(), clang::interp::DecPop(), clang::interp::DecPtr(), clang::interp::Div(), clang::interp::Divc(), clang::interp::Divf(), clang::interp::EndLifetimePop(), clang::interp::ExpandPtr(), clang::interp::FinishInitActivatePop(), clang::interp::FinishInitGlobal(), clang::interp::FinishInitPop(), clang::interp::Flip(), clang::interp::Free(), clang::interp::GetFieldPop(), clang::interp::GetIntPtr(), clang::interp::GetMemberPtrBase(), clang::interp::GetMemberPtrBasePop(), clang::interp::GetMemberPtrDecl(), clang::interp::GetPtrBasePop(), clang::interp::GetPtrDerivedPop(), clang::interp::GetPtrFieldPop(), clang::interp::GetPtrVirtBasePop(), clang::interp::GetTypeidPtr(), clang::interp::Inc(), clang::interp::Incf(), clang::interp::IncfPop(), clang::interp::IncPop(), clang::interp::IncPtr(), clang::interp::Init(), clang::interp::InitBitField(), clang::interp::InitBitFieldActivate(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::InitField(), clang::interp::InitFieldActivate(), clang::interp::InitGlobal(), clang::interp::InitGlobalTemp(), clang::interp::InitPop(), clang::interp::InitThisBitField(), clang::interp::InitThisBitFieldActivate(), clang::interp::InitThisField(), clang::interp::InitThisFieldActivate(), clang::interp::interp__builtin_arithmetic_fence(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_atomic_lock_free(), clang::interp::interp__builtin_blend(), clang::interp::interp__builtin_carryop(), clang::interp::interp__builtin_clz(), clang::interp::interp__builtin_complex(), clang::interp::interp__builtin_copysign(), clang::interp::interp__builtin_ctz(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_countzeroes(), clang::interp::interp__builtin_elementwise_int_binop(), clang::interp::interp__builtin_elementwise_maxmin(), clang::interp::interp__builtin_elementwise_popcount(), clang::interp::interp__builtin_elementwise_triop(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_fabs(), clang::interp::interp__builtin_fmax(), clang::interp::interp__builtin_fmin(), clang::interp::interp__builtin_fpclassify(), clang::interp::interp__builtin_ia32_addcarry_subborrow(), clang::interp::interp__builtin_ia32_pmul(), clang::interp::interp__builtin_is_aligned_up_down(), clang::interp::interp__builtin_is_within_lifetime(), clang::interp::interp__builtin_isfinite(), clang::interp::interp__builtin_isfpclass(), clang::interp::interp__builtin_isinf(), clang::interp::interp__builtin_isnan(), clang::interp::interp__builtin_isnormal(), clang::interp::interp__builtin_issignaling(), clang::interp::interp__builtin_issubnormal(), clang::interp::interp__builtin_iszero(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcmp(), clang::interp::interp__builtin_memcpy(), clang::interp::interp__builtin_nan(), clang::interp::interp__builtin_object_size(), clang::interp::interp__builtin_operator_delete(), clang::interp::interp__builtin_overflowop(), clang::interp::interp__builtin_popcount(), clang::interp::interp__builtin_ptrauth_string_discriminator(), clang::interp::interp__builtin_select(), clang::interp::interp__builtin_signbit(), clang::interp::interp__builtin_strcmp(), clang::interp::interp__builtin_strlen(), clang::interp::interp__builtin_vector_reduce(), clang::interp::interp__builtin_x86_insert_subvector(), clang::interp::interp_floating_comparison(), clang::interp::Inv(), clang::interp::IsNonNull(), Jf(), Jt(), clang::interp::LoadPop(), clang::interp::Memcpy(), clang::interp::Mul(), clang::interp::Mulc(), clang::interp::Mulf(), clang::interp::NarrowPtr(), clang::interp::Neg(), clang::interp::OffsetOf(), clang::interp::popToAPSInt(), clang::interp::Rem(), clang::interp::Ret(), clang::interp::SetField(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::SetThisField(), clang::interp::ShiftFixedPoint(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::Store(), clang::interp::StoreActivate(), clang::interp::StoreActivatePop(), clang::interp::StoreBitField(), clang::interp::StoreBitFieldActivate(), clang::interp::StoreBitFieldActivatePop(), clang::interp::StoreBitFieldPop(), clang::interp::StorePop(), clang::interp::Sub(), clang::interp::Subf(), clang::interp::SubOffset(), clang::interp::SubPtr(), and clang::interp::ToMemberPtr().

◆ push()

template<typename T, typename... Tys>
void clang::interp::InterpStack::push ( Tys &&... Args)
inline

Constructs a value in place on the top of the stack.

Definition at line 33 of file InterpStack.h.

References clang::T.

Referenced by clang::interp::Addf(), clang::interp::AddOffset(), clang::interp::AddSubMulHelper(), clang::interp::Alloc(), clang::interp::AllocCN(), clang::interp::AllocN(), clang::interp::ArrayDecay(), clang::interp::ArrayElem(), clang::interp::ArrayElemPop(), clang::interp::ArrayElemPtr(), clang::interp::ArrayElemPtrPop(), BCP(), clang::interp::BitAnd(), clang::interp::BitCastPrim(), clang::interp::BitOr(), clang::interp::BitXor(), clang::interp::Cast(), clang::interp::CastAP(), clang::interp::CastAPS(), clang::interp::CastFixedPoint(), clang::interp::CastFixedPointFloating(), clang::interp::CastFixedPointIntegral(), clang::interp::CastFloatingFixedPoint(), clang::interp::CastFloatingIntegral(), clang::interp::CastFloatingIntegralAP(), clang::interp::CastFloatingIntegralAPS(), clang::interp::CastFP(), clang::interp::CastIntegralFixedPoint(), clang::interp::CastIntegralFloating(), clang::interp::CastMemberPtrPtr(), clang::interp::CastPointerIntegral(), clang::interp::CastPointerIntegralAP(), clang::interp::CastPointerIntegralAPS(), clang::interp::CmpHelper(), clang::interp::CmpHelper< Pointer >(), clang::interp::CmpHelperEQ< MemberPointer >(), clang::interp::CmpHelperEQ< Pointer >(), clang::interp::Comp(), clang::interp::Const(), clang::interp::ConstFloat(), clang::interp::DecayPtr(), clang::interp::Div(), clang::interp::Divf(), clang::interp::DoShift(), clang::interp::DoShiftAP(), clang::interp::Dup(), clang::interp::ExpandPtr(), clang::interp::Flip(), clang::interp::GetField(), clang::interp::getField(), clang::interp::GetFieldPop(), clang::interp::GetFnPtr(), clang::interp::GetGlobal(), clang::interp::GetGlobalUnchecked(), clang::interp::GetIntPtr(), clang::interp::GetLocal(), clang::interp::GetMemberPtr(), clang::interp::GetMemberPtrBase(), clang::interp::GetMemberPtrBasePop(), clang::interp::GetMemberPtrDecl(), clang::interp::GetParam(), clang::interp::GetPtrBase(), clang::interp::GetPtrBasePop(), clang::interp::GetPtrDerivedPop(), clang::interp::GetPtrGlobal(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetThisField(), clang::interp::GetTypeid(), clang::interp::GetTypeidPtr(), clang::interp::IncDecFloatHelper(), clang::interp::IncDecHelper(), clang::interp::IncDecPtrHelper(), clang::interp::interp__builtin_arithmetic_fence(), clang::interp::interp__builtin_assume_aligned(), clang::interp::interp__builtin_atomic_lock_free(), clang::interp::interp__builtin_bswap(), clang::interp::interp__builtin_c11_atomic_is_lock_free(), clang::interp::interp__builtin_copysign(), clang::interp::interp__builtin_elementwise_abs(), clang::interp::interp__builtin_elementwise_triop_fp(), clang::interp::interp__builtin_fabs(), clang::interp::interp__builtin_fmax(), clang::interp::interp__builtin_fmin(), clang::interp::interp__builtin_inf(), clang::interp::interp__builtin_is_aligned_up_down(), clang::interp::interp__builtin_is_constant_evaluated(), clang::interp::interp__builtin_memchr(), clang::interp::interp__builtin_memcpy(), clang::interp::interp__builtin_nan(), clang::interp::interp__builtin_operator_new(), clang::interp::interp__builtin_overflowop(), clang::interp::Inv(), clang::interp::IsConstantContext(), clang::interp::IsNonNull(), clang::interp::Load(), clang::interp::LoadPop(), clang::interp::Mulf(), clang::interp::NarrowPtr(), clang::interp::Neg(), clang::interp::Null(), clang::interp::OffsetOf(), clang::interp::pushInteger(), clang::interp::Rem(), clang::interp::Ret(), clang::interp::runRecordDestructor(), clang::interp::RVOPtr(), clang::interp::ShiftFixedPoint(), clang::interp::Subf(), clang::interp::SubOffset(), clang::interp::SubPtr(), clang::interp::This(), clang::interp::ToMemberPtr(), clang::interp::VirtBaseHelper(), clang::interp::Zero(), clang::interp::ZeroIntAP(), and clang::interp::ZeroIntAPS().

◆ size()

size_t clang::interp::InterpStack::size ( ) const
inline

Returns the size of the stack in bytes.

Definition at line 77 of file InterpStack.h.

Referenced by BCP(), clearTo(), dump(), clang::interp::Ret(), and clang::interp::RetVoid().

◆ top()

void * clang::interp::InterpStack::top ( ) const
inline

Returns a pointer to the top object.

Definition at line 74 of file InterpStack.h.


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