diff options
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlboundsignal.cpp | 5 | ||||
-rw-r--r-- | src/qml/qml/qqmlcontextwrapper.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 45 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8engine.cpp | 62 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8engine_p.h | 2 |
7 files changed, 54 insertions, 68 deletions
diff --git a/src/qml/qml/qqmlboundsignal.cpp b/src/qml/qml/qqmlboundsignal.cpp index 8baeefe62b..6720491f1f 100644 --- a/src/qml/qml/qqmlboundsignal.cpp +++ b/src/qml/qml/qqmlboundsignal.cpp @@ -247,7 +247,6 @@ void QQmlBoundSignalExpression::evaluate(void **a) setExpressionFunctionValid(true); } - QV8Engine *engine = ep->v8engine(); QVarLengthArray<int, 9> dummy; //TODO: lookup via signal index rather than method index as an optimization int methodIndex = QMetaObjectPrivate::signal(m_target->metaObject(), m_index).methodIndex(); @@ -262,7 +261,7 @@ void QQmlBoundSignalExpression::evaluate(void **a) // for several cases (such as QVariant type and QObject-derived types) //args[ii] = engine->metaTypeToJS(type, a[ii + 1]); if (type == QMetaType::QVariant) { - callData->args[ii] = engine->fromVariant(*((QVariant *)a[ii + 1])); + callData->args[ii] = QV8Engine::fromVariant(scope.engine, *((QVariant *)a[ii + 1])); } else if (type == QMetaType::Int) { //### optimization. Can go away if we switch to metaTypeToJS, or be expanded otherwise callData->args[ii] = QV4::Primitive::fromInt32(*reinterpret_cast<const int*>(a[ii + 1])); @@ -274,7 +273,7 @@ void QQmlBoundSignalExpression::evaluate(void **a) else callData->args[ii] = QV4::QObjectWrapper::wrap(ep->v4engine(), *reinterpret_cast<QObject* const *>(a[ii + 1])); } else { - callData->args[ii] = engine->fromVariant(QVariant(type, a[ii + 1])); + callData->args[ii] = QV8Engine::fromVariant(scope.engine, QVariant(type, a[ii + 1])); } } diff --git a/src/qml/qml/qqmlcontextwrapper.cpp b/src/qml/qml/qqmlcontextwrapper.cpp index 98b72c61b1..bcab5c84d6 100644 --- a/src/qml/qml/qqmlcontextwrapper.cpp +++ b/src/qml/qml/qqmlcontextwrapper.cpp @@ -231,7 +231,7 @@ ReturnedValue QmlContextWrapper::get(Managed *m, String *name, bool *hasProperty QQmlContextPrivate::context_at); return QmlListWrapper::create(v4, prop, qMetaTypeId<QQmlListProperty<QObject> >()); } else { - return engine->fromVariant(cp->propertyValues.at(propertyIdx)); + return QV8Engine::fromVariant(scope.engine, cp->propertyValues.at(propertyIdx)); } } } diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 19160fa94b..a7c4d6ca15 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -323,7 +323,7 @@ ReturnedValue QQmlValueTypeWrapper::get(Managed *m, String *name, bool *hasPrope QVariant v(result->propType, (void *)0); void *args[] = { v.data(), 0 }; metaObject->d.static_metacall(reinterpret_cast<QObject*>(gadget), QMetaObject::ReadProperty, result->coreIndex, args); - return v4->v8Engine->fromVariant(v); + return QV8Engine::fromVariant(v4, v); #undef VALUE_TYPE_ACCESSOR } diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index e75ccb5a66..7838d6ce5a 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -945,7 +945,7 @@ int QQmlVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a) callData->thisObject = ep->v8engine()->global(); for (int ii = 0; ii < data->parameterCount; ++ii) - callData->args[ii] = ep->v8engine()->fromVariant(*(QVariant *)a[ii + 1]); + callData->args[ii] = QV8Engine::fromVariant(scope.engine, *(QVariant *)a[ii + 1]); QV4::ScopedValue result(scope); result = function->call(callData); @@ -1077,7 +1077,7 @@ void QQmlVMEMetaObject::writeProperty(int id, const QVariant &value) // And, if the new value is a scarce resource, we need to ensure that it does not get // automatically released by the engine until no other references to it exist. - QV4::ScopedValue newv(scope, QQmlEnginePrivate::get(ctxt->engine)->v8engine()->fromVariant(value)); + QV4::ScopedValue newv(scope, QV8Engine::fromVariant(scope.engine, value)); QV4::Scoped<QV4::VariantObject> v(scope, newv); if (!!v) v->addVmePropertyReference(); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 4bfcb879e6..f114616405 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -183,7 +183,7 @@ ReturnedValue QtObject::method_rgba(QV4::CallContext *ctx) if (a < 0.0) a=0.0; if (a > 1.0) a=1.0; - return ctx->d()->engine->v8Engine->fromVariant(QQml_colorProvider()->fromRgbF(r, g, b, a)); + return QV8Engine::fromVariant(ctx->engine(), QQml_colorProvider()->fromRgbF(r, g, b, a)); } /*! @@ -212,7 +212,7 @@ ReturnedValue QtObject::method_hsla(QV4::CallContext *ctx) if (a < 0.0) a=0.0; if (a > 1.0) a=1.0; - return ctx->d()->engine->v8Engine->fromVariant(QQml_colorProvider()->fromHslF(h, s, l, a)); + return QV8Engine::fromVariant(ctx->engine(), QQml_colorProvider()->fromHslF(h, s, l, a)); } /*! @@ -271,7 +271,7 @@ ReturnedValue QtObject::method_rect(QV4::CallContext *ctx) double w = ctx->d()->callData->args[2].toNumber(); double h = ctx->d()->callData->args[3].toNumber(); - return ctx->d()->engine->v8Engine->fromVariant(QVariant::fromValue(QRectF(x, y, w, h))); + return QV8Engine::fromVariant(ctx->engine(), QVariant::fromValue(QRectF(x, y, w, h))); } /*! @@ -286,7 +286,7 @@ ReturnedValue QtObject::method_point(QV4::CallContext *ctx) double x = ctx->d()->callData->args[0].toNumber(); double y = ctx->d()->callData->args[1].toNumber(); - return ctx->d()->engine->v8Engine->fromVariant(QVariant::fromValue(QPointF(x, y))); + return QV8Engine::fromVariant(ctx->engine(), QVariant::fromValue(QPointF(x, y))); } /*! @@ -301,7 +301,7 @@ ReturnedValue QtObject::method_size(QV4::CallContext *ctx) double w = ctx->d()->callData->args[0].toNumber(); double h = ctx->d()->callData->args[1].toNumber(); - return ctx->d()->engine->v8Engine->fromVariant(QVariant::fromValue(QSizeF(w, h))); + return QV8Engine::fromVariant(ctx->engine(), QVariant::fromValue(QSizeF(w, h))); } /*! @@ -322,7 +322,7 @@ ReturnedValue QtObject::method_font(QV4::CallContext *ctx) QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QFont, QQmlV4Handle(ctx->d()->callData->args[0]), v8engine, &ok); if (!ok) V4THROW_ERROR("Qt.font(): Invalid argument: no valid font subproperties specified"); - return v8engine->fromVariant(v); + return QV8Engine::fromVariant(ctx->engine(), v); } @@ -341,8 +341,7 @@ ReturnedValue QtObject::method_vector2d(QV4::CallContext *ctx) xy[1] = ctx->d()->callData->args[1].toNumber(); const void *params[] = { xy }; - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector2D, 1, params)); + return QV8Engine::fromVariant(ctx->engine(), QQml_valueTypeProvider()->createValueType(QMetaType::QVector2D, 1, params)); } /*! @@ -360,8 +359,7 @@ ReturnedValue QtObject::method_vector3d(QV4::CallContext *ctx) xyz[2] = ctx->d()->callData->args[2].toNumber(); const void *params[] = { xyz }; - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector3D, 1, params)); + return QV8Engine::fromVariant(ctx->engine(), QQml_valueTypeProvider()->createValueType(QMetaType::QVector3D, 1, params)); } /*! @@ -380,8 +378,7 @@ ReturnedValue QtObject::method_vector4d(QV4::CallContext *ctx) xyzw[3] = ctx->d()->callData->args[3].toNumber(); const void *params[] = { xyzw }; - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QVector4D, 1, params)); + return QV8Engine::fromVariant(ctx->engine(), QQml_valueTypeProvider()->createValueType(QMetaType::QVector4D, 1, params)); } /*! @@ -400,8 +397,7 @@ ReturnedValue QtObject::method_quaternion(QV4::CallContext *ctx) sxyz[3] = ctx->d()->callData->args[3].toNumber(); const void *params[] = { sxyz }; - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QQuaternion, 1, params)); + return QV8Engine::fromVariant(ctx->engine(), QQml_valueTypeProvider()->createValueType(QMetaType::QQuaternion, 1, params)); } /*! @@ -420,7 +416,7 @@ ReturnedValue QtObject::method_matrix4x4(QV4::CallContext *ctx) QVariant v = QQml_valueTypeProvider()->createVariantFromJsObject(QMetaType::QMatrix4x4, QQmlV4Handle(ctx->d()->callData->args[0]), v8engine, &ok); if (!ok) V4THROW_ERROR("Qt.matrix4x4(): Invalid argument: not a valid matrix4x4 values array"); - return v8engine->fromVariant(v); + return QV8Engine::fromVariant(ctx->engine(), v); } if (ctx->d()->callData->argc != 16) @@ -445,7 +441,7 @@ ReturnedValue QtObject::method_matrix4x4(QV4::CallContext *ctx) vals[15] = ctx->d()->callData->args[15].toNumber(); const void *params[] = { vals }; - return v8engine->fromVariant(QQml_valueTypeProvider()->createValueType(QMetaType::QMatrix4x4, 1, params)); + return QV8Engine::fromVariant(ctx->engine(), QQml_valueTypeProvider()->createValueType(QMetaType::QMatrix4x4, 1, params)); } /*! @@ -467,7 +463,6 @@ ReturnedValue QtObject::method_lighter(QV4::CallContext *ctx) if (ctx->d()->callData->argc != 1 && ctx->d()->callData->argc != 2) V4THROW_ERROR("Qt.lighter(): Invalid arguments"); - QV8Engine *v8engine = ctx->d()->engine->v8Engine; QVariant v = QV8Engine::toVariant(ctx->engine(), ctx->d()->callData->args[0], -1); if (v.userType() == QVariant::String) { bool ok = false; @@ -483,7 +478,7 @@ ReturnedValue QtObject::method_lighter(QV4::CallContext *ctx) if (ctx->d()->callData->argc == 2) factor = ctx->d()->callData->args[1].toNumber(); - return v8engine->fromVariant(QQml_colorProvider()->lighter(v, factor)); + return QV8Engine::fromVariant(ctx->engine(), QQml_colorProvider()->lighter(v, factor)); } /*! @@ -506,7 +501,6 @@ ReturnedValue QtObject::method_darker(QV4::CallContext *ctx) if (ctx->d()->callData->argc != 1 && ctx->d()->callData->argc != 2) V4THROW_ERROR("Qt.darker(): Invalid arguments"); - QV8Engine *v8engine = ctx->d()->engine->v8Engine; QVariant v = QV8Engine::toVariant(ctx->engine(), ctx->d()->callData->args[0], -1); if (v.userType() == QVariant::String) { bool ok = false; @@ -522,7 +516,7 @@ ReturnedValue QtObject::method_darker(QV4::CallContext *ctx) if (ctx->d()->callData->argc == 2) factor = ctx->d()->callData->args[1].toNumber(); - return v8engine->fromVariant(QQml_colorProvider()->darker(v, factor)); + return QV8Engine::fromVariant(ctx->engine(), QQml_colorProvider()->darker(v, factor)); } /*! @@ -554,8 +548,6 @@ ReturnedValue QtObject::method_tint(QV4::CallContext *ctx) if (ctx->d()->callData->argc != 2) V4THROW_ERROR("Qt.tint(): Invalid arguments"); - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - // base color QVariant v1 = QV8Engine::toVariant(ctx->engine(), ctx->d()->callData->args[0], -1); if (v1.userType() == QVariant::String) { @@ -580,7 +572,7 @@ ReturnedValue QtObject::method_tint(QV4::CallContext *ctx) return QV4::Encode::null(); } - return v8engine->fromVariant(QQml_colorProvider()->tint(v1, v2)); + return QV8Engine::fromVariant(ctx->engine(), QQml_colorProvider()->tint(v1, v2)); } /*! @@ -803,10 +795,8 @@ ReturnedValue QtObject::method_openUrlExternally(QV4::CallContext *ctx) if (ctx->d()->callData->argc != 1) return QV4::Encode(false); - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - QUrl url(Value::fromReturnedValue(method_resolvedUrl(ctx)).toQStringNoThrow()); - return v8engine->fromVariant(QQml_guiProvider()->openUrlExternally(url)); + return QV8Engine::fromVariant(ctx->engine(), QQml_guiProvider()->openUrlExternally(url)); } /*! @@ -841,8 +831,7 @@ ReturnedValue QtObject::method_fontFamilies(CallContext *ctx) if (ctx->d()->callData->argc != 0) V4THROW_ERROR("Qt.fontFamilies(): Invalid arguments"); - QV8Engine *v8engine = ctx->d()->engine->v8Engine; - return v8engine->fromVariant(QVariant(QQml_guiProvider()->fontFamilies())); + return QV8Engine::fromVariant(ctx->engine(), QVariant(QQml_guiProvider()->fontFamilies())); } /*! diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index d4ceaad351..3c6fa32f39 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -306,24 +306,22 @@ QVariant QV8Engine::objectToVariant(QV4::ExecutionEngine *e, QV4::Object *o, V8O return result; } -static QV4::ReturnedValue arrayFromVariantList(QV8Engine *engine, const QVariantList &list) +static QV4::ReturnedValue arrayFromVariantList(QV4::ExecutionEngine *e, const QVariantList &list) { - QV4::ExecutionEngine *e = QV8Engine::getV4(engine); QV4::Scope scope(e); QV4::Scoped<QV4::ArrayObject> a(scope, e->newArrayObject()); int len = list.count(); a->arrayReserve(len); QV4::ScopedValue v(scope); for (int ii = 0; ii < len; ++ii) - a->arrayPut(ii, (v = engine->fromVariant(list.at(ii)))); + a->arrayPut(ii, (v = QV8Engine::fromVariant(scope.engine, list.at(ii)))); a->setArrayLengthUnchecked(len); return a.asReturnedValue(); } -static QV4::ReturnedValue objectFromVariantMap(QV8Engine *engine, const QVariantMap &map) +static QV4::ReturnedValue objectFromVariantMap(QV4::ExecutionEngine *e, const QVariantMap &map) { - QV4::ExecutionEngine *e = QV8Engine::getV4(engine); QV4::Scope scope(e); QV4::ScopedObject o(scope, e->newObject()); QV4::ScopedString s(scope); @@ -333,14 +331,14 @@ static QV4::ReturnedValue objectFromVariantMap(QV8Engine *engine, const QVariant uint idx = s->asArrayIndex(); if (idx > 16 && (!o->arrayData() || idx > o->arrayData()->length() * 2)) o->initSparseArray(); - o->put(s, (v = engine->fromVariant(iter.value()))); + o->put(s, (v = QV8Engine::fromVariant(e, iter.value()))); } return o.asReturnedValue(); } Q_CORE_EXPORT QString qt_regexp_toCanonical(const QString &, QRegExp::PatternSyntax); -QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant) +QV4::ReturnedValue QV8Engine::fromVariant(QV4::ExecutionEngine *e, const QVariant &variant) { int type = variant.userType(); const void *ptr = variant.constData(); @@ -365,7 +363,7 @@ QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant) case QMetaType::Double: return QV4::Encode(*reinterpret_cast<const double*>(ptr)); case QMetaType::QString: - return m_v4Engine->currentContext()->engine->newString(*reinterpret_cast<const QString*>(ptr))->asReturnedValue(); + return e->currentContext()->engine->newString(*reinterpret_cast<const QString*>(ptr))->asReturnedValue(); case QMetaType::Float: return QV4::Encode(*reinterpret_cast<const float*>(ptr)); case QMetaType::Short: @@ -379,44 +377,44 @@ QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant) case QMetaType::QChar: return QV4::Encode((int)(*reinterpret_cast<const QChar*>(ptr)).unicode()); case QMetaType::QDateTime: - return QV4::Encode(m_v4Engine->newDateObject(*reinterpret_cast<const QDateTime *>(ptr))); + return QV4::Encode(e->newDateObject(*reinterpret_cast<const QDateTime *>(ptr))); case QMetaType::QDate: - return QV4::Encode(m_v4Engine->newDateObject(QDateTime(*reinterpret_cast<const QDate *>(ptr)))); + return QV4::Encode(e->newDateObject(QDateTime(*reinterpret_cast<const QDate *>(ptr)))); case QMetaType::QTime: - return QV4::Encode(m_v4Engine->newDateObject(QDateTime(QDate(1970,1,1), *reinterpret_cast<const QTime *>(ptr)))); + return QV4::Encode(e->newDateObject(QDateTime(QDate(1970,1,1), *reinterpret_cast<const QTime *>(ptr)))); case QMetaType::QRegExp: - return QV4::Encode(m_v4Engine->newRegExpObject(*reinterpret_cast<const QRegExp *>(ptr))); + return QV4::Encode(e->newRegExpObject(*reinterpret_cast<const QRegExp *>(ptr))); case QMetaType::QObjectStar: - return QV4::QObjectWrapper::wrap(m_v4Engine, *reinterpret_cast<QObject* const *>(ptr)); + return QV4::QObjectWrapper::wrap(e, *reinterpret_cast<QObject* const *>(ptr)); case QMetaType::QStringList: { bool succeeded = false; - QV4::Scope scope(m_v4Engine); - QV4::ScopedValue retn(scope, QV4::SequencePrototype::fromVariant(m_v4Engine, variant, &succeeded)); + QV4::Scope scope(e); + QV4::ScopedValue retn(scope, QV4::SequencePrototype::fromVariant(e, variant, &succeeded)); if (succeeded) return retn.asReturnedValue(); - return QV4::Encode(m_v4Engine->newArrayObject(*reinterpret_cast<const QStringList *>(ptr))); + return QV4::Encode(e->newArrayObject(*reinterpret_cast<const QStringList *>(ptr))); } case QMetaType::QVariantList: - return arrayFromVariantList(this, *reinterpret_cast<const QVariantList *>(ptr)); + return arrayFromVariantList(e, *reinterpret_cast<const QVariantList *>(ptr)); case QMetaType::QVariantMap: - return objectFromVariantMap(this, *reinterpret_cast<const QVariantMap *>(ptr)); + return objectFromVariantMap(e, *reinterpret_cast<const QVariantMap *>(ptr)); case QMetaType::QJsonValue: - return QV4::JsonObject::fromJsonValue(m_v4Engine, *reinterpret_cast<const QJsonValue *>(ptr)); + return QV4::JsonObject::fromJsonValue(e, *reinterpret_cast<const QJsonValue *>(ptr)); case QMetaType::QJsonObject: - return QV4::JsonObject::fromJsonObject(m_v4Engine, *reinterpret_cast<const QJsonObject *>(ptr)); + return QV4::JsonObject::fromJsonObject(e, *reinterpret_cast<const QJsonObject *>(ptr)); case QMetaType::QJsonArray: - return QV4::JsonObject::fromJsonArray(m_v4Engine, *reinterpret_cast<const QJsonArray *>(ptr)); + return QV4::JsonObject::fromJsonArray(e, *reinterpret_cast<const QJsonArray *>(ptr)); case QMetaType::QLocale: - return QQmlLocale::wrap(this, *reinterpret_cast<const QLocale*>(ptr)); + return QQmlLocale::wrap(e->v8Engine, *reinterpret_cast<const QLocale*>(ptr)); default: break; } if (const QMetaObject *vtmo = QQmlValueTypeFactory::metaObjectForMetaType(type)) - return QV4::QQmlValueTypeWrapper::create(m_v4Engine, variant, vtmo, type); + return QV4::QQmlValueTypeWrapper::create(e, variant, vtmo, type); } else { - QV4::Scope scope(m_v4Engine); + QV4::Scope scope(e); if (type == qMetaTypeId<QQmlListReference>()) { typedef QQmlListReferencePrivate QDLRP; QDLRP *p = QDLRP::get((QQmlListReference*)ptr); @@ -428,41 +426,41 @@ QV4::ReturnedValue QV8Engine::fromVariant(const QVariant &variant) } else if (type == qMetaTypeId<QJSValue>()) { const QJSValue *value = reinterpret_cast<const QJSValue *>(ptr); QJSValuePrivate *valuep = QJSValuePrivate::get(*value); - return valuep->getValue(m_v4Engine); + return valuep->getValue(e); } else if (type == qMetaTypeId<QList<QObject *> >()) { // XXX Can this be made more by using Array as a prototype and implementing // directly against QList<QObject*>? const QList<QObject *> &list = *(QList<QObject *>*)ptr; - QV4::Scoped<QV4::ArrayObject> a(scope, m_v4Engine->newArrayObject()); + QV4::Scoped<QV4::ArrayObject> a(scope, e->newArrayObject()); a->arrayReserve(list.count()); QV4::ScopedValue v(scope); for (int ii = 0; ii < list.count(); ++ii) - a->arrayPut(ii, (v = QV4::QObjectWrapper::wrap(m_v4Engine, list.at(ii)))); + a->arrayPut(ii, (v = QV4::QObjectWrapper::wrap(e, list.at(ii)))); a->setArrayLengthUnchecked(list.count()); return a.asReturnedValue(); } else if (QMetaType::typeFlags(type) & QMetaType::PointerToQObject) { - return QV4::QObjectWrapper::wrap(m_v4Engine, *reinterpret_cast<QObject* const *>(ptr)); + return QV4::QObjectWrapper::wrap(e, *reinterpret_cast<QObject* const *>(ptr)); } bool objOk; QObject *obj = QQmlMetaType::toQObject(variant, &objOk); if (objOk) - return QV4::QObjectWrapper::wrap(m_v4Engine, obj); + return QV4::QObjectWrapper::wrap(e, obj); bool succeeded = false; - QV4::ScopedValue retn(scope, QV4::SequencePrototype::fromVariant(m_v4Engine, variant, &succeeded)); + QV4::ScopedValue retn(scope, QV4::SequencePrototype::fromVariant(e, variant, &succeeded)); if (succeeded) return retn.asReturnedValue(); if (const QMetaObject *vtmo = QQmlValueTypeFactory::metaObjectForMetaType(type)) - return QV4::QQmlValueTypeWrapper::create(m_v4Engine, variant, vtmo, type); + return QV4::QQmlValueTypeWrapper::create(e, variant, vtmo, type); } // XXX TODO: To be compatible, we still need to handle: // + QObjectList // + QList<int> - return QV4::Encode(m_v4Engine->newVariantObject(variant)); + return QV4::Encode(e->newVariantObject(variant)); } QNetworkAccessManager *QV8Engine::networkAccessManager() diff --git a/src/qml/qml/v8/qv8engine_p.h b/src/qml/qml/v8/qv8engine_p.h index b63a052bb7..131be2e8e3 100644 --- a/src/qml/qml/v8/qv8engine_p.h +++ b/src/qml/qml/v8/qv8engine_p.h @@ -199,7 +199,7 @@ public: static QVariant toVariant(QV4::ExecutionEngine *e, const QV4::ValueRef value, int typeHint, bool createJSValueForObjects = true, V8ObjectSet *visitedObjects = 0); static QVariant objectToVariant(QV4::ExecutionEngine *e, QV4::Object *o, V8ObjectSet *visitedObjects = 0); - QV4::ReturnedValue fromVariant(const QVariant &); + static QV4::ReturnedValue fromVariant(QV4::ExecutionEngine *e, const QVariant &); static QVariantMap variantMapFromJS(QV4::Object *o) { return objectToVariant(o->engine(), o).toMap(); } |