diff options
author | Lars Knoll <lars.knoll@theqtcompany.com> | 2014-12-12 12:35:52 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-12-20 12:00:33 +0100 |
commit | 965fac4418bec7e7b3c84efd76f7803116fb9eac (patch) | |
tree | cb9991dcba0f80bd0ee15ef58bffe39c40918250 | |
parent | 2fe06148f237d7a12a3c034cdfc3a6b923ea1df6 (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.h | 5 | ||||
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 8 |
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(); } |