void* Allocator::allocateImpl(size_t alignment, size_t size, bool crashOnFailure) { BASSERT(isPowerOfTwo(alignment)); if (!m_isBmallocEnabled) { void* result = nullptr; if (posix_memalign(&result, alignment, size)) return nullptr; return result; } if (!size) size = alignment; if (size <= smallMax && alignment <= smallMax) return allocate(roundUpToMultipleOf(alignment, size)); std::lock_guard<StaticMutex> lock(PerProcess<Heap>::mutex()); Heap* heap = PerProcess<Heap>::getFastCase(); if (crashOnFailure) return heap->allocateLarge(lock, alignment, size); return heap->tryAllocateLarge(lock, alignment, size); }