| @system unittest |
| { |
| import std.experimental.allocator.building_blocks.quantizer; |
| |
| import std.experimental.allocator.building_blocks.free_tree : FreeTree; |
| import std.experimental.allocator.gc_allocator : GCAllocator; |
| |
| size_t roundUpToMultipleOf(size_t s, uint base) |
| { |
| auto rem = s % base; |
| return rem ? s + base - rem : s; |
| } |
| |
| // Quantize small allocations to a multiple of cache line, large ones to a |
| // multiple of page size |
| alias MyAlloc = Quantizer!( |
| FreeTree!GCAllocator, |
| n => roundUpToMultipleOf(n, n <= 16_384 ? 64 : 4096)); |
| MyAlloc alloc; |
| const buf = alloc.allocate(256); |
| assert(buf.ptr); |
| } |
| |