void Deallocator::deallocateSlowCase(void* object) { BASSERT(!deallocateFastCase(object)); if (!object) return; if (isSmallOrMedium(object)) { processObjectLog(); m_objectLog.push(object); return; } BeginTag* beginTag = LargeChunk::beginTag(object); if (!beginTag->isXLarge()) return deallocateLarge(object); return deallocateXLarge(object); }
void Deallocator::deallocateSlowCase(void* object) { BASSERT(!deallocateFastCase(object)); if (!m_isBmallocEnabled) { free(object); return; } BASSERT(objectType(nullptr) == XLarge); if (!object) return; if (isSmallOrMedium(object)) { processObjectLog(); m_objectLog.push(object); return; } if (!isXLarge(object)) return deallocateLarge(object); return deallocateXLarge(object); }