aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4memberdata_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata_p.h')
-rw-r--r--src/qml/jsruntime/qv4memberdata_p.h20
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();