Add: Allocation path tracking for debugging

Added HAK_RET_ALLOC_BLOCK_TRACED macro with path identifiers:
- ALLOC_PATH_BACKEND (1): SuperSlab backend allocation
- ALLOC_PATH_TLS_POP (2): TLS SLL pop
- ALLOC_PATH_CARVE (3): Linear carve
- ALLOC_PATH_FREELIST (4): Freelist pop
- ALLOC_PATH_HOTMAG (5): Hot magazine
- ALLOC_PATH_FASTCACHE (6): Fast cache
- ALLOC_PATH_BUMP (7): Bump allocator
- ALLOC_PATH_REFILL (8): Refill/adoption

Usage:
  HAKMEM_ALLOC_PATH_TRACE=1 ./larson_hakmem ...

Logs first 20 allocations with path ID for debugging.

Updated SuperSlab backend to use traced version.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-11-29 05:38:30 +09:00
parent 5582cbc22c
commit d5645ec42d
2 changed files with 42 additions and 3 deletions

View File

@ -62,7 +62,7 @@ void* hak_tiny_alloc_superslab_backend_legacy(int class_idx)
meta->used++;
atomic_fetch_add_explicit(&chunk->total_active_blocks, 1, memory_order_relaxed);
HAK_RET_ALLOC_BLOCK(class_idx, base);
HAK_RET_ALLOC_BLOCK_TRACED(class_idx, base, ALLOC_PATH_BACKEND);
}
}
chunk = chunk->next_chunk;
@ -102,7 +102,7 @@ void* hak_tiny_alloc_superslab_backend_legacy(int class_idx)
meta->used++;
atomic_fetch_add_explicit(&new_chunk->total_active_blocks, 1, memory_order_relaxed);
HAK_RET_ALLOC_BLOCK(class_idx, base);
HAK_RET_ALLOC_BLOCK_TRACED(class_idx, base, ALLOC_PATH_BACKEND);
}
}
@ -205,7 +205,7 @@ void* hak_tiny_alloc_superslab_backend_shared(int class_idx)
meta->used++;
atomic_fetch_add_explicit(&ss->total_active_blocks, 1, memory_order_relaxed);
HAK_RET_ALLOC_BLOCK(class_idx, base);
HAK_RET_ALLOC_BLOCK_TRACED(class_idx, base, ALLOC_PATH_BACKEND);
}
/*