aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4functionobject_p.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-05-09 11:35:47 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-07-22 13:49:17 +0200
commit00fa9049112385f65ccdcad02b8712a32626d20c (patch)
tree36ea7fe337a37aef9f30d1c1c5b795bb155d44ae /src/qml/jsruntime/qv4functionobject_p.h
parentdc7a53d85685e7ed768cc2ec9f4e0374b6a137f5 (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.h31
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);
};