// smallobject_hotbox_v4_box.h - SmallObject HotHeap v4 (型スケルトン) // // 役割: // - v4 のページ / クラス / TLS コンテキスト型と API 宣言だけを定義する箱。 // - 挙動はまだ v3/v1 のまま。alloc/free 本体は後続フェーズで実装する。 #pragma once #include #include #include #include "tiny_geometry_box.h" #ifndef SMALLOBJECT_NUM_CLASSES #define SMALLOBJECT_NUM_CLASSES TINY_NUM_CLASSES #endif // Page metadata for v4 HotBox typedef struct small_page_v4 { void* freelist; uint16_t used; uint16_t capacity; uint8_t class_idx; uint8_t flags; uint32_t block_size; uint8_t* base; void* slab_ref; // Superslab / lease token (box境界で扱う) struct small_page_v4* next; } small_page_v4; // Per-class heap state (current / partial / full lists) typedef struct small_class_heap_v4 { small_page_v4* current; small_page_v4* partial_head; small_page_v4* full_head; uint32_t partial_count; } small_class_heap_v4; // TLS heap context (per-thread) typedef struct small_heap_ctx_v4 { small_class_heap_v4 cls[SMALLOBJECT_NUM_CLASSES]; } small_heap_ctx_v4; // TLS accessor (実装は後続フェーズで追加) small_heap_ctx_v4* small_heap_ctx_v4_get(void); // Hot path API (C7-only stub; later phases will expand) void* small_heap_alloc_fast_v4(small_heap_ctx_v4* ctx, int class_idx); void small_heap_free_fast_v4(small_heap_ctx_v4* ctx, int class_idx, void* ptr); int smallobject_hotbox_v4_can_own(int class_idx, void* ptr);