diff options
author | Jan Arve Saether <jan-arve.saether@qt.io> | 2017-06-26 18:38:27 +0200 |
---|---|---|
committer | Jan Arve Saether <jan-arve.saether@qt.io> | 2017-07-11 16:44:33 +0200 |
commit | b6e6e737f1a4a7e48989a6a036e25c238304802f (patch) | |
tree | 8d4b5940b92ad1fc94e46c1742acd9355e19e1d4 /src/qml/jsruntime/qv4memberdata_p.h | |
parent | d5b3f5da9cfa90fc43f29f3bdeec01884a47d6ca (diff) | |
parent | 4beee1a6dcc1be57aa6fb2a175dadc6ff298545d (diff) |
Merge remote-tracking branch 'origin/dev' into wip/pointerhandler
Conflicts:
examples/quick/shared/LauncherList.qml
src/quick/items/qquickevents.cpp
src/quick/items/qquickevents_p_p.h
src/quick/items/qquickwindow.cpp
tests/auto/quick/touchmouse/tst_touchmouse.cpp
Change-Id: Id692d291455093fc72db61f1b854f3fc9190267b
Diffstat (limited to 'src/qml/jsruntime/qv4memberdata_p.h')
-rw-r--r-- | src/qml/jsruntime/qv4memberdata_p.h | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/qml/jsruntime/qv4memberdata_p.h b/src/qml/jsruntime/qv4memberdata_p.h index fbe66757e0..bae524d088 100644 --- a/src/qml/jsruntime/qv4memberdata_p.h +++ b/src/qml/jsruntime/qv4memberdata_p.h @@ -72,23 +72,24 @@ 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]; } const Value *data() const { return d()->values.data(); } - void set(ExecutionEngine *e, uint index, Value v) { d()->values.set(e, index, v); } - void set(ExecutionEngine *e, uint index, Heap::Base *b) { d()->values.set(e, index, b); } + void set(EngineBase *e, uint index, Value v) { d()->values.set(e, index, v); } + void set(EngineBase *e, uint index, Heap::Base *b) { d()->values.set(e, index, b); } inline uint size() const { return d()->values.size; } |