clang 22.0.0git
|
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> | |
T & | peek () const |
Returns a reference to the value on the top of the stack. | |
template<typename T> | |
T & | peek (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. |
Stack frame storing temporaries and parameters.
Definition at line 25 of file InterpStack.h.
|
default |
InterpStack::~InterpStack | ( | ) |
Destroys the stack, freeing up storage.
Definition at line 22 of file InterpStack.cpp.
void InterpStack::clear | ( | ) |
Clears the stack.
Definition at line 30 of file InterpStack.cpp.
References discard(), empty(), and TYPE_SWITCH.
Referenced by 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().
|
inline |
Discards the top value from the stack.
Definition at line 50 of file InterpStack.h.
References clang::T.
Referenced by clang::interp::cleanupAfterFunctionCall(), clear(), clearTo(), clang::interp::discard(), clang::interp::interp__builtin_expect(), clang::interp::interp__builtin_operator_delete(), clang::interp::Pop(), and clang::interp::popArg().
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().
|
inline |
Returns whether the stack is empty.
Definition at line 84 of file InterpStack.h.
Referenced by clear().
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().
Definition at line 68 of file InterpStack.h.
References clang::interp::aligned(), and clang::T.
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().
|
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().
|
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().
|
inline |
Returns a pointer to the top object.
Definition at line 74 of file InterpStack.h.