void* HeapImpl::MapAlloc(size_t size) { size = (size + kPageSize - 1) & ~(kPageSize - 1); MapAllocation* allocation = reinterpret_cast<MapAllocation*>(AllocLocked(sizeof(MapAllocation))); void* ptr = MapAligned(size, kChunkSize); if (!ptr) { FreeLocked(allocation); abort(); // throw std::bad_alloc; } allocation->ptr = ptr; allocation->size = size; allocation->next = map_allocation_list_; map_allocation_list_ = allocation; return ptr; }
void* HeapImpl::Alloc(size_t size) { std::lock_guard<std::mutex> lk(m_); return AllocLocked(size); }