| 1993 | |
| 1994 | template <class ListBuilder, class Limits> |
| 1995 | MemBlock* FreeObjects<ListBuilder, Limits>::newBlock(MemPool* pool, unsigned slot) |
| 1996 | { |
| 1997 | size_t size = Limits::getSize(slot); |
| 1998 | |
| 1999 | if (currentExtent && currentExtent->spaceRemaining < size) |
| 2000 | { |
| 2001 | // put remaining memory into appr. slots |
| 2002 | while (currentExtent->spaceRemaining >= Limits::getSize(0) && |
| 2003 | currentExtent->spaceRemaining > ListBuilder::MEM_OVERHEAD) |
| 2004 | { |
| 2005 | unsigned sl1 = Limits::getSlot(currentExtent->spaceRemaining, SLOT_FREE); |
| 2006 | if (sl1 == ~0u) |
| 2007 | break; |
| 2008 | |
| 2009 | unsigned size1 = Limits::getSize(sl1); |
| 2010 | MemBlock* b = currentExtent->newBlock(size1); |
| 2011 | |
| 2012 | listBuilder.putElement(&freeObjects[sl1], b); |
| 2013 | } |
| 2014 | currentExtent->spaceRemaining = 0; |
| 2015 | listBuilder.decrUsage(currentExtent, pool); |
| 2016 | } |
| 2017 | |
| 2018 | if (!(currentExtent && currentExtent->spaceRemaining)) |
| 2019 | { |
| 2020 | size_t size2 = size; |
| 2021 | pool->newExtent(size2, ¤tExtent); |
| 2022 | currentExtent->incrUsage(); |
| 2023 | } |
| 2024 | |
| 2025 | return currentExtent->newBlock(size); |
| 2026 | } |
| 2027 | |
| 2028 | template <class ListBuilder, class Limits> |
| 2029 | FreeObjects<ListBuilder, Limits>::~FreeObjects() |
nothing calls this directly
no test coverage detected