void* LinearAllocator::allocImpl(size_t size) { size = ALIGN(size); if (size > mMaxAllocSize && !fitsInCurrentPage(size)) { ALOGV("Exceeded max size %zu > %zu", size, mMaxAllocSize); // Allocation is too large, create a dedicated page for the allocation Page* page = newPage(size); mDedicatedPageCount++; page->setNext(mPages); mPages = page; if (!mCurrentPage) mCurrentPage = mPages; return start(page); } ensureNext(size); void* ptr = mNext; mNext = ((char*)mNext) + size; mWastedSpace -= size; return ptr; }
void QFirm::intraInitialize() { ensureNext(capacity * output()); updateStarted(); }
const void * CStreamMerger::nextRowGE(const void * seek, unsigned numFields, bool & wasCompleteMatch, const SmartStepExtra & stepExtra) { if (ensureNext(seek, numFields, wasCompleteMatch, &stepExtra)) return consumeTop(); return NULL; }
unsigned CStreamMerger::queryNextInput() { if (ensureNext()) return mergeheap[0]; return NotFound; }
const void * CStreamMerger::queryNextRow() { if (ensureNext()) return pending[mergeheap[0]]; return NULL; }
const void * CStreamMerger::nextRow() { if (ensureNext()) return consumeTop(); return NULL; }
bool CStreamMerger::ensureNext() { bool isCompleteMatch = true; return ensureNext(NULL, 0, isCompleteMatch, NULL); }