From: Simon Hausmann Date: Mon, 3 Jun 2013 13:23:20 +0000 (+0200) Subject: Get rid of QV8Engine::isQObject and QV8QObjectWrapper::isQObject X-Git-Tag: upstream/5.2.1~669^2~341 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=db628b278bdf67edbcfd60a4502dcc283f7a502d;p=platform%2Fupstream%2Fqtdeclarative.git Get rid of QV8Engine::isQObject and QV8QObjectWrapper::isQObject The goal is to ultimately get rid of those wrapper instances Change-Id: I77d806e09c163e4e41915dd6cee3082099f1a3b1 Reviewed-by: Lars Knoll --- diff --git a/src/qml/qml/v4/qv4serialize.cpp b/src/qml/qml/v4/qv4serialize.cpp index 692f478..ab6a544 100644 --- a/src/qml/qml/v4/qv4serialize.cpp +++ b/src/qml/qml/v4/qv4serialize.cpp @@ -223,10 +223,10 @@ void Serialize::serialize(QByteArray &data, const QV4::Value &v, QV8Engine *engi char *buffer = data.data() + offset; memcpy(buffer, pattern.constData(), length*sizeof(QChar)); - } else if (engine->isQObject(v)) { + } else if (QV4::QObjectWrapper *qobjectWrapper = v.as()) { // XXX TODO: Generalize passing objects between the main thread and worker scripts so // that others can trivially plug in their elements. - QQmlListModel *lm = qobject_cast(engine->toQObject(v)); + QQmlListModel *lm = qobject_cast(qobjectWrapper->object); if (lm && lm->agent()) { QQmlListModelWorkerAgent *agent = lm->agent(); agent->addref(); diff --git a/src/qml/qml/v8/qjsvalue.cpp b/src/qml/qml/v8/qjsvalue.cpp index 32fd249..3e64942 100644 --- a/src/qml/qml/v8/qjsvalue.cpp +++ b/src/qml/qml/v8/qjsvalue.cpp @@ -983,8 +983,7 @@ bool QJSValue::isQObject() const if (!o) return false; - QV8Engine *v8 = d->engine()->publicEngine->handle(); - return v8->isQObject(d->value); + return o->as() != 0; } QT_END_NAMESPACE diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index 1c00517..66eedc5 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -809,7 +809,8 @@ bool QV8Engine::metaTypeFromJS(const QV4::Value &value, int type, void *data) { return true; } break; case QMetaType::QObjectStar: { - if (isQObject(value) || value.isNull()) { + QV4::QObjectWrapper *qobjectWrapper = value.as(); + if (qobjectWrapper || value.isNull()) { *reinterpret_cast(data) = qtObjectFromJS(value); return true; } break; @@ -885,7 +886,7 @@ bool QV8Engine::metaTypeFromJS(const QV4::Value &value, int type, void *data) { const QVariant &v = vo->data; canCast = (type == v.userType()) || (valueType && (valueType == v.userType())); } - else if (isQObject(QV4::Value::fromObject(proto))) { + else if (proto->as()) { QByteArray className = name.left(name.size()-1); if (QObject *qobject = qtObjectFromJS(QV4::Value::fromObject(proto))) canCast = qobject->qt_metacast(className) != 0; @@ -953,7 +954,7 @@ QVariant QV8Engine::variantFromJS(const QV4::Value &value, return re->toQRegExp(); if (QV4::VariantObject *v = value.as()) return v->data; - if (isQObject(value)) + if (value.as()) return qVariantFromValue(qtObjectFromJS(value)); if (QV4::QmlValueTypeWrapper *v = value.as()) return v->toVariant(); diff --git a/src/qml/qml/v8/qv8engine_p.h b/src/qml/qml/v8/qv8engine_p.h index 9c2d1d9..896650d 100644 --- a/src/qml/qml/v8/qv8engine_p.h +++ b/src/qml/qml/v8/qv8engine_p.h @@ -259,7 +259,6 @@ public: // Return a JS wrapper for the given QObject \a object inline QV4::Value newQObject(QObject *object); inline QV4::Value newQObject(QObject *object, const ObjectOwnership ownership); - inline bool isQObject(const QV4::Value &value); inline QObject *toQObject(const QV4::Value &value); // Return a JS string for the given QString \a string @@ -354,11 +353,6 @@ private: Q_DISABLE_COPY(QV8Engine) }; -bool QV8Engine::isQObject(const QV4::Value &value) -{ - return value.isObject() ? m_qobjectWrapper.isQObject(value) : false; -} - QObject *QV8Engine::toQObject(const QV4::Value &value) { return value.isObject() ? m_qobjectWrapper.toQObject(value) : 0; diff --git a/src/qml/qml/v8/qv8qobjectwrapper.cpp b/src/qml/qml/v8/qv8qobjectwrapper.cpp index 86bbcf3..ee1a9b7 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper.cpp +++ b/src/qml/qml/v8/qv8qobjectwrapper.cpp @@ -417,11 +417,6 @@ void QV8QObjectWrapper::init(QV8Engine *engine) v4->functionPrototype->defineDefaultProperty(v4, QStringLiteral("disconnect"), Disconnect); } -bool QV8QObjectWrapper::isQObject(v8::Handle obj) -{ - return obj->v4Value().as() != 0; -} - QObject *QV8QObjectWrapper::toQObject(v8::Handle obj) { QV4::QObjectWrapper *wrapper = obj->v4Value().as(); diff --git a/src/qml/qml/v8/qv8qobjectwrapper_p.h b/src/qml/qml/v8/qv8qobjectwrapper_p.h index af84afb..65a3836 100644 --- a/src/qml/qml/v8/qv8qobjectwrapper_p.h +++ b/src/qml/qml/v8/qv8qobjectwrapper_p.h @@ -167,7 +167,6 @@ public: void destroy(); v8::Handle newQObject(QObject *object); - bool isQObject(v8::Handle); QObject *toQObject(v8::Handle); enum RevisionMode { IgnoreRevision, CheckRevision };