diff options
author | Lars Knoll <lars.knoll@digia.com> | 2014-04-05 20:23:20 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2014-07-22 13:48:54 +0200 |
commit | b11ec085703a0b019c8115ff505ee6e2553fd4f1 (patch) | |
tree | 3336b31ba690f9b200b7fee8cc133aa4bf2e7837 /src/qml/qml | |
parent | 05f17e841f971d3c8f635cc044c60c970c2055c9 (diff) |
Move Managed data into it's own subclass
This prepares for moving over to a d pointer scheme,
where Managed subclasses don't hold any data directly. This
is required to be able to move over to a modern GC.
Change-Id: I3f59633ac07a7da461bd2d4f0f9f3a8e3b0baf02
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml')
-rw-r--r-- | src/qml/qml/qqmlbinding.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/qqmlproperty.cpp | 6 | ||||
-rw-r--r-- | src/qml/qml/qqmlvaluetypewrapper.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/v8/qqmlbuiltinfunctions.cpp | 2 | ||||
-rw-r--r-- | src/qml/qml/v8/qv8engine.cpp | 16 |
5 files changed, 15 insertions, 15 deletions
diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index 68037c558b..b580225d81 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -185,7 +185,7 @@ void QQmlBinding::update(QQmlPropertyPrivate::WriteFlags flags) QV4::Scope scope(ep->v4engine()); QV4::ScopedFunctionObject f(scope, v4function.value()); Q_ASSERT(f); - if (f->bindingKeyFlag) { + if (f->bindingKeyFlag()) { QQmlSourceLocation loc = f->as<QV4::QQmlBindingFunction>()->bindingLocation; url = loc.sourceFile; lineNumber = loc.line; diff --git a/src/qml/qml/qqmlproperty.cpp b/src/qml/qml/qqmlproperty.cpp index c9d5f76fbd..96f303dcb5 100644 --- a/src/qml/qml/qqmlproperty.cpp +++ b/src/qml/qml/qqmlproperty.cpp @@ -1534,7 +1534,7 @@ bool QQmlPropertyPrivate::writeBinding(QObject *object, return false; } else if (isVarProperty) { QV4::FunctionObject *f = result->asFunctionObject(); - if (f && f->bindingKeyFlag) { + if (f && f->bindingKeyFlag()) { // we explicitly disallow this case to avoid confusion. Users can still store one // in an array in a var property if they need to, but the common case is user error. expression->delayedError()->setErrorDescription(QLatin1String("Invalid use of Qt.binding() in a binding declaration.")); @@ -1552,7 +1552,7 @@ bool QQmlPropertyPrivate::writeBinding(QObject *object, writeValueProperty(object, core, QVariant(), context, flags); } else if (type == qMetaTypeId<QJSValue>()) { QV4::FunctionObject *f = result->asFunctionObject(); - if (f && f->bindingKeyFlag) { + if (f && f->bindingKeyFlag()) { expression->delayedError()->setErrorDescription(QLatin1String("Invalid use of Qt.binding() in a binding declaration.")); expression->delayedError()->setErrorObject(object); return false; @@ -1570,7 +1570,7 @@ bool QQmlPropertyPrivate::writeBinding(QObject *object, expression->delayedError()->setErrorObject(object); return false; } else if (QV4::FunctionObject *f = result->asFunctionObject()) { - if (f->bindingKeyFlag) + if (f->bindingKeyFlag()) expression->delayedError()->setErrorDescription(QLatin1String("Invalid use of Qt.binding() in a binding declaration.")); else expression->delayedError()->setErrorDescription(QLatin1String("Unable to assign a function to a property of any type other than var.")); diff --git a/src/qml/qml/qqmlvaluetypewrapper.cpp b/src/qml/qml/qqmlvaluetypewrapper.cpp index 9a87493e54..db35171528 100644 --- a/src/qml/qml/qqmlvaluetypewrapper.cpp +++ b/src/qml/qml/qqmlvaluetypewrapper.cpp @@ -197,7 +197,7 @@ bool QmlValueTypeWrapper::isEqualTo(Managed *m, Managed *other) assert(lv); if (QV4::VariantObject *rv = other->as<VariantObject>()) - return lv->isEqual(rv->data); + return lv->isEqual(rv->ExecutionEngine::ScarceResourceData::data); if (QV4::QmlValueTypeWrapper *v = other->as<QmlValueTypeWrapper>()) return lv->isEqual(v->toVariant()); @@ -362,7 +362,7 @@ void QmlValueTypeWrapper::put(Managed *m, const StringRef name, const ValueRef v QV4::ScopedFunctionObject f(scope, value); if (f) { - if (!f->bindingKeyFlag) { + if (!f->bindingKeyFlag()) { // assigning a JS function to a non-var-property is not allowed. QString error = QLatin1String("Cannot assign JavaScript function to value-type property"); Scoped<String> e(scope, r->v8->toString(error)); diff --git a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp index 67e9e80efb..322e81c681 100644 --- a/src/qml/qml/v8/qqmlbuiltinfunctions.cpp +++ b/src/qml/qml/v8/qqmlbuiltinfunctions.cpp @@ -1181,7 +1181,7 @@ QQmlBindingFunction::QQmlBindingFunction(FunctionObject *originalFunction) , originalFunction(originalFunction) { setVTable(staticVTable()); - bindingKeyFlag = true; + managedData()->bindingKeyFlag = true; } void QQmlBindingFunction::initBindingLocation() diff --git a/src/qml/qml/v8/qv8engine.cpp b/src/qml/qml/v8/qv8engine.cpp index 8305649177..b0de533ea8 100644 --- a/src/qml/qml/v8/qv8engine.cpp +++ b/src/qml/qml/v8/qv8engine.cpp @@ -130,7 +130,7 @@ QVariant QV8Engine::toVariant(const QV4::ValueRef value, int typeHint) QV4::Scope scope(m_v4Engine); if (QV4::VariantObject *v = value->as<QV4::VariantObject>()) - return v->data; + return v->QV4::ExecutionEngine::ScarceResourceData::data; if (typeHint == QVariant::Bool) return QVariant(value->toBoolean()); @@ -444,9 +444,9 @@ void QV8Engine::initializeGlobal() qt_add_sqlexceptions(m_v4Engine); { - for (uint i = 0; i < m_v4Engine->globalObject->internalClass->size; ++i) { - if (m_v4Engine->globalObject->internalClass->nameMap.at(i)) - m_illegalNames.insert(m_v4Engine->globalObject->internalClass->nameMap.at(i)->toQString()); + for (uint i = 0; i < m_v4Engine->globalObject->internalClass()->size; ++i) { + if (m_v4Engine->globalObject->internalClass()->nameMap.at(i)) + m_illegalNames.insert(m_v4Engine->globalObject->internalClass()->nameMap.at(i)->toQString()); } } @@ -882,7 +882,7 @@ bool QV8Engine::metaTypeFromJS(const QV4::ValueRef value, int type, void *data) return true; if (value->as<QV4::VariantObject>() && name.endsWith('*')) { int valueType = QMetaType::type(name.left(name.size()-1)); - QVariant &var = value->as<QV4::VariantObject>()->data; + QVariant &var = value->as<QV4::VariantObject>()->QV4::ExecutionEngine::ScarceResourceData::data; if (valueType == var.userType()) { // We have T t, T* is requested, so return &t. *reinterpret_cast<void* *>(data) = var.data(); @@ -893,7 +893,7 @@ bool QV8Engine::metaTypeFromJS(const QV4::ValueRef value, int type, void *data) while (proto) { bool canCast = false; if (QV4::VariantObject *vo = proto->as<QV4::VariantObject>()) { - const QVariant &v = vo->data; + const QVariant &v = vo->QV4::ExecutionEngine::ScarceResourceData::data; canCast = (type == v.userType()) || (valueType && (valueType == v.userType())); } else if (proto->as<QV4::QObjectWrapper>()) { @@ -969,7 +969,7 @@ QVariant QV8Engine::variantFromJS(const QV4::ValueRef value, if (QV4::RegExpObject *re = value->as<QV4::RegExpObject>()) return re->toQRegExp(); if (QV4::VariantObject *v = value->as<QV4::VariantObject>()) - return v->data; + return v->QV4::ExecutionEngine::ScarceResourceData::data; if (value->as<QV4::QObjectWrapper>()) return qVariantFromValue(qtObjectFromJS(value)); if (QV4::QmlValueTypeWrapper *v = value->as<QV4::QmlValueTypeWrapper>()) @@ -1003,7 +1003,7 @@ QObject *QV8Engine::qtObjectFromJS(const QV4::ValueRef value) QV4::Scoped<QV4::VariantObject> v(scope, value); if (v) { - QVariant variant = v->data; + QVariant variant = v->QV4::ExecutionEngine::ScarceResourceData::data; int type = variant.userType(); if (type == QMetaType::QObjectStar) return *reinterpret_cast<QObject* const *>(variant.constData()); |