Convert qv8listwrapper to use QV4::PersistentValue
authorLars Knoll <lars.knoll@digia.com>
Wed, 8 May 2013 05:31:04 +0000 (07:31 +0200)
committerSimon Hausmann <simon.hausmann@digia.com>
Wed, 8 May 2013 09:25:02 +0000 (11:25 +0200)
Change-Id: I1a85ae5ca0f4688174cda6127a326aed51f64b1b
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
src/qml/qml/v8/qv8listwrapper.cpp
src/qml/qml/v8/qv8listwrapper_p.h

index 8dc3576..c2e821d 100644 (file)
@@ -43,6 +43,8 @@
 #include "qv8engine_p.h"
 #include <private/qqmllist_p.h>
 
+#include <private/qv4functionobject_p.h>
+
 QT_BEGIN_NAMESPACE
 
 class QV8ListResource : public QV8ObjectResource
@@ -75,12 +77,11 @@ void QV8ListWrapper::init(QV8Engine *engine)
                                         v8::Handle<v8::Value>(), v8::DEFAULT, 
                                         v8::PropertyAttribute(v8::ReadOnly | v8::DontDelete | v8::DontEnum));
     ft->InstanceTemplate()->SetHasExternalResource(true);
-    m_constructor = qPersistentNew<v8::Function>(ft->GetFunction());
+    m_constructor = ft->GetFunction()->v4Value();
 }
 
 void QV8ListWrapper::destroy()
 {
-    qPersistentDispose(m_constructor);
 }
 
 v8::Handle<v8::Value> QV8ListWrapper::newList(QObject *object, int propId, int propType)
@@ -89,7 +90,7 @@ v8::Handle<v8::Value> QV8ListWrapper::newList(QObject *object, int propId, int p
         return QV4::Value::nullValue();
 
     // XXX NewInstance() should be optimized
-    v8::Handle<v8::Object> rv = m_constructor->NewInstance();
+    v8::Handle<v8::Object> rv = m_constructor.value().asFunctionObject()->newInstance();
     QV8ListResource *r = new QV8ListResource(m_engine);
     r->object = object;
     r->propertyType = propType;
@@ -102,7 +103,7 @@ v8::Handle<v8::Value> QV8ListWrapper::newList(QObject *object, int propId, int p
 v8::Handle<v8::Value> QV8ListWrapper::newList(const QQmlListProperty<QObject> &prop, int propType)
 {
     // XXX NewInstance() should be optimized
-    v8::Handle<v8::Object> rv = m_constructor->NewInstance();
+    v8::Handle<v8::Object> rv = m_constructor.value().asFunctionObject()->newInstance();
     QV8ListResource *r = new QV8ListResource(m_engine);
     r->object = prop.object;
     r->property = prop;
index e2ec535..8031a3b 100644 (file)
@@ -57,6 +57,8 @@
 #include <QtQml/qqmllist.h>
 #include <private/qv8_p.h>
 
+#include <private/qv4value_p.h>
+
 QT_BEGIN_NAMESPACE
 
 class QV8Engine;
@@ -88,7 +90,7 @@ private:
     static v8::Handle<v8::Array> Enumerator(const v8::AccessorInfo &info);
 
     QV8Engine *m_engine;
-    v8::Persistent<v8::Function> m_constructor;
+    QV4::PersistentValue m_constructor;
 };
 
 QT_END_NAMESPACE