diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-05-09 11:35:47 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-07-22 13:49:17 +0200 |
commit | 00fa9049112385f65ccdcad02b8712a32626d20c (patch) | |
tree | 36ea7fe337a37aef9f30d1c1c5b795bb155d44ae /src/qml/jsruntime/qv4functionobject_p.h | |
parent | dc7a53d85685e7ed768cc2ec9f4e0374b6a137f5 (diff) |
Convert FunctionObject derived classes to new construction scheme
Change-Id: I0d43a79ed531a9d651bd00866d73113c05d95a09
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/jsruntime/qv4functionobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index b5cc315666..970df4408e 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -154,7 +154,7 @@ struct Q_QML_EXPORT FunctionObject: Object { return v.asFunctionObject(); } - static FunctionObject *createScriptFunction(ExecutionContext *scope, Function *function, bool createProto = true); + static Data *createScriptFunction(ExecutionContext *scope, Function *function, bool createProto = true); ReturnedValue protoProperty() { return memberData()[Index_Prototype].asReturnedValue(); } @@ -175,8 +175,11 @@ inline FunctionObject *value_cast(const Value &v) { struct FunctionCtor: FunctionObject { + struct Data : FunctionObject::Data { + Data(ExecutionContext *scope); + }; + V4_OBJECT - FunctionCtor(ExecutionContext *scope); static ReturnedValue construct(Managed *that, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); @@ -195,6 +198,7 @@ struct FunctionPrototype: FunctionObject struct BuiltinFunction: FunctionObject { struct Data : FunctionObject::Data { + Data(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *)); ReturnedValue (*code)(CallContext *); }; struct { @@ -202,7 +206,10 @@ struct BuiltinFunction: FunctionObject { } __data; V4_OBJECT - BuiltinFunction(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *)); + static BuiltinFunction::Data *create(ExecutionContext *scope, String *name, ReturnedValue (*code)(CallContext *)) + { + return new (scope->engine()) Data(scope, name, code); + } static ReturnedValue construct(Managed *, CallData *); static ReturnedValue call(Managed *that, CallData *callData); @@ -237,8 +244,10 @@ struct IndexedBuiltinFunction: FunctionObject struct SimpleScriptFunction: FunctionObject { + struct Data : FunctionObject::Data { + Data(ExecutionContext *scope, Function *function, bool createProto); + }; V4_OBJECT - SimpleScriptFunction(ExecutionContext *scope, Function *function, bool createProto); static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); @@ -247,8 +256,10 @@ struct SimpleScriptFunction: FunctionObject { }; struct ScriptFunction: SimpleScriptFunction { + struct Data : SimpleScriptFunction::Data { + Data(ExecutionContext *scope, Function *function); + }; V4_OBJECT - ScriptFunction(ExecutionContext *scope, Function *function); static ReturnedValue construct(Managed *, CallData *callData); static ReturnedValue call(Managed *that, CallData *callData); @@ -257,6 +268,7 @@ struct ScriptFunction: SimpleScriptFunction { struct BoundFunction: FunctionObject { struct Data : FunctionObject::Data { + Data(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, const Members &boundArgs); FunctionObject *target; Value boundThis; Members boundArgs; @@ -268,17 +280,18 @@ struct BoundFunction: FunctionObject { } __data; V4_OBJECT + static BoundFunction::Data *create(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, const QV4::Members &boundArgs) + { + return new (scope->engine()) Data(scope, target, boundThis, boundArgs); + } + FunctionObject *target() { return d()->target; } Value boundThis() const { return d()->boundThis; } Members boundArgs() const { return d()->boundArgs; } - BoundFunction(ExecutionContext *scope, FunctionObject *target, const ValueRef boundThis, const Members &boundArgs); - ~BoundFunction() {} - static ReturnedValue construct(Managed *, CallData *d); static ReturnedValue call(Managed *that, CallData *dd); - static void destroy(Managed *); static void markObjects(Managed *that, ExecutionEngine *e); }; |