clang 17.0.0git
|
Interpreter context. More...
#include "/home/buildbot/as-worker-4/publish-doxygen-docs/llvm-project/clang/lib/AST/Interp/InterpState.h"
Public Member Functions | |
InterpState (State &Parent, Program &P, InterpStack &Stk, Context &Ctx, SourceMapper *M=nullptr) | |
~InterpState () | |
Frame * | getSplitFrame () |
Frame * | getCurrentFrame () override |
unsigned | getCallStackDepth () override |
const Frame * | getBottomFrame () const override |
Expr::EvalStatus & | getEvalStatus () const override |
ASTContext & | getCtx () const override |
bool | checkingForUndefinedBehavior () const override |
bool | keepEvaluatingAfterFailure () const override |
bool | checkingPotentialConstantExpression () const override |
bool | noteUndefinedBehavior () override |
bool | inConstantContext () const |
bool | hasActiveDiagnostic () override |
void | setActiveDiagnostic (bool Flag) override |
void | setFoldFailureDiagnostic (bool Flag) override |
bool | hasPriorDiagnostic () override |
bool | reportOverflow (const Expr *E, const llvm::APSInt &Value) |
Reports overflow and return true if evaluation should continue. | |
void | deallocate (Block *B) |
Deallocates a pointer. | |
SourceInfo | getSource (const Function *F, CodePtr PC) const override |
Delegates source mapping to the mapper. | |
![]() | |
virtual | ~State () |
virtual bool | checkingForUndefinedBehavior () const =0 |
virtual bool | checkingPotentialConstantExpression () const =0 |
virtual bool | noteUndefinedBehavior ()=0 |
virtual bool | keepEvaluatingAfterFailure () const =0 |
virtual Frame * | getCurrentFrame ()=0 |
virtual const Frame * | getBottomFrame () const =0 |
virtual bool | hasActiveDiagnostic ()=0 |
virtual void | setActiveDiagnostic (bool Flag)=0 |
virtual void | setFoldFailureDiagnostic (bool Flag)=0 |
virtual Expr::EvalStatus & | getEvalStatus () const =0 |
virtual ASTContext & | getCtx () const =0 |
virtual bool | hasPriorDiagnostic ()=0 |
virtual unsigned | getCallStackDepth ()=0 |
State () | |
OptionalDiagnostic | FFDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
Diagnose that the evaluation could not be folded (FF => FoldFailure) | |
OptionalDiagnostic | FFDiag (const Expr *E, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
OptionalDiagnostic | FFDiag (const SourceInfo &SI, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
OptionalDiagnostic | CCEDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
Diagnose that the evaluation does not produce a C++11 core constant expression. | |
OptionalDiagnostic | CCEDiag (const Expr *E, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
OptionalDiagnostic | CCEDiag (const SourceInfo &SI, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
OptionalDiagnostic | Note (SourceLocation Loc, diag::kind DiagId) |
Add a note to a prior diagnostic. | |
void | addNotes (ArrayRef< PartialDiagnosticAt > Diags) |
Add a stack of notes to a prior diagnostic. | |
DiagnosticBuilder | report (SourceLocation Loc, diag::kind DiagId) |
Directly reports a diagnostic message. | |
const LangOptions & | getLangOpts () const |
![]() | |
virtual | ~SourceMapper () |
virtual SourceInfo | getSource (const Function *F, CodePtr PC) const =0 |
Returns source information for a given PC in a function. | |
const Expr * | getExpr (const Function *F, CodePtr PC) const |
Returns the expression if an opcode belongs to one, null otherwise. | |
SourceLocation | getLocation (const Function *F, CodePtr PC) const |
Returns the location from which an opcode originates. | |
Public Attributes | |
Program & | P |
Reference to the module containing all bytecode. | |
InterpStack & | Stk |
Temporary stack. | |
Context & | Ctx |
Interpreter Context. | |
InterpFrame * | Current = nullptr |
The current frame. | |
![]() | |
bool | InConstantContext |
Whether or not we're in a context where the front end requires a constant value. | |
Interpreter context.
Definition at line 35 of file InterpState.h.
InterpState::InterpState | ( | State & | Parent, |
Program & | P, | ||
InterpStack & | Stk, | ||
Context & | Ctx, | ||
SourceMapper * | M = nullptr |
||
) |
Definition at line 18 of file InterpState.cpp.
InterpState::~InterpState | ( | ) |
Definition at line 22 of file InterpState.cpp.
References clang::interp::InterpFrame::Caller, and Current.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
void InterpState::deallocate | ( | Block * | B | ) |
Deallocates a pointer.
Definition at line 48 of file InterpState.cpp.
References clang::interp::Block::data(), clang::interp::Descriptor::DtorFn, clang::interp::Block::getDescriptor(), clang::interp::Block::getSize(), clang::interp::Block::hasPointers(), and clang::interp::Descriptor::MoveFn.
Referenced by clang::interp::InterpFrame::destroy(), and clang::interp::InterpFrame::~InterpFrame().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 45 of file InterpState.h.
References Current, and clang::interp::InterpFrame::getDepth().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 56 of file InterpState.h.
References Parent.
Referenced by clang::interp::InterpFrame::describe().
|
overridevirtual |
Implements clang::interp::State.
Definition at line 36 of file InterpState.cpp.
References clang::interp::InterpFrame::Caller, Current, and clang::interp::State::getCurrentFrame().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Delegates source mapping to the mapper.
Implements clang::interp::SourceMapper.
Definition at line 88 of file InterpState.h.
References clang::interp::Function::getSource(), and clang::interp::SourceMapper::getSource().
Referenced by clang::interp::InterpFrame::getSource().
|
inline |
Definition at line 43 of file InterpState.h.
References Parent.
Referenced by clang::interp::InterpFrame::getCaller().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
|
inline |
Definition at line 71 of file InterpState.h.
References Parent.
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 68 of file InterpState.h.
References Parent.
Referenced by reportOverflow().
Reports overflow and return true if evaluation should continue.
Definition at line 42 of file InterpState.cpp.
References clang::interp::State::CCEDiag(), clang::Expr::getType(), and noteUndefinedBehavior().
|
inlineoverridevirtual |
|
inlineoverridevirtual |
Context& clang::interp::InterpState::Ctx |
Definition at line 106 of file InterpState.h.
Referenced by clang::interp::InterpFrame::describe().
InterpFrame* clang::interp::InterpState::Current = nullptr |
The current frame.
Definition at line 108 of file InterpState.h.
Referenced by clang::interp::EvalEmitter::EvalEmitter(), getCallStackDepth(), getCurrentFrame(), and ~InterpState().
Program& clang::interp::InterpState::P |
Reference to the module containing all bytecode.
Definition at line 102 of file InterpState.h.
InterpStack& clang::interp::InterpState::Stk |
Temporary stack.
Definition at line 104 of file InterpState.h.
Referenced by clang::interp::EvalEmitter::jumpFalse(), clang::interp::EvalEmitter::jumpTrue(), and clang::interp::InterpFrame::popArgs().