aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4sequenceobject.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2025-08-27 14:45:00 +0200
committerUlf Hermann <ulf.hermann@qt.io>2025-09-01 19:25:21 +0200
commitc9d95333468b5aedb7d83089df40208946164c00 (patch)
tree83b20161ab23b7eb673319aa168c7a6a5318b3e9 /src/qml/jsruntime/qv4sequenceobject.cpp
parenta99022e243059c564a53978120cfc9bd54289034 (diff)
QtQml: Avoid repeated retrieval of Heap::Sequence::storagePointer()
Each of those incurs a null check. Pick-to: 6.10 6.9 6.8 Task-number: QTBUG-129972 Task-number: QTBUG-139025 Change-Id: I7bc96755629d57e1a8f0bf69e0db8de8df737665 Reviewed-by: Olivier De Cannière <olivier.decanniere@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4sequenceobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4sequenceobject.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/qml/jsruntime/qv4sequenceobject.cpp b/src/qml/jsruntime/qv4sequenceobject.cpp
index d9fab3cda9..e30b2d8ac2 100644
--- a/src/qml/jsruntime/qv4sequenceobject.cpp
+++ b/src/qml/jsruntime/qv4sequenceobject.cpp
@@ -243,17 +243,18 @@ static void replaceInline(Heap::Sequence *p, qsizetype index, const QVariant &it
static void removeLastInline(Heap::Sequence *p, qsizetype num)
{
const QMetaSequence m = p->metaSequence();
+ void *container = p->storagePointer();
if (m.canEraseRangeAtIterator() && m.hasRandomAccessIterator() && num > 1) {
- void *i = m.end(p->storagePointer());
+ void *i = m.end(container);
m.advanceIterator(i, -num);
- void *j = m.end(p->storagePointer());
- m.eraseRangeAtIterator(p->storagePointer(), i, j);
+ void *j = m.end(container);
+ m.eraseRangeAtIterator(container, i, j);
m.destroyIterator(i);
m.destroyIterator(j);
} else {
for (int i = 0; i < num; ++i)
- m.removeValueAtEnd(p->storagePointer());
+ m.removeValueAtEnd(container);
}
}