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>
This commit is contained in:
parent
a99022e243
commit
c9d9533346
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue