diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-11-06 15:59:01 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-14 21:46:14 +0000 |
commit | 30ada3da8635f3e496ea6cb9483aa104d32e5a61 (patch) | |
tree | 5573b2a95dc25a5c8fa17de79179ef6bc10294f4 /src/qml/jsruntime/qv4argumentsobject_p.h | |
parent | f0a412020f493f01205c302cf48927dd5e3b80b6 (diff) |
Clean up ArgumentsObject handling
Introduce a proper strict arguments object.
Change-Id: Ie4e7f904b3a0e03893b18b3c6709f4f25dbc1030
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4argumentsobject_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4argumentsobject_p.h | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4argumentsobject_p.h b/src/qml/jsruntime/qv4argumentsobject_p.h index cc7eada4b9..ac281f555a 100644 --- a/src/qml/jsruntime/qv4argumentsobject_p.h +++ b/src/qml/jsruntime/qv4argumentsobject_p.h @@ -79,17 +79,26 @@ DECLARE_HEAP_OBJECT(ArgumentsSetterFunction, FunctionObject) { Member(class, Pointer, CallContext *, context) \ Member(class, Pointer, MemberData *, mappedArguments) \ Member(class, NoMark, bool, fullyCreated) \ - Member(class, NoMark, bool, isStrict) \ Member(class, NoMark, int, nFormals) DECLARE_HEAP_OBJECT(ArgumentsObject, Object) { 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, int nFormals, bool strict); + void init(CppStackFrame *frame); }; } @@ -133,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)->d()->isStrict; + return m->d()->vtable() == staticVTable(); } bool defineOwnProperty(ExecutionEngine *engine, uint index, const Property *desc, PropertyAttributes attrs); @@ -148,6 +156,11 @@ struct ArgumentsObject: Object { }; +struct StrictArgumentsObject : Object { + V4_OBJECT2(StrictArgumentsObject, Object) + Q_MANAGED_TYPE(ArgumentsObject) +}; + } QT_END_NAMESPACE |