diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-10-30 10:38:55 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-13 08:56:14 +0000 |
commit | 3daf05ec2d7dbc408e2c302cdade667ec719d847 (patch) | |
tree | a5efab7b4a0bf381da6aa9ae0e44ea50cce9ea59 /src/qml/jsruntime/qv4functionobject_p.h | |
parent | 831ddc54932d2681712ca9fa3e94484ae11d59f7 (diff) |
Introduce new calling convention for builtin functions
And implement Function.apply()/call() with it.
Change-Id: I028c82d5f9adfd23328d669db1adccec9de5824c
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4functionobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 3fd0fbeec8..86137e8e6e 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -84,6 +84,7 @@ DECLARE_HEAP_OBJECT(FunctionObject, Object) { Index_ProtoConstructor = 0 }; + void init(QV4::ExecutionContext *scope, QV4::String *name, ReturnedValue (*code)(const QV4::FunctionObject *, const Value *thisObject, const Value *argv, int argc)); void init(QV4::ExecutionContext *scope, QV4::String *name = 0, bool createProto = false); void init(QV4::ExecutionContext *scope, QV4::Function *function, bool createProto = false); void init(QV4::ExecutionContext *scope, const QString &name, bool createProto = false); @@ -197,8 +198,8 @@ struct FunctionPrototype: FunctionObject void init(ExecutionEngine *engine, Object *ctor); static ReturnedValue method_toString(const BuiltinFunction *, CallData *callData); - static ReturnedValue method_apply(const BuiltinFunction *, CallData *callData); - static ReturnedValue method_call(const BuiltinFunction *, CallData *callData); + static ReturnedValue method_apply(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); + static ReturnedValue method_call(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); static ReturnedValue method_bind(const BuiltinFunction *, CallData *callData); }; @@ -211,6 +212,11 @@ struct Q_QML_EXPORT BuiltinFunction : FunctionObject { return scope->engine()->memoryManager->allocObject<BuiltinFunction>(scope, name, code); } + static Heap::FunctionObject *create(ExecutionContext *scope, String *name, ReturnedValue (*code)(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)) + { + return scope->engine()->memoryManager->allocObject<FunctionObject>(scope, name, code); + } + static ReturnedValue callAsConstructor(const FunctionObject *, const Value *argv, int argc); static ReturnedValue call(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); }; |