Files
hakmem/core/box/smallobject_hotbox_v4_box.h
Moe Charm (CI) 52c65da783 Phase v4-mid-0: Small-object v4 型・IF 足場(箱化モジュール化)
- SmallHeapCtx/SmallPageMeta/SmallClassHeap typedef alias 追加
- SmallSegment struct (base/num_pages/owner_tid/magic) を smallsegment_v4_box.h に定義
- SmallColdIface_v4 direct function prototypes (refill/retire/remote_push/drain)
- smallobject_hotbox_v4.c の internal/public API 分離(small_segment_v4_internal)
- direct function stubs 実装(SmallColdIfaceV4 delegate 形式)
- ENV OFF デフォルト(ENABLED=0/CLASSES=0)で既存挙動 100% 不変
- ビルド成功・sanity 確認(mixed/C6-heavy、segv/assert なし)
- CURRENT_TASK.md に Phase v4-mid-0 記録

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-10 23:23:07 +09:00

59 lines
1.8 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// smallobject_hotbox_v4_box.h - SmallObject HotHeap v4 (型スケルトン)
//
// 役割:
// - v4 のページ / クラス / TLS コンテキスト型と API 宣言だけを定義する箱。
// - 挙動はまだ v3/v1 のまま。alloc/free 本体は後続フェーズで実装する。
#pragma once
#include <stddef.h>
#include <stdbool.h>
#include <stdint.h>
#include "tiny_geometry_box.h"
#ifndef SMALLOBJECT_NUM_CLASSES
#define SMALLOBJECT_NUM_CLASSES TINY_NUM_CLASSES
#endif
struct small_segment_v4;
// 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_segment_v4* segment; // PF3: segment ownerNULLなら Tiny v1 経路)
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 (実装は後続フェーズで追加)
// SmallPageMeta を external で使う場合のエイリアス
typedef small_page_v4 SmallPageMeta;
typedef small_class_heap_v4 SmallClassHeap;
typedef small_heap_ctx_v4 SmallHeapCtx;
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);