diff options
author | Lars Knoll <lars.knoll@digia.com> | 2013-11-02 16:30:26 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-05 18:54:51 +0100 |
commit | 025365f1dc6dc9c3244a125882433e55b57fa672 (patch) | |
tree | 6cab46d0595e7c9a8b61c8f2eb620dba009f30f8 /src/qml/qml/qqmlvmemetaobject.cpp | |
parent | c9a90b3181723061e27e7545b70a66dda4f4306d (diff) |
Refactor marking GC'ed objects
Don't use recursive function calls anymore. Instead, push marked
objects onto the JS stack, and then pop them off when their children
are being marked.
Should reduce stack memory usage, and improves performance by ~5%.
Change-Id: I2d37d97579144fcba87ec8e9fd545dd220c01fbb
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index 1547b2a89d..4b34792421 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -1232,9 +1232,9 @@ void QQmlVMEMetaObject::ensureQObjectWrapper() QV4::QObjectWrapper::wrap(v4, object); } -void QQmlVMEMetaObject::mark() +void QQmlVMEMetaObject::mark(QV4::ExecutionEngine *e) { - varProperties.markOnce(); + varProperties.markOnce(e); // add references created by VMEVariant properties int maxDataIdx = metaData->propertyCount - metaData->varPropertyCount; @@ -1245,13 +1245,13 @@ void QQmlVMEMetaObject::mark() if (ref) { QQmlData *ddata = QQmlData::get(ref); if (ddata) - ddata->jsWrapper.markOnce(); + ddata->jsWrapper.markOnce(e); } } } if (QQmlVMEMetaObject *parent = parentVMEMetaObject()) - parent->mark(); + parent->mark(e); } void QQmlVMEMetaObject::allocateVarPropertiesArray() |