diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2017-11-21 12:29:40 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2017-11-21 12:29:40 +0100 |
commit | d373d5e7d70e968cfba8957596ed6fe4f46990c8 (patch) | |
tree | c52bf2b0fbbfdb13d644b4050aa7a931ef4b7109 /src/qml/jsruntime/qv4argumentsobject_p.h | |
parent | 9880acb424fd814501ba5fc4ae1caa989e23fafa (diff) | |
parent | 9af8a47746b69b6040fc149c1d24602a1e25b08f (diff) |
Merge remote-tracking branch 'origin/wip/new-backend' into dev
Conflicts:
src/qml/compiler/qv4isel_moth.cpp
src/qml/compiler/qv4jsir_p.h
src/qml/jsruntime/qv4engine_p.h
src/qml/jsruntime/qv4vme_moth.cpp
tests/auto/qml/qml.pro
Change-Id: Ia7b6ec24c7fcbcbb1786d9e798d2df294020ae37
Diffstat (limited to 'src/qml/jsruntime/qv4argumentsobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject_p.h | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject_p.h b/src/qml/jsruntime/qv4argumentsobject_p.h index 46e1f884e8..ac281f555a 100644 --- a/src/qml/jsruntime/qv4argumentsobject_p.h +++ b/src/qml/jsruntime/qv4argumentsobject_p.h @@ -63,7 +63,7 @@ namespace Heap { Member(class, NoMark, uint, index) DECLARE_HEAP_OBJECT(ArgumentsGetterFunction, FunctionObject) { - DECLARE_MARK_TABLE(ArgumentsGetterFunction); + DECLARE_MARKOBJECTS(ArgumentsGetterFunction); inline void init(QV4::ExecutionContext *scope, uint index); }; @@ -71,23 +71,34 @@ DECLARE_HEAP_OBJECT(ArgumentsGetterFunction, FunctionObject) { Member(class, NoMark, uint, index) DECLARE_HEAP_OBJECT(ArgumentsSetterFunction, FunctionObject) { - DECLARE_MARK_TABLE(ArgumentsSetterFunction); + DECLARE_MARKOBJECTS(ArgumentsSetterFunction); inline void init(QV4::ExecutionContext *scope, uint index); }; #define ArgumentsObjectMembers(class, Member) \ Member(class, Pointer, CallContext *, context) \ Member(class, Pointer, MemberData *, mappedArguments) \ - Member(class, NoMark, bool, fullyCreated) + Member(class, NoMark, bool, fullyCreated) \ + Member(class, NoMark, int, nFormals) DECLARE_HEAP_OBJECT(ArgumentsObject, Object) { - DECLARE_MARK_TABLE(ArgumentsObject); + DECLARE_MARKOBJECTS(ArgumentsObject); + enum { + LengthPropertyIndex = 0, + CalleePropertyIndex = 1 + }; + void init(CppStackFrame *frame); +}; + +#define StrictArgumentsObjectMembers(class, Member) + +DECLARE_HEAP_OBJECT(StrictArgumentsObject, Object) { enum { LengthPropertyIndex = 0, CalleePropertyIndex = 1, CallerPropertyIndex = 3 }; - void init(QV4::CallContext *context); + void init(CppStackFrame *frame); }; } @@ -97,7 +108,7 @@ struct ArgumentsGetterFunction: FunctionObject V4_OBJECT2(ArgumentsGetterFunction, FunctionObject) uint index() const { return d()->index; } - static void call(const Managed *that, Scope &scope, CallData *d); + static ReturnedValue call(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); }; inline void @@ -112,7 +123,7 @@ struct ArgumentsSetterFunction: FunctionObject V4_OBJECT2(ArgumentsSetterFunction, FunctionObject) uint index() const { return d()->index; } - static void call(const Managed *that, Scope &scope, CallData *callData); + static ReturnedValue call(const FunctionObject *f, const Value *thisObject, const Value *argv, int argc); }; inline void @@ -131,8 +142,7 @@ struct ArgumentsObject: Object { bool fullyCreated() const { return d()->fullyCreated; } static bool isNonStrictArgumentsObject(Managed *m) { - return m->d()->vtable()->type == Type_ArgumentsObject && - !static_cast<ArgumentsObject *>(m)->context()->strictMode; + return m->d()->vtable() == staticVTable(); } bool defineOwnProperty(ExecutionEngine *engine, uint index, const Property *desc, PropertyAttributes attrs); @@ -146,6 +156,11 @@ struct ArgumentsObject: Object { }; +struct StrictArgumentsObject : Object { + V4_OBJECT2(StrictArgumentsObject, Object) + Q_MANAGED_TYPE(ArgumentsObject) +}; + } QT_END_NAMESPACE |