diff options
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4memberdata_p.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4memberdata_p.h b/src/qml/jsruntime/qv4memberdata_p.h index 03aa75a365..cd8667adb7 100644 --- a/src/qml/jsruntime/qv4memberdata_p.h +++ b/src/qml/jsruntime/qv4memberdata_p.h @@ -50,23 +50,29 @@ namespace QV4 { struct MemberData : Managed { - V4_MANAGED - uint size; - Value data[1]; + struct Data : Managed::Data { + union { + uint size; + double _dummy; + }; + Value data[1]; + }; + V4_MANAGED(Managed) MemberData(QV4::InternalClass *ic) : Managed(ic) {} - Value &operator[] (uint idx) { return data[idx]; } + Value &operator[] (uint idx) { return d()->data[idx]; } static void markObjects(Managed *that, ExecutionEngine *e); }; struct Members : Value { + void reset() { m = 0; } void ensureIndex(QV4::ExecutionEngine *e, uint idx); - Value &operator[] (uint idx) const { return static_cast<MemberData *>(managed())->data[idx]; } - inline uint size() const { return d() ? d()->size : 0; } + Value &operator[] (uint idx) const { return static_cast<MemberData *>(managed())->d()->data[idx]; } + inline uint size() const { return d() ? d()->d()->size : 0; } inline MemberData *d() const { return static_cast<MemberData *>(managed()); } - Value *data() const { return static_cast<MemberData *>(managed())->data; } + Value *data() const { return static_cast<MemberData *>(managed())->d()->data; } void mark(ExecutionEngine *e) const { MemberData *m = d(); |