diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2025-08-27 14:45:00 +0200 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2025-09-01 19:25:21 +0200 |
| commit | c9d95333468b5aedb7d83089df40208946164c00 (patch) | |
| tree | 83b20161ab23b7eb673319aa168c7a6a5318b3e9 /src/qml/jsruntime/qv4sequenceobject.cpp | |
| parent | a99022e243059c564a53978120cfc9bd54289034 (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.cpp | 9 |
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); } } |
