From 1a36b216b19919f4489881bc5807b14cdb74c167 Mon Sep 17 00:00:00 2001 From: Chris Adams Date: Wed, 5 Oct 2011 17:37:12 +1000 Subject: [PATCH] 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 --- src/declarative/qml/qdeclarativesqldatabase.cpp | 1 + src/declarative/qml/v8/qv8engine.cpp | 5 +++++ src/declarative/qml/v8/qv8gccallback_p.h | 2 +- 3 files changed, 7 insertions(+), 1 deletions(-) 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: -- 1.7.2.5