Add TLSF allocator and refactor allocation API

- Introduced TLSF allocator with thread-safe wrapper and integrated into AllocationManager.
- Extended AllocationManagerDesc for TLSF config; made properties settable.
- Refactored AllocationHandle to encapsulate function pointers and state, replacing direct field access with methods.
- Updated all memory-related structs to use new AllocationHandle API.
- Added ReplaceIfZeros utility to MemoryUtility.
- Improved IndexOfNullByte performance.
- Minor fix in MemoryLeakException output order.
- FreeList now uses a fixed 64KB refill budget.
- Bumped version to 1.6.21; removed MHP_ENABLE_STACKTRACE from Debug.
- Updated Program.cs to test TLSF allocator and manage allocation lifecycle.
This commit is contained in:
2026-05-05 22:13:58 +09:00
parent 627c1da928
commit d3e497c7d8
14 changed files with 303 additions and 114 deletions

View File

@@ -49,7 +49,7 @@ public unsafe struct MemoryBlock : IDisposable
throw new InvalidOperationException("Target allocation handle does not support allocation.");
}
_buffer = handle.Alloc(handle.State, size, alignment, allocationOption);
_buffer = handle.Alloc(size, alignment, allocationOption);
_size = size;
_alignment = alignment;
@@ -110,7 +110,7 @@ public unsafe struct MemoryBlock : IDisposable
return;
}
_buffer = _allocationHandle.Realloc(_allocationHandle.State, _buffer, _size, newSize, _alignment, option);
_buffer = _allocationHandle.Realloc(_buffer, _size, newSize, _alignment, option);
_size = newSize;
#if MHP_ENABLE_SAFETY_CHECKS
_memoryHandle.Update(_buffer, _size);
@@ -265,7 +265,7 @@ public unsafe struct MemoryBlock : IDisposable
if (_allocationHandle.Free != null)
{
_allocationHandle.Free(_allocationHandle.State, _buffer);
_allocationHandle.Free(_buffer);
}
#if MHP_ENABLE_SAFETY_CHECKS