diff options
author | Lars Knoll <lars.knoll@digia.com> | 2012-11-29 22:37:25 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2012-11-30 12:28:38 +0100 |
commit | f26d5c36cff33cc8a968c87a69e9dddbb4278855 (patch) | |
tree | 185ef14f30ed409cb74ff8cf11ad8223597cb5ad /moth | |
parent | f00cf7cfae716f5e5af2d0952c3a822744977811 (diff) |
Get rid of variableEnvironment
Found out that the variableEnv is only required
for two use cases: To expose the exception in the
catch statement, and to create temporary
environments for the with() statment. Both can be
better handled differently and don't require the
overhead of two environments.
Change-Id: I149e1fd7bdfc3267544b141b6f94e46e42cf641b
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'moth')
-rw-r--r-- | moth/qv4vme_moth.cpp | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/moth/qv4vme_moth.cpp b/moth/qv4vme_moth.cpp index 92e7c7c206..e71733d2a1 100644 --- a/moth/qv4vme_moth.cpp +++ b/moth/qv4vme_moth.cpp @@ -53,7 +53,7 @@ using namespace QQmlJS::Moth; static inline VM::Value *tempValue(QQmlJS::VM::ExecutionContext *context, QVector<VM::Value> &stack, int index) { - VM::DeclarativeEnvironment *varEnv = context->variableEnvironment; + VM::DeclarativeEnvironment *varEnv = context->lexicalEnvironment; #ifdef DO_TRACE_INSTR const char *kind; @@ -231,21 +231,21 @@ VM::Value VME::operator()(QQmlJS::VM::ExecutionContext *context, const uchar *co } } #endif // DO_TRACE_INSTR - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; TRACE(Call, "value index = %d, argStart = %d, argc = %d, result temp index = %d", instr.destIndex, argStart, instr.argc, instr.targetTempIndex); VM::Value *args = stack.data() + argStart; TEMP(instr.targetTempIndex) = __qmljs_call_value(context, VM::Value::undefinedValue(), TEMP(instr.destIndex), args, instr.argc); MOTH_END_INSTR(CallValue) MOTH_BEGIN_INSTR(CallProperty) - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; VM::Value *args = stack.data() + argStart; VM::Value base = TEMP(instr.baseTemp); TEMP(instr.targetTempIndex) = __qmljs_call_property(context, base, instr.name, args, instr.argc); MOTH_END_INSTR(CallProperty) MOTH_BEGIN_INSTR(CallBuiltin) - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; VM::Value *args = stack.data() + argStart; void *buf; switch (instr.builtin) { @@ -325,20 +325,20 @@ VM::Value VME::operator()(QQmlJS::VM::ExecutionContext *context, const uchar *co MOTH_END_INSTR(CallBuiltinDeleteValue) MOTH_BEGIN_INSTR(CreateValue) - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; VM::Value *args = stack.data() + argStart; TEMP(instr.targetTempIndex) = __qmljs_construct_value(context, TEMP(instr.func), args, instr.argc); MOTH_END_INSTR(CreateValue) MOTH_BEGIN_INSTR(CreateProperty) - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; VM::Value *args = stack.data() + argStart; TEMP(instr.targetTempIndex) = __qmljs_construct_property(context, TEMP(instr.base), instr.name, args, instr.argc); MOTH_END_INSTR(CreateProperty) MOTH_BEGIN_INSTR(CreateActivationProperty) TRACE(inline, "property name = %s, argc = %d", instr.name->toQString().toUtf8().constData(), instr.argc); - quint32 argStart = instr.args - context->variableEnvironment->varCount; + quint32 argStart = instr.args - context->lexicalEnvironment->varCount; VM::Value *args = stack.data() + argStart; TEMP(instr.targetTempIndex) = __qmljs_construct_activation_property(context, instr.name, args, instr.argc); MOTH_END_INSTR(CreateActivationProperty) |