aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2025-08-27 14:30:50 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2025-09-02 12:01:54 +0000
commit81b71266ff66b7ebefc383b2e8595f428a579392 (patch)
tree8eb5cfb53b8b7ced88e4c7faa4c851ef0f7d5719
parent500fb9107daa0ee5fed56dc42fe7d8051e10d886 (diff)
QtQml: Inline Sequence's shiftInline into its ownly user
It gets in the way if kept seperate. Pick-to: 6.8 Task-number: QTBUG-129972 Task-number: QTBUG-139025 Change-Id: I105ee78e89ce561ec27e8badc27aa94a717ace39 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io> (cherry picked from commit 609a06be462088044cb84999d86eb5fd2fbb0e81) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> (cherry picked from commit 48ab3d5c66bd57eb1850eaaf361a8774fdb1b9ad)
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp51
1 files changed, 21 insertions, 30 deletions
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index 433a203098..c8cc6a6f50 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -201,34 +201,6 @@ QVariant Heap::Sequence::toVariant() const
return QVariant(listType(), m_container);
}
-static QVariant shiftInline(Heap::Sequence *p)
-{
- void *storage = p->storagePointer();
- Q_ASSERT(storage); // Must readReference() before
- const QMetaType v = p->valueMetaType();
- const QMetaSequence m = p->metaSequence();
-
- QVariant result;
- void *resultData = createVariantData(v, &result);
- m.valueAtIndex(storage, 0, resultData);
-
- if (m.canRemoveValueAtBegin()) {
- m.removeValueAtBegin(storage);
- return result;
- }
-
- QVariant t;
- void *tData = createVariantData(v, &t);
- for (qsizetype i = 1, end = m.size(storage); i < end; ++i) {
- m.valueAtIndex(storage, i, tData);
- m.setValueAtIndex(storage, i - 1, tData);
- }
- m.removeValueAtEnd(storage);
-
- return result;
-}
-
-
template<typename Action>
void convertAndDo(const QVariant &item, const QMetaType v, Action action)
{
@@ -580,12 +552,31 @@ ReturnedValue SequencePrototype::method_shift(
if (!len)
RETURN_UNDEFINED();
- ScopedValue result(scope, scope.engine->fromVariant(shiftInline(p)));
+ void *storage = p->storagePointer();
+ Q_ASSERT(storage); // Must readReference() before
+ const QMetaType v = p->valueMetaType();
+ const QMetaSequence m = p->metaSequence();
+
+ QVariant shifted;
+ void *resultData = createVariantData(v, &shifted);
+ m.valueAtIndex(storage, 0, resultData);
+
+ if (m.canRemoveValueAtBegin()) {
+ m.removeValueAtBegin(storage);
+ } else {
+ QVariant t;
+ void *tData = createVariantData(v, &t);
+ for (qsizetype i = 1, end = m.size(storage); i < end; ++i) {
+ m.valueAtIndex(storage, i, tData);
+ m.setValueAtIndex(storage, i - 1, tData);
+ }
+ m.removeValueAtEnd(storage);
+ }
if (p->object())
p->storeReference();
- return result->asReturnedValue();
+ return scope.engine->fromVariant(shifted);
}
ReturnedValue SequencePrototype::newSequence(