From fbce2e58e6f29dc8dde5618597d53e1b1007b503 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 3 Dec 2019 12:21:46 +0100 Subject: Get rid of QArrayData::sharedNull() Remove the last places where those got used and avoid allocations when we resize to 0. Change-Id: Ib553f4e7ce7cc24c31da15a55a86d18bdf1cc5c3 Reviewed-by: Thiago Macieira --- src/corelib/tools/qarraydata.cpp | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) (limited to 'src/corelib/tools/qarraydata.cpp') diff --git a/src/corelib/tools/qarraydata.cpp b/src/corelib/tools/qarraydata.cpp index 42599bbf2a4..1a369a879ae 100644 --- a/src/corelib/tools/qarraydata.cpp +++ b/src/corelib/tools/qarraydata.cpp @@ -147,25 +147,7 @@ qCalculateGrowingBlockSize(size_t elementCount, size_t elementSize, size_t heade return result; } -// End of qtools_p.h implementation - -QT_WARNING_PUSH -QT_WARNING_DISABLE_GCC("-Wmissing-field-initializers") - -const QArrayData QArrayData::shared_null[2] = { - { Q_BASIC_ATOMIC_INITIALIZER(-1), 0, 0 }, // shared null - /* zero initialized terminator */}; - -static const QArrayData emptyNotNullShared[2] = { - { Q_BASIC_ATOMIC_INITIALIZER(-1), 0, 0 }, // shared empty - /* zero initialized terminator */}; - -QT_WARNING_POP - -static const QArrayData &qt_array_empty = emptyNotNullShared[0]; - -static inline size_t calculateBlockSize(size_t &capacity, size_t objectSize, size_t headerSize, - uint options) +static inline size_t calculateBlockSize(size_t &capacity, size_t objectSize, size_t headerSize, uint options) { // Calculate the byte size // allocSize = objectSize * capacity + headerSize, but checked for overflow @@ -199,9 +181,8 @@ void *QArrayData::allocate(QArrayData **dptr, size_t objectSize, size_t alignmen && !(alignment & (alignment - 1))); if (capacity == 0) { - // optimization for empty headers - *dptr = const_cast(&qt_array_empty); - return sharedNullData(); + *dptr = nullptr; + return nullptr; } size_t headerSize = sizeof(QArrayData); -- cgit v1.2.3