diff options
author | Lars Knoll <lars.knoll@qt.io> | 2017-11-02 16:02:10 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-11-14 21:45:42 +0000 |
commit | 002fdc48d43e4fd67921e0cd46c28d28aee06848 (patch) | |
tree | 08fdc81dc91153649d8b6c6514ed3b49ad970064 /src/quick/items | |
parent | 010197a42150ee73a17cb53fbe397a6c55b2d342 (diff) |
Bring back markObjects(), this time generated
Doing the marking of objects in a function instead of
using the table seems to be somewhat faster.
Change-Id: I9ec00cc0264f9a15c69b285db493bee31d99bf96
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/quick/items')
-rw-r--r-- | src/quick/items/context2d/qquickcontext2d.cpp | 9 | ||||
-rw-r--r-- | src/quick/items/qquickitem.cpp | 8 |
2 files changed, 9 insertions, 8 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp index 3a5d8f7a13..49b2bf5838 100644 --- a/src/quick/items/context2d/qquickcontext2d.cpp +++ b/src/quick/items/context2d/qquickcontext2d.cpp @@ -529,6 +529,11 @@ struct QQuickJSContext2DPixelData : Object { struct QQuickJSContext2DImageData : Object { void init(); + static void markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack) { + static_cast<QQuickJSContext2DImageData *>(that)->pixelData.mark(markStack); + Object::markObjects(that, markStack); + } + QV4::Value pixelData; }; @@ -928,10 +933,6 @@ struct QQuickJSContext2DImageData : public QV4::Object static QV4::ReturnedValue method_get_height(const QV4::BuiltinFunction *b, QV4::CallData *callData); static QV4::ReturnedValue method_get_data(const QV4::BuiltinFunction *b, QV4::CallData *callData); - static void markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack) { - static_cast<QQuickJSContext2DImageData::Data *>(that)->pixelData.mark(markStack); - QV4::Object::markObjects(that, markStack); - } }; void QV4::Heap::QQuickJSContext2DImageData::init() diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp index 6579175cc6..ec4adf1ccd 100644 --- a/src/quick/items/qquickitem.cpp +++ b/src/quick/items/qquickitem.cpp @@ -8541,25 +8541,25 @@ QAccessible::Role QQuickItemPrivate::accessibleRole() const namespace QV4 { namespace Heap { struct QQuickItemWrapper : public QObjectWrapper { + static void markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack); }; } } struct QQuickItemWrapper : public QV4::QObjectWrapper { V4_OBJECT2(QQuickItemWrapper, QV4::QObjectWrapper) - static void markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack); }; DEFINE_OBJECT_VTABLE(QQuickItemWrapper); -void QQuickItemWrapper::markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack) +void QV4::Heap::QQuickItemWrapper::markObjects(QV4::Heap::Base *that, QV4::MarkStack *markStack) { - QObjectWrapper::Data *This = static_cast<QObjectWrapper::Data *>(that); + QObjectWrapper *This = static_cast<QObjectWrapper *>(that); if (QQuickItem *item = static_cast<QQuickItem*>(This->object())) { for (QQuickItem *child : qAsConst(QQuickItemPrivate::get(item)->childItems)) QV4::QObjectWrapper::markWrapper(child, markStack); } - QV4::QObjectWrapper::markObjects(that, markStack); + QObjectWrapper::markObjects(that, markStack); } quint64 QQuickItemPrivate::_q_createJSWrapper(QV4::ExecutionEngine *engine) |