aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@theqtcompany.com>2014-12-12 12:35:52 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2014-12-20 12:00:33 +0100
commit965fac4418bec7e7b3c84efd76f7803116fb9eac (patch)
treecb9991dcba0f80bd0ee15ef58bffe39c40918250
parent2fe06148f237d7a12a3c034cdfc3a6b923ea1df6 (diff)
Store a heap object in the qmlextensions
Change-Id: I5ad9236378ff1e037945d024ee5bd6629dddec4d Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r--src/qml/jsruntime/qv4qmlextensions_p.h5
-rw-r--r--src/qml/qml/qqmlvaluetypewrapper.cpp8
2 files changed, 7 insertions, 6 deletions
diff --git a/src/qml/jsruntime/qv4qmlextensions_p.h b/src/qml/jsruntime/qv4qmlextensions_p.h
index ffa3071227..8f05ec5191 100644
--- a/src/qml/jsruntime/qv4qmlextensions_p.h
+++ b/src/qml/jsruntime/qv4qmlextensions_p.h
@@ -34,12 +34,11 @@
#define QV4QMLEXTENSIONS_P_H
#include <qtqmlglobal.h>
+#include <qv4global_p.h>
QT_BEGIN_NAMESPACE
namespace QV4 {
-struct Object;
-struct ExecutionEngine;
struct Q_QML_EXPORT QmlExtensions
{
@@ -47,7 +46,7 @@ struct Q_QML_EXPORT QmlExtensions
: valueTypeWrapperPrototype(0)
{}
- Object *valueTypeWrapperPrototype;
+ Heap::Object *valueTypeWrapperPrototype;
void markObjects(ExecutionEngine *e);
};
diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp
index a98bad636a..ede55d033f 100644
--- a/src/qml/qml/qqmlvaluetypewrapper.cpp
+++ b/src/qml/qml/qqmlvaluetypewrapper.cpp
@@ -144,7 +144,7 @@ void QmlValueTypeWrapper::initProto(ExecutionEngine *v4)
Scope scope(v4);
Scoped<Object> o(scope, v4->newObject());
o->defineDefaultProperty(v4->id_toString, method_toString, 1);
- v4->qmlExtensions()->valueTypeWrapperPrototype = o;
+ v4->qmlExtensions()->valueTypeWrapperPrototype = o->d();
}
ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, QObject *object, int property, QQmlValueType *type)
@@ -154,7 +154,8 @@ ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, QObject *object, int pr
initProto(v4);
Scoped<QmlValueTypeReference> r(scope, v4->memoryManager->alloc<QmlValueTypeReference>(v8));
- r->setPrototype(v4->qmlExtensions()->valueTypeWrapperPrototype->asObject());
+ ScopedObject proto(scope, v4->qmlExtensions()->valueTypeWrapperPrototype);
+ r->setPrototype(proto);
r->d()->type = type; r->d()->object = object; r->d()->property = property;
return r->asReturnedValue();
}
@@ -166,7 +167,8 @@ ReturnedValue QmlValueTypeWrapper::create(QV8Engine *v8, const QVariant &value,
initProto(v4);
Scoped<QmlValueTypeCopy> r(scope, v4->memoryManager->alloc<QmlValueTypeCopy>(v8));
- r->setPrototype(v4->qmlExtensions()->valueTypeWrapperPrototype->asObject());
+ ScopedObject proto(scope, v4->qmlExtensions()->valueTypeWrapperPrototype);
+ r->setPrototype(proto);
r->d()->type = type; r->d()->value = value;
return r->asReturnedValue();
}