diff options
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4memberdata_p.h | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/qml/jsruntime/qv4memberdata_p.h b/src/qml/jsruntime/qv4memberdata_p.h index fbe66757e0..9d333011fc 100644 --- a/src/qml/jsruntime/qv4memberdata_p.h +++ b/src/qml/jsruntime/qv4memberdata_p.h @@ -72,17 +72,18 @@ V4_ASSERT_IS_TRIVIAL(MemberData) struct MemberData : Managed { V4_MANAGED(MemberData, Managed) + V4_INTERNALCLASS(MemberData) struct Index { - Heap::MemberData *memberData; - uint index; + Heap::Base *base; + Value *slot; - void set(ExecutionEngine *e, Value newVal) { - memberData->values.set(e, index, newVal); + void set(EngineBase *e, Value newVal) { + WriteBarrier::write(e, base, slot, newVal); } - const Value *operator->() const { return &memberData->values[index]; } - const Value &operator*() const { return memberData->values[index]; } - bool isNull() const { return !memberData; } + const Value *operator->() const { return slot; } + const Value &operator*() const { return *slot; } + bool isNull() const { return !slot; } }; const Value &operator[] (uint idx) const { return d()->values[idx]; } |