char * LargeHeapBucket::TryAllocFromFreeList(Recycler * recycler, size_t sizeCat, ObjectInfoBits attributes) { Assert((attributes & InternalObjectInfoBitMask) == attributes); LargeHeapBlockFreeList* freeListEntry = this->freeList; // Walk through the free list, find the first entry that can fit our desired size while (freeListEntry) { LargeHeapBlock* heapBlock = freeListEntry->heapBlock; char * memBlock = heapBlock->TryAllocFromFreeList(sizeCat, attributes); if (memBlock) { // Don't need to verify zero fill here since we will do it in LargeHeapBucket::Alloc return memBlock; } else { #if DBG LargeAllocationVerboseTrace(recycler->GetRecyclerFlagsTable(), _u("Unable to allocate object of size 0x%x from freelist\n"), sizeCat); #endif } freeListEntry = freeListEntry->next; } return nullptr; }