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>
This commit is contained in:
@ -1,11 +1,26 @@
|
||||
// smallsegment_v4_box.h - Small-object専用 Segment Box の宣言だけを置く足場
|
||||
// Phase PF2: 挙動はまだ変えず、型と API だけを先行定義する。
|
||||
// smallsegment_v4_box.h - Small-object専用 Segment Box の型定義と API 宣言
|
||||
// Phase v4-mid-0: SmallSegment の型と API だけを先行定義。実装は後フェーズ。
|
||||
#pragma once
|
||||
|
||||
typedef struct small_segment_v4 small_segment_v4;
|
||||
#include <stdint.h>
|
||||
|
||||
// class_idx ごとに小さな Segment を確保/再利用する想定。
|
||||
// Phase PF3: Superslab/Tiny v1 からの lease を経由してページを供給する。
|
||||
// Forward declaration for SmallPageMeta
|
||||
struct small_page_v4;
|
||||
|
||||
// SmallSegment: class_idx ごとに小さな segment を管理
|
||||
// 基本構造: base, page metadata array
|
||||
typedef struct small_segment_v4 {
|
||||
uintptr_t base; // Segment base address
|
||||
uint32_t num_pages; // Number of pages in segment
|
||||
uint32_t owner_tid; // Thread ID that owns this segment
|
||||
uint32_t magic; // Magic number for validation
|
||||
// Page metadata array (flexible, actual size depends on SMALL_PAGE_SIZE / SMALL_SEGMENT_SIZE)
|
||||
// struct small_page_v4* page_meta[];
|
||||
} small_segment_v4;
|
||||
|
||||
// API: Segment 取得・解放
|
||||
small_segment_v4* smallsegment_v4_acquire(int class_idx);
|
||||
void* smallsegment_v4_alloc_page(small_segment_v4* seg, int class_idx);
|
||||
void smallsegment_v4_release_if_empty(small_segment_v4* seg, void* page, int class_idx);
|
||||
|
||||
// API: ページメタデータの取得
|
||||
struct small_page_v4* smallsegment_v4_page_meta_of(small_segment_v4* seg, void* ptr);
|
||||
|
||||
Reference in New Issue
Block a user