aboutsummaryrefslogtreecommitdiffstats
path: root/qmljs_objects.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2012-11-18 23:33:06 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-19 10:33:35 +0100
commita2676884804fb523ee586f1ebc6a11353ec79fcb (patch)
tree485f9b97affb19a3a24c914f83159765d74b9f55 /qmljs_objects.h
parent4f1dfd1e260c238a0f8b1e3c7338431fa2972b90 (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.h27
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);