clang
10.0.0git
|
Interpreter context. More...
#include "/work/www-prereleases/10.0.0/rc2/docsbuild/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 | 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. More... | |
void | deallocate (Block *B) |
Deallocates a pointer. More... | |
SourceInfo | getSource (Function *F, CodePtr PC) const override |
Delegates source mapping to the mapper. More... | |
![]() | |
virtual | ~State () |
OptionalDiagnostic | FFDiag (SourceLocation Loc, diag::kind DiagId=diag::note_invalid_subexpr_in_const_expr, unsigned ExtraNotes=0) |
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. More... | |
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. More... | |
void | addNotes (ArrayRef< PartialDiagnosticAt > Diags) |
Add a stack of notes to a prior diagnostic. More... | |
DiagnosticBuilder | report (SourceLocation Loc, diag::kind DiagId) |
Directly reports a diagnostic message. More... | |
const LangOptions & | getLangOpts () const |
![]() | |
virtual | ~SourceMapper () |
const Expr * | getExpr (Function *F, CodePtr PC) const |
Returns the expression if an opcode belongs to one, null otherwise. More... | |
SourceLocation | getLocation (Function *F, CodePtr PC) const |
Returns the location from which an opcode originates. More... | |
Public Attributes | |
Program & | P |
Reference to the module containing all bytecode. More... | |
InterpStack & | Stk |
Temporary stack. More... | |
Context & | Ctx |
Interpreter Context. More... | |
InterpFrame * | Current = nullptr |
The current frame. More... | |
unsigned | CallStackDepth |
Call stack depth. More... | |
Interpreter context.
Definition at line 34 of file InterpState.h.
InterpState::InterpState | ( | State & | Parent, |
Program & | P, | ||
InterpStack & | Stk, | ||
Context & | Ctx, | ||
SourceMapper * | M = nullptr |
||
) |
Definition at line 24 of file InterpState.cpp.
InterpState::~InterpState | ( | ) |
Definition at line 29 of file InterpState.cpp.
References Current.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 56 of file InterpState.h.
References clang::interp::State::checkingForUndefinedBehavior().
Referenced by clang::interp::AddSubMulHelper().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 62 of file InterpState.h.
References clang::interp::State::checkingPotentialConstantExpression().
Referenced by clang::interp::GetParam(), clang::interp::GetPtrActiveThisField(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrThisVirtBase(), clang::interp::GetThisField(), clang::interp::InitThisBitField(), clang::interp::InitThisField(), clang::interp::InitThisFieldActive(), clang::interp::SetThisField(), and clang::interp::This().
void InterpState::deallocate | ( | Block * | B | ) |
Deallocates a pointer.
Definition at line 57 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(), clang::interp::EvalEmitter::fallthrough(), hasPriorDiagnostic(), and clang::interp::InterpFrame::~InterpFrame().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 45 of file InterpState.h.
References clang::interp::State::getBottomFrame().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 44 of file InterpState.h.
References CallStackDepth.
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 53 of file InterpState.h.
References clang::interp::State::getCtx().
Referenced by clang::interp::InterpFrame::describe(), clang::interp::InitBitField(), clang::interp::InitThisBitField(), clang::interp::StoreBitField(), and clang::interp::StoreBitFieldPop().
|
overridevirtual |
Implements clang::interp::State.
Definition at line 43 of file InterpState.cpp.
References clang::interp::InterpFrame::Caller, Current, and clang::interp::State::getCurrentFrame().
Referenced by getSplitFrame().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 50 of file InterpState.h.
References clang::interp::State::getEvalStatus().
|
inlineoverridevirtual |
Delegates source mapping to the mapper.
Implements clang::interp::SourceMapper.
Definition at line 84 of file InterpState.h.
References clang::interp::Function::getSource(), and clang::interp::SourceMapper::getSource().
Referenced by clang::interp::InterpFrame::getSource().
|
inline |
Definition at line 42 of file InterpState.h.
References getCurrentFrame(), and clang::interp::State::getCurrentFrame().
Referenced by clang::interp::InterpFrame::getCaller().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 68 of file InterpState.h.
References clang::interp::State::hasActiveDiagnostic().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 75 of file InterpState.h.
References deallocate(), clang::interp::State::hasPriorDiagnostic(), and reportOverflow().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 59 of file InterpState.h.
References clang::interp::State::keepEvaluatingAfterFailure().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 65 of file InterpState.h.
References clang::interp::State::noteUndefinedBehavior().
Referenced by clang::interp::AddSubMulHelper(), and reportOverflow().
bool InterpState::reportOverflow | ( | const Expr * | E, |
const llvm::APSInt & | Value | ||
) |
Reports overflow and return true if evaluation should continue.
Definition at line 51 of file InterpState.cpp.
References clang::interp::State::CCEDiag(), clang::Expr::getType(), and noteUndefinedBehavior().
Referenced by hasPriorDiagnostic().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 69 of file InterpState.h.
References clang::interp::State::setActiveDiagnostic().
|
inlineoverridevirtual |
Implements clang::interp::State.
Definition at line 72 of file InterpState.h.
References clang::interp::State::setFoldFailureDiagnostic().
unsigned clang::interp::InterpState::CallStackDepth |
Context& clang::interp::InterpState::Ctx |
Interpreter Context.
Definition at line 102 of file InterpState.h.
Referenced by clang::interp::InterpFrame::describe().
InterpFrame* clang::interp::InterpState::Current = nullptr |
The current frame.
Definition at line 104 of file InterpState.h.
Referenced by clang::interp::AddSubMulHelper(), clang::interp::Destroy(), getCurrentFrame(), clang::interp::GetLocal(), clang::interp::GetParam(), clang::interp::GetPtrActiveThisField(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrThisVirtBase(), clang::interp::GetThisField(), clang::interp::InitThisBitField(), clang::interp::InitThisField(), clang::interp::InitThisFieldActive(), clang::interp::NoRet(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::SetThisField(), clang::interp::ShiftLeft(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::This(), clang::interp::Trunc(), and ~InterpState().
Program& clang::interp::InterpState::P |
Reference to the module containing all bytecode.
Definition at line 98 of file InterpState.h.
Referenced by clang::interp::GetGlobal(), clang::interp::GetPtrGlobal(), and clang::interp::InitGlobal().
InterpStack& clang::interp::InterpState::Stk |
Temporary stack.
Definition at line 100 of file InterpState.h.
Referenced by clang::interp::Add(), clang::interp::AddSubMulHelper(), clang::interp::Cast(), clang::interp::CmpHelper(), clang::interp::Const(), clang::interp::Dup(), clang::interp::ExpandPtr(), clang::interp::EvalEmitter::fallthrough(), clang::interp::GetField(), clang::interp::GetFieldPop(), clang::interp::GetGlobal(), clang::interp::GetLocal(), clang::interp::GetParam(), clang::interp::GetPtrActiveField(), clang::interp::GetPtrActiveThisField(), clang::interp::GetPtrBase(), clang::interp::GetPtrField(), clang::interp::GetPtrGlobal(), clang::interp::GetPtrLocal(), clang::interp::GetPtrParam(), clang::interp::GetPtrThisBase(), clang::interp::GetPtrThisField(), clang::interp::GetPtrVirtBase(), clang::interp::GetThisField(), clang::interp::InitBitField(), clang::interp::InitElem(), clang::interp::InitElemPop(), clang::interp::InitField(), clang::interp::InitFieldActive(), clang::interp::InitGlobal(), clang::interp::InitPop(), clang::interp::InitThisBitField(), clang::interp::InitThisField(), clang::interp::InitThisFieldActive(), clang::interp::InRange(), clang::interp::EvalEmitter::jumpFalse(), clang::interp::EvalEmitter::jumpTrue(), clang::interp::Load(), clang::interp::LoadPop(), clang::interp::Mul(), clang::interp::NarrowPtr(), clang::interp::Null(), clang::interp::OffsetHelper(), clang::interp::Pop(), clang::interp::InterpFrame::popArgs(), clang::interp::SetField(), clang::interp::SetLocal(), clang::interp::SetParam(), clang::interp::SetThisField(), clang::interp::ShiftLeft(), clang::interp::ShiftRight(), clang::interp::Shl(), clang::interp::Shr(), clang::interp::Store(), clang::interp::StoreBitField(), clang::interp::StoreBitFieldPop(), clang::interp::StorePop(), clang::interp::Sub(), clang::interp::This(), clang::interp::VirtBaseHelper(), and clang::interp::Zero().