- 1
- 2
- 3
- 4
- 5
- 6
- 7
// round up the blockSize to fit an integer number of pointers...
m_blockSize = static_cast<QMPoolSize>(sizeof(QFreeBlock));//start with one
uint_fast16_t nblocks = uf16_1; //# free blocks in a memory block
while (m_blockSize < static_cast<QMPoolSize>(blockSize)) {
m_blockSize += static_cast<QMPoolSize>(sizeof(QFreeBlock));
++nblocks;
}
в догонку к #17616. делим на 4 с округлением, с помощью цикла.
P.S. касты и цикл само собой разумеется в ж не нужны:
m_blockSize = (blockSize + sizeof(QFreeBlock)-1) & ~(sizeof(QFreeBlock)-1);
nblocks = m_blockSize / sizeof(QFreeBlock);
bormand 01.08.2016 17:46 # 0
Dummy00001 01.08.2016 18:07 # 0
bormand 01.08.2016 18:14 # +2
Dummy00001 01.08.2016 18:22 # 0
bormand 01.08.2016 18:26 # +1
А с unsigned'ом походу боится проебать зависание на слишком больших blockSize.
bormand 01.08.2016 18:35 # 0
Да, так и есть. Добавил и всё соптимизнулось в сдвиг.
Dummy00001 01.08.2016 18:45 # +1
bormand 01.08.2016 18:46 # 0
Dummy00001 01.08.2016 19:07 # +6
армагедон - skynet просто съоптимизировало человечество в nop.
3_dar 02.08.2016 22:38 # +1
kegdan 02.08.2016 12:11 # +1
bormand 02.08.2016 20:31 # 0
Просто люди деградировали.
kegdan 03.08.2016 02:46 # 0