diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/qml/jsruntime/qv4functionobject_p.h | 3 | ||||
| -rw-r--r-- | src/qml/jsruntime/qv4jscall_p.h | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/src/qml/jsruntime/qv4functionobject_p.h b/src/qml/jsruntime/qv4functionobject_p.h index 92ec40fe87..398fd8b207 100644 --- a/src/qml/jsruntime/qv4functionobject_p.h +++ b/src/qml/jsruntime/qv4functionobject_p.h @@ -63,6 +63,7 @@ namespace QV4 { struct BuiltinFunction; struct IndexedBuiltinFunction; +struct JSCallData; typedef ReturnedValue (*jsCallFunction)(const FunctionObject *, const Value *thisObject, const Value *argv, int argc); typedef ReturnedValue (*jsConstructFunction)(const FunctionObject *, const Value *argv, int argc); @@ -155,9 +156,11 @@ struct Q_QML_EXPORT FunctionObject: Object { void init(String *name, bool createProto); + inline ReturnedValue callAsConstructor(const JSCallData &data) const; ReturnedValue callAsConstructor(const Value *argv, int argc) const { return d()->jsConstruct(this, argv, argc); } + inline ReturnedValue call(const JSCallData &data) const; ReturnedValue call(const Value *thisObject, const Value *argv, int argc) const { return d()->jsCall(this, thisObject, argv, argc); } diff --git a/src/qml/jsruntime/qv4jscall_p.h b/src/qml/jsruntime/qv4jscall_p.h index f356f29ca2..291e108853 100644 --- a/src/qml/jsruntime/qv4jscall_p.h +++ b/src/qml/jsruntime/qv4jscall_p.h @@ -106,7 +106,7 @@ struct JSCallData { memcpy(ptr->args, argv, argc*sizeof(Value)); } - CallData *operator->() { + CallData *operator->() const { return ptr; } @@ -115,16 +115,29 @@ struct JSCallData { } ReturnedValue call() const { - return static_cast<FunctionObject &>(ptr->function).call(&ptr->thisObject, ptr->args, ptr->argc()); + return static_cast<FunctionObject &>(ptr->function).call(*this); } ReturnedValue callAsConstructor() const { - return static_cast<FunctionObject &>(ptr->function).callAsConstructor(ptr->args, ptr->argc()); + return static_cast<FunctionObject &>(ptr->function).callAsConstructor(*this); } CallData *ptr; }; +inline +ReturnedValue FunctionObject::callAsConstructor(const JSCallData &data) const +{ + return d()->jsConstruct(this, data->args, data->argc()); +} + +inline +ReturnedValue FunctionObject::call(const JSCallData &data) const +{ + return d()->jsCall(this, &data->thisObject, data->args, data->argc()); +} + + struct ScopedStackFrame { Scope &scope; CppStackFrame frame; |
