diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-01-31 14:03:51 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-03-09 08:58:34 +0000 |
commit | 91714e004e0c91527e7049ff43565dda682fc2bd (patch) | |
tree | bd5ff925acf6c8e1b98667c0b18028576cf94662 /src/qml/memory/qv4heap_p.h | |
parent | 518e258d59adc976e2e8aa9a7f9ef36d8b8cdb66 (diff) |
Make all write operations to Pointer<> types go through a set() method
The new set() method also taked an ExecutionEngine pointer. This makes
it trivial to now add a write barrier for those operations.
Change-Id: I321eccfe6fb279cc240b5c84910e6854f71759f6
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/memory/qv4heap_p.h')
-rw-r--r-- | src/qml/memory/qv4heap_p.h | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/qml/memory/qv4heap_p.h b/src/qml/memory/qv4heap_p.h index b3dfa407f8..2cf3e721f9 100644 --- a/src/qml/memory/qv4heap_p.h +++ b/src/qml/memory/qv4heap_p.h @@ -167,15 +167,18 @@ V4_ASSERT_IS_TRIVIAL(Base) template <typename T, size_t o> struct Pointer { static Q_CONSTEXPR size_t offset = o; - static Q_CONSTEXPR quint64 markBits = Mark_Pointer << (o >> 2); T operator->() const { return ptr; } operator T () const { return ptr; } - Pointer &operator =(T t) { ptr = t; return *this; } + void set(ExecutionEngine *e, T newVal) { + Q_UNUSED(e); + ptr = newVal; + } template <typename Type> Type *cast() { return static_cast<Type *>(ptr); } +private: T ptr; }; typedef Pointer<char *, 0> V4PointerCheck; |