From: Chris Adams Date: Wed, 5 Oct 2011 07:37:12 +0000 (+1000) Subject: Ensure all persistent handles are disposed properly X-Git-Url: http://git.silmor.de/gitweb/?a=commitdiff_plain;h=1a36b216b19919f4489881bc5807b14cdb74c167;p=konrad%2Fqtdeclarative.git Ensure all persistent handles are disposed properly Previously, some handles were leaking, which was causing a dramatic slowdown in v8 gc speed over time. Change-Id: I1e8d674b48647b7a0063a4b1c8d83130795502a0 Reviewed-on: http://codereview.qt-project.org/6026 Reviewed-by: Qt Sanity Bot Reviewed-by: Aaron Kennedy --- diff --git a/src/declarative/qml/qdeclarativesqldatabase.cpp b/src/declarative/qml/qdeclarativesqldatabase.cpp index 687aec9..7fc6207 100644 --- a/src/declarative/qml/qdeclarativesqldatabase.cpp +++ b/src/declarative/qml/qdeclarativesqldatabase.cpp @@ -197,6 +197,7 @@ QDeclarativeSqlDatabaseData::~QDeclarativeSqlDatabaseData() { qPersistentDispose(constructor); qPersistentDispose(queryConstructor); + qPersistentDispose(rowsConstructor); } static QString qmlsqldatabase_databasesPath(QV8Engine *engine) diff --git a/src/declarative/qml/v8/qv8engine.cpp b/src/declarative/qml/v8/qv8engine.cpp index 33c87b7..5259ab1 100644 --- a/src/declarative/qml/v8/qv8engine.cpp +++ b/src/declarative/qml/v8/qv8engine.cpp @@ -1390,6 +1390,11 @@ QV8GCCallback::Node::~Node() node.remove(); } +QV8GCCallback::Referencer::~Referencer() +{ + qPersistentDispose(strongReferencer); +} + QV8GCCallback::Referencer::Referencer() { v8::HandleScope handleScope; diff --git a/src/declarative/qml/v8/qv8gccallback_p.h b/src/declarative/qml/v8/qv8gccallback_p.h index 095c0e5..f5f7d8b 100644 --- a/src/declarative/qml/v8/qv8gccallback_p.h +++ b/src/declarative/qml/v8/qv8gccallback_p.h @@ -70,7 +70,7 @@ public: class Referencer { public: - ~Referencer() {} + ~Referencer(); void addRelationship(QObject *object, v8::Persistent handle); void addRelationship(QObject *object, QObject *other); private: