From ba1a2a62c1a761d88912b79804bdf437c9a26aa7 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 8 May 2013 12:31:23 +0200 Subject: [PATCH] Convert qqmljavascriptexpression to use QV4::PersistentValue Change-Id: Idd704b55be61dd78c59fffdf966fc8497af852d6 Reviewed-by: Simon Hausmann --- src/qml/qml/qqmljavascriptexpression.cpp | 9 ++++----- src/qml/qml/qqmljavascriptexpression_p.h | 8 ++++---- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/qml/qml/qqmljavascriptexpression.cpp b/src/qml/qml/qqmljavascriptexpression.cpp index cd88370..759955f 100644 --- a/src/qml/qml/qqmljavascriptexpression.cpp +++ b/src/qml/qml/qqmljavascriptexpression.cpp @@ -64,8 +64,7 @@ bool QQmlDelayedError::addError(QQmlEnginePrivate *e) void QQmlDelayedError::setMessage(v8::Handle message) { - qPersistentDispose(m_message); - m_message = qPersistentNew(message); + m_message = message.get(); } void QQmlDelayedError::setErrorLocation(const QUrl &url, quint16 line, quint16 column) @@ -90,9 +89,9 @@ void QQmlDelayedError::setErrorDescription(const QString &description) */ void QQmlDelayedError::convertMessageToError(QQmlEngine *engine) const { - if (!m_message.IsEmpty() && engine) { - QQmlExpressionPrivate::exceptionToError(m_message, m_error); - qPersistentDispose(m_message); + if (!!m_message && engine) { + QQmlExpressionPrivate::exceptionToError(v8::Handle(m_message.data()), m_error); + m_message.reset(); } } diff --git a/src/qml/qml/qqmljavascriptexpression_p.h b/src/qml/qml/qqmljavascriptexpression_p.h index 0d3b7b9..cfdb5b0 100644 --- a/src/qml/qml/qqmljavascriptexpression_p.h +++ b/src/qml/qml/qqmljavascriptexpression_p.h @@ -65,7 +65,7 @@ class QQmlDelayedError { public: inline QQmlDelayedError() : nextError(0), prevError(0) {} - inline ~QQmlDelayedError() { qPersistentDispose(m_message); removeError(); } + inline ~QQmlDelayedError() { removeError(); } bool addError(QQmlEnginePrivate *); @@ -77,9 +77,9 @@ public: prevError = 0; } - inline bool isValid() const { return !m_message.IsEmpty() || m_error.isValid(); } + inline bool isValid() const { return !!m_message || m_error.isValid(); } inline const QQmlError &error(QQmlEngine *engine) const { convertMessageToError(engine); return m_error; } - inline void clearError() { qPersistentDispose(m_message); m_error = QQmlError(); } + inline void clearError() { m_message.reset(); m_error = QQmlError(); } void setMessage(v8::Handle message); void setErrorLocation(const QUrl &url, quint16 line, quint16 column); @@ -89,7 +89,7 @@ private: void convertMessageToError(QQmlEngine *engine) const; mutable QQmlError m_error; - mutable v8::Persistent m_message; + mutable QExplicitlySharedDataPointer m_message; QQmlDelayedError *nextError; QQmlDelayedError **prevError; -- 2.7.4