Files
hakmem/core/tiny_debug_ring.h
Moe Charm (CI) 1a8652a91a Phase TLS-UNIFY-3: C6 intrusive freelist implementation (完成)
Implement C6 ULTRA intrusive LIFO freelist with ENV gating:
- Single-linked LIFO using next pointer at USER+1 offset
- tiny_next_store/tiny_next_load for pointer access (single source of truth)
- Segment learning via ss_fast_lookup (per-class seg_base/seg_end)
- ENV gate: HAKMEM_TINY_C6_ULTRA_INTRUSIVE_FL (default OFF)
- Counters: c6_ifl_push/pop/fallback in FREE_PATH_STATS

Files:
- core/box/tiny_ultra_tls_box.h: Added c6_head field for intrusive LIFO
- core/box/tiny_ultra_tls_box.c: Pop/push with intrusive branching (case 6)
- core/box/tiny_c6_ultra_intrusive_env_box.h: ENV gate (new)
- core/box/tiny_c6_intrusive_freelist_box.h: L1 pure LIFO (new)
- core/tiny_debug_ring.h: C6_IFL events
- core/box/free_path_stats_box.h/c: c6_ifl_* counters

A/B Test Results (1M iterations, ws=200, 257-512B):
- ENV_OFF (array): 56.6 Mop/s avg
- ENV_ON (intrusive): 57.6 Mop/s avg (+1.8%, within noise)
- Counters verified: c6_ifl_push=265890, c6_ifl_pop=265815, fallback=0

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

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-12 16:26:42 +09:00

55 lines
1.8 KiB
C

#ifndef TINY_DEBUG_RING_H
#define TINY_DEBUG_RING_H
#include <stdint.h>
#include <stddef.h>
#include "hakmem_build_flags.h"
// Tiny Debug Ring Trace (Phase 8 tooling)
// Trace control:
// - HAKMEM_TINY_TRACE_RING=1
// - or HAKMEM_TRACE=ring
// Records recent alloc/free events and dumps them on SIGSEGV.
enum {
TINY_RING_EVENT_ALLOC_ENTER = 1,
TINY_RING_EVENT_ALLOC_SUCCESS,
TINY_RING_EVENT_ALLOC_NULL,
TINY_RING_EVENT_ALLOC_REFILL_START,
TINY_RING_EVENT_ALLOC_REFILL_NULL,
TINY_RING_EVENT_ALLOC_BIND,
TINY_RING_EVENT_FREE_ENTER,
TINY_RING_EVENT_FREE_FAST,
TINY_RING_EVENT_FREE_REMOTE,
TINY_RING_EVENT_FREE_LOCAL,
TINY_RING_EVENT_FREE_RETURN_MAG,
TINY_RING_EVENT_SUPERSLAB_ADOPT,
TINY_RING_EVENT_SUPERSLAB_ALLOC,
TINY_RING_EVENT_SUPERSLAB_PUBLISH,
TINY_RING_EVENT_SUPERSLAB_ADOPT_FAIL,
TINY_RING_EVENT_REMOTE_PUSH,
TINY_RING_EVENT_REMOTE_INVALID,
TINY_RING_EVENT_REMOTE_DRAIN,
TINY_RING_EVENT_OWNER_ACQUIRE,
TINY_RING_EVENT_OWNER_RELEASE,
TINY_RING_EVENT_FRONT_BYPASS,
TINY_RING_EVENT_MAILBOX_PUBLISH,
TINY_RING_EVENT_MAILBOX_FETCH,
TINY_RING_EVENT_MAILBOX_FETCH_NULL,
TINY_RING_EVENT_ROUTE,
// TLS SLL anomalies (investigation aid, gated by HAKMEM_TINY_SLL_RING)
TINY_RING_EVENT_TLS_SLL_REJECT = 0x7F10,
TINY_RING_EVENT_TLS_SLL_SENTINEL = 0x7F11,
TINY_RING_EVENT_TLS_SLL_HDR_CORRUPT = 0x7F12,
// C6 Intrusive Freelist (Phase TLS-UNIFY-3)
TINY_RING_EVENT_C6_IFL_PUSH = 0x7F20,
TINY_RING_EVENT_C6_IFL_POP = 0x7F21,
TINY_RING_EVENT_C6_IFL_EMPTY = 0x7F22 // pop miss (empty)
};
// Function declarations (implementation in tiny_debug_ring.c)
void tiny_debug_ring_init(void);
void tiny_debug_ring_record(uint16_t event, uint16_t class_idx, void* ptr, uintptr_t aux);
#endif // TINY_DEBUG_RING_H