diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2016-05-23 10:38:33 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2016-05-23 20:35:10 +0000 |
commit | 81dfb0bdebb5432828f77eb4c0b1eb3a8366d8de (patch) | |
tree | cbcc92ff221c074c28198bcf336f2391a76c6738 /src/qml/qml/qqmlvmemetaobject.cpp | |
parent | 15b2e6da74a2af8a903124222bd0cb586264a188 (diff) |
Remove QQmlVMEMetaData::AliasData::contextIdx
We can store the id (in QQmlContextData::idValues) for the alias target in the QV4::CompiledData::Alias.
Change-Id: I3f32648aef28d96ddedff6b3d2cde75969a46fa1
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/qml/qml/qqmlvmemetaobject.cpp')
-rw-r--r-- | src/qml/qml/qqmlvmemetaobject.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/qml/qml/qqmlvmemetaobject.cpp b/src/qml/qml/qqmlvmemetaobject.cpp index c82da696c8..54a9566162 100644 --- a/src/qml/qml/qqmlvmemetaobject.cpp +++ b/src/qml/qml/qqmlvmemetaobject.cpp @@ -148,10 +148,11 @@ void QQmlVMEMetaObjectEndpoint::tryConnect() int sigIdx = metaObject->methodOffset() + aliasId + metaObject->compiledObject->nProperties; metaObject->activate(metaObject->object, sigIdx, 0); } else { + const QV4::CompiledData::Alias *aliasData = &metaObject->compiledObject->aliasTable()[aliasId]; QQmlVMEMetaData::AliasData *d = metaObject->metaData->aliasData() + aliasId; if (!d->isObjectAlias()) { QQmlContextData *ctxt = metaObject->ctxt; - QObject *target = ctxt->idValues[d->contextIdx].data(); + QObject *target = ctxt->idValues[aliasData->targetObjectId].data(); if (!target) return; @@ -834,6 +835,7 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * if (id < aliasCount) { QQmlVMEMetaData::AliasData *d = metaData->aliasData() + id; + const QV4::CompiledData::Alias *aliasData = &compiledObject->aliasTable()[id]; if (d->flags & QML_ALIAS_FLAG_PTR && c == QMetaObject::ReadProperty) *reinterpret_cast<void **>(a[0]) = 0; @@ -843,7 +845,7 @@ int QQmlVMEMetaObject::metaCall(QObject *o, QMetaObject::Call c, int _id, void * QQmlContext *context = ctxt->asQQmlContext(); QQmlContextPrivate *ctxtPriv = QQmlContextPrivate::get(context); - QObject *target = ctxtPriv->data->idValues[d->contextIdx].data(); + QObject *target = ctxtPriv->data->idValues[aliasData->targetObjectId].data(); if (!target) return -1; @@ -1166,8 +1168,10 @@ bool QQmlVMEMetaObject::aliasTarget(int index, QObject **target, int *coreIndex, if (!ctxt) return false; - QQmlVMEMetaData::AliasData *d = metaData->aliasData() + (index - propOffset() - compiledObject->nProperties); - *target = ctxt->idValues[d->contextIdx].data(); + const int aliasId = index - propOffset() - compiledObject->nProperties; + const QV4::CompiledData::Alias *aliasData = &compiledObject->aliasTable()[aliasId]; + QQmlVMEMetaData::AliasData *d = metaData->aliasData() + aliasId; + *target = ctxt->idValues[aliasData->targetObjectId].data(); if (!*target) return false; @@ -1188,7 +1192,7 @@ void QQmlVMEMetaObject::connectAlias(int aliasId) if (!aliasEndpoints) aliasEndpoints = new QQmlVMEMetaObjectEndpoint[compiledObject->nAliases]; - QQmlVMEMetaData::AliasData *d = metaData->aliasData() + aliasId; + const QV4::CompiledData::Alias *aliasData = &compiledObject->aliasTable()[aliasId]; QQmlVMEMetaObjectEndpoint *endpoint = aliasEndpoints + aliasId; if (endpoint->metaObject.data()) { @@ -1198,7 +1202,7 @@ void QQmlVMEMetaObject::connectAlias(int aliasId) } endpoint->metaObject = this; - endpoint->connect(&ctxt->idValues[d->contextIdx].bindings); + endpoint->connect(&ctxt->idValues[aliasData->targetObjectId].bindings); endpoint->tryConnect(); } |