|
SeExpr
|
#include <Interpreter.h>
Public Types | |
| typedef std::map< const ExprLocalVar *, int > | VarToLoc |
| Not needed for eval only building. | |
| typedef int(* | OpF) (int *, double *, char **, std::vector< int > &) |
| Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStackurrS) | |
Public Member Functions | |
| Interpreter () | |
| int | nextPC () |
| Return the position that the next instruction will be placed at. | |
| int | addOp (OpF op) |
| ! adds an operator to the program (pointing to the data at the current location) | |
| void | endOp (bool execute=true) |
| int | addOperand (int param) |
| ! Adds an operand. Note this should be done after doing the addOp! | |
| int | allocFP (int n) |
| ! Allocate a floating point set of data of dimension n | |
| int | allocPtr () |
| Allocate a pointer location (can be anything, but typically space for char*) | |
| void | eval (VarBlock *varBlock, bool debug=false) |
| Evaluate program. | |
| void | print (int pc=-1) const |
| Debug by printing program. | |
| void | setPCStart (int pcStart) |
Public Attributes | |
| std::vector< double > | d |
| Double data (constants and evaluated) | |
| std::vector< char * > | s |
| constant and evaluated pointer data | |
| std::vector< int > | opData |
| Ooperands to op. | |
| VarToLoc | varToLoc |
| std::vector< std::pair< OpF, int > > | ops |
| std::vector< int > | callStack |
Private Attributes | |
| bool | _startedOp |
| int | _pcStart |
Non-LLVM manual interpreter. This is a simple computation machine. There are no dynamic activation records just fixed locations, because we have no recursion!
Definition at line 40 of file Interpreter.h.
| typedef int(* SeExpr2::Interpreter::OpF) (int *, double *, char **, std::vector< int > &) |
Op function pointer arguments are (int* currOpData,double* currD,char** c,std::stack<int>& callStackurrS)
Definition at line 54 of file Interpreter.h.
| typedef std::map<const ExprLocalVar*, int> SeExpr2::Interpreter::VarToLoc |
Not needed for eval only building.
Definition at line 50 of file Interpreter.h.
|
inline |
Definition at line 64 of file Interpreter.h.
References _startedOp, and s.
|
inline |
! adds an operator to the program (pointing to the data at the current location)
Definition at line 73 of file Interpreter.h.
References _startedOp, opData, and ops.
Referenced by SeExpr2::ExprAssignNode::buildInterpreter(), SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprCompareEqNode::buildInterpreter(), SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprIfThenElseNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreter(), SeExpr2::ExprSubscriptNode::buildInterpreter(), SeExpr2::ExprUnaryOpNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), SeExpr2::ExprVecNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall(), and SeExpr2::copyVarToPromotedPosition().
|
inline |
! Adds an operand. Note this should be done after doing the addOp!
Definition at line 96 of file Interpreter.h.
References _startedOp, and opData.
Referenced by SeExpr2::ExprAssignNode::buildInterpreter(), SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprCompareEqNode::buildInterpreter(), SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprIfThenElseNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreter(), SeExpr2::ExprSubscriptNode::buildInterpreter(), SeExpr2::ExprUnaryOpNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), SeExpr2::ExprVecNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall(), and SeExpr2::copyVarToPromotedPosition().
|
inline |
! Allocate a floating point set of data of dimension n
Definition at line 104 of file Interpreter.h.
References d.
Referenced by SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprCompareEqNode::buildInterpreter(), SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprLocalVar::buildInterpreter(), SeExpr2::ExprNumNode::buildInterpreter(), SeExpr2::ExprPrototypeNode::buildInterpreter(), SeExpr2::ExprSubscriptNode::buildInterpreter(), SeExpr2::ExprUnaryOpNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), SeExpr2::ExprVecNode::buildInterpreter(), and SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall().
|
inline |
Allocate a pointer location (can be anything, but typically space for char*)
Definition at line 111 of file Interpreter.h.
References s.
Referenced by SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprLocalVar::buildInterpreter(), SeExpr2::ExprStrNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), and SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall().
|
inline |
Definition at line 83 of file Interpreter.h.
References _startedOp, callStack, d, opData, ops, and s.
Referenced by SeExpr2::ExprAssignNode::buildInterpreter(), SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprCompareEqNode::buildInterpreter(), SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprIfThenElseNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreter(), SeExpr2::ExprSubscriptNode::buildInterpreter(), SeExpr2::ExprUnaryOpNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), SeExpr2::ExprVecNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall(), and SeExpr2::copyVarToPromotedPosition().
| void SeExpr2::Interpreter::eval | ( | VarBlock * | varBlock, |
| bool | debug = false ) |
Evaluate program.
Definition at line 31 of file Interpreter.cpp.
References _pcStart, callStack, d, SeExpr2::VarBlock::d, SeExpr2::VarBlock::data(), SeExpr2::VarBlock::indirectIndex, opData, ops, print(), s, SeExpr2::VarBlock::s, and SeExpr2::VarBlock::threadSafe.
|
inline |
Return the position that the next instruction will be placed at.
Definition at line 70 of file Interpreter.h.
References ops.
Referenced by SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprIfThenElseNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreter(), SeExpr2::ExprModuleNode::buildInterpreter(), and SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall().
| void SeExpr2::Interpreter::print | ( | int | pc = -1 | ) | const |
Debug by printing program.
Definition at line 69 of file Interpreter.cpp.
References d, opData, ops, and s.
Referenced by SeExpr2::ExprFuncStandard::buildInterpreter(), and eval().
|
inline |
Definition at line 122 of file Interpreter.h.
References _pcStart.
Referenced by SeExpr2::ExprModuleNode::buildInterpreter().
|
private |
Definition at line 61 of file Interpreter.h.
Referenced by eval(), and setPCStart().
|
private |
Definition at line 60 of file Interpreter.h.
Referenced by addOp(), addOperand(), endOp(), and Interpreter().
| std::vector<int> SeExpr2::Interpreter::callStack |
Definition at line 57 of file Interpreter.h.
Referenced by SeExpr2::ExprFuncSimple::buildInterpreter(), endOp(), and eval().
| std::vector<double> SeExpr2::Interpreter::d |
Double data (constants and evaluated)
Definition at line 43 of file Interpreter.h.
Referenced by allocFP(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprNumNode::buildInterpreter(), endOp(), eval(), and print().
| std::vector<int> SeExpr2::Interpreter::opData |
Ooperands to op.
Definition at line 47 of file Interpreter.h.
Referenced by addOp(), addOperand(), SeExpr2::ExprCompareNode::buildInterpreter(), SeExpr2::ExprCondNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprIfThenElseNode::buildInterpreter(), SeExpr2::ExprLocalFunctionNode::buildInterpreterForCall(), endOp(), eval(), and print().
| std::vector<std::pair<OpF, int> > SeExpr2::Interpreter::ops |
Definition at line 56 of file Interpreter.h.
Referenced by addOp(), SeExpr2::ExprFuncSimple::buildInterpreter(), endOp(), eval(), nextPC(), and print().
| std::vector<char*> SeExpr2::Interpreter::s |
constant and evaluated pointer data
Definition at line 45 of file Interpreter.h.
Referenced by allocPtr(), SeExpr2::ExprBinaryOpNode::buildInterpreter(), SeExpr2::ExprFuncSimple::buildInterpreter(), SeExpr2::ExprFuncStandard::buildInterpreter(), SeExpr2::ExprStrNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), endOp(), eval(), Interpreter(), and print().
| VarToLoc SeExpr2::Interpreter::varToLoc |
Definition at line 51 of file Interpreter.h.
Referenced by SeExpr2::ExprLocalVar::buildInterpreter(), SeExpr2::ExprPrototypeNode::buildInterpreter(), SeExpr2::ExprVarNode::buildInterpreter(), and SeExpr2::copyVarToPromotedPosition().