diff options
author | Lars Knoll <lars.knoll@digia.com> | 2012-11-18 23:33:06 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-19 10:33:35 +0100 |
commit | a2676884804fb523ee586f1ebc6a11353ec79fcb (patch) | |
tree | 485f9b97affb19a3a24c914f83159765d74b9f55 /qmljs_objects.h | |
parent | 4f1dfd1e260c238a0f8b1e3c7338431fa2972b90 (diff) |
Better handling of contexts and environments
Make the ExecutionContext standard compliant.
Move most of it's members into a new
DeclarativeEnvironment data structure that
contains locals and arguments.
Change-Id: I094f559168810dbd3717d677fe28750076015976
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'qmljs_objects.h')
-rw-r--r-- | qmljs_objects.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/qmljs_objects.h b/qmljs_objects.h index ce26089e8f..6d0e0fa35d 100644 --- a/qmljs_objects.h +++ b/qmljs_objects.h @@ -474,7 +474,7 @@ struct ArrayObject: Object { }; struct FunctionObject: Object { - ExecutionContext *scope; + DeclarativeEnvironment *scope; String *name; String **formalParameterList; unsigned int formalParameterCount; @@ -483,7 +483,7 @@ struct FunctionObject: Object { bool needsActivation; FunctionObject(ExecutionContext *scope) - : scope(scope) + : scope(scope->variableEnvironment) , name(0) , formalParameterList(0) , formalParameterCount(0) @@ -554,39 +554,46 @@ protected: }; struct EvalErrorObject: ErrorObject { - EvalErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + EvalErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("EvalError"); } }; struct RangeErrorObject: ErrorObject { - RangeErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + RangeErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("RangeError"); } }; struct ReferenceErrorObject: ErrorObject { - ReferenceErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + ReferenceErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("ReferenceError"); } }; struct SyntaxErrorObject: ErrorObject { - SyntaxErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + SyntaxErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("SyntaxError"); } }; struct TypeErrorObject: ErrorObject { - TypeErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + TypeErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("TypeError"); } }; struct URIErrorObject: ErrorObject { - URIErrorObject(ExecutionContext *ctx): ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } + URIErrorObject(ExecutionContext *ctx) + : ErrorObject(ctx->argument(0)) { setNameProperty(ctx); } virtual QString className() { return QStringLiteral("URIError"); } }; struct ActivationObject: Object { - ExecutionContext *context; + DeclarativeEnvironment *context; Value arguments; - ActivationObject(ExecutionContext *context): context(context), arguments(Value::undefinedValue()) {} + ActivationObject(DeclarativeEnvironment *context) + : context(context), arguments(Value::undefinedValue()) {} virtual QString className() { return QStringLiteral("Activation"); } virtual ActivationObject *asActivationObject() { return this; } virtual PropertyDescriptor *__getPropertyDescriptor__(ExecutionContext *ctx, String *name, PropertyDescriptor *to_fill); |