implement declare var, Function Decl, Function Expression

Signed-off-by: seonghyun kim <sh8281.kim@samsung.com>
This commit is contained in:
seonghyun kim 2016-11-30 19:01:37 +09:00
commit a545adebf5
28 changed files with 549 additions and 90 deletions

View file

@ -3,6 +3,7 @@
#include "ByteCodeInterpreter.h"
#include "runtime/Environment.h"
#include "runtime/EnvironmentRecord.h"
#include "runtime/FunctionObject.h"
namespace Escargot {
@ -98,6 +99,30 @@ void ByteCodeIntrepreter::interpret(ExecutionState& state, CodeBlock* codeBlock)
NEXT_INSTRUCTION();
}
DeclareVarVariableOpcodeLbl:
{
DeclareVarVariable* code = (DeclareVarVariable*)currentCode;
env->record()->createMutableBinding(state, code->m_name, false);
executeNextCode<DeclareVarVariable>(programCounter);
NEXT_INSTRUCTION();
}
DeclareFunctionExpressionOpcodeLbl:
{
DeclareFunctionExpression* code = (DeclareFunctionExpression*)currentCode;
registerFile[code->m_registerIndex] = new FunctionObject(state, code->m_codeBlock);
executeNextCode<DeclareFunctionExpression>(programCounter);
NEXT_INSTRUCTION();
}
DeclareFunctionDeclarationOpcodeLbl:
{
DeclareFunctionDeclaration* code = (DeclareFunctionDeclaration*)currentCode;
registerFile[0] = new FunctionObject(state, code->m_codeBlock);
executeNextCode<DeclareFunctionDeclaration>(programCounter);
NEXT_INSTRUCTION();
}
EndOpcodeLbl:
{
return;