#include "EvalEmitter.h"
#include "Context.h"
#include "IntegralAP.h"
#include "Interp.h"
#include "Opcode.h"
#include "clang/AST/DeclCXX.h"
usingnamespaceclang;
usingnamespaceclang::interp;
EvalEmitter::EvalEmitter(Context &Ctx, Program &P, State &Parent,
InterpStack &Stk)
: … { … }
EvalEmitter::~EvalEmitter() { … }
void EvalEmitter::cleanup() { … }
EvaluationResult EvalEmitter::interpretExpr(const Expr *E,
bool ConvertResultToRValue,
bool DestroyToplevelScope) { … }
EvaluationResult EvalEmitter::interpretDecl(const VarDecl *VD,
bool CheckFullyInitialized) { … }
void EvalEmitter::emitLabel(LabelTy Label) { … }
EvalEmitter::LabelTy EvalEmitter::getLabel() { … }
Scope::Local EvalEmitter::createLocal(Descriptor *D) { … }
bool EvalEmitter::jumpTrue(const LabelTy &Label) { … }
bool EvalEmitter::jumpFalse(const LabelTy &Label) { … }
bool EvalEmitter::jump(const LabelTy &Label) { … }
bool EvalEmitter::fallthrough(const LabelTy &Label) { … }
static bool checkReturnState(InterpState &S) { … }
template <PrimType OpType> bool EvalEmitter::emitRet(const SourceInfo &Info) { … }
template <> bool EvalEmitter::emitRet<PT_Ptr>(const SourceInfo &Info) { … }
template <> bool EvalEmitter::emitRet<PT_FnPtr>(const SourceInfo &Info) { … }
bool EvalEmitter::emitRetVoid(const SourceInfo &Info) { … }
bool EvalEmitter::emitRetValue(const SourceInfo &Info) { … }
bool EvalEmitter::emitGetPtrLocal(uint32_t I, const SourceInfo &Info) { … }
template <PrimType OpType>
bool EvalEmitter::emitGetLocal(uint32_t I, const SourceInfo &Info) { … }
template <PrimType OpType>
bool EvalEmitter::emitSetLocal(uint32_t I, const SourceInfo &Info) { … }
bool EvalEmitter::emitDestroy(uint32_t I, const SourceInfo &Info) { … }
void EvalEmitter::updateGlobalTemporaries() { … }
#define GET_EVAL_IMPL
#include "Opcodes.inc"
#undef GET_EVAL_IMPL