mirror of
https://github.com/Cesarus85/ringfall-mjolnir-vr.git
synced 2026-10-22 13:00:29 +02:00
c1_sampler2.py launches CL.Exe CREATE_SUSPENDED so the main thread handle is owned outright - no Toolhelp, no OpenThread, which is what defeated the first version - then tight-loops Suspend/Wow64GetThreadContext/Resume and accumulates over N compiles. It works: 333,991 C1 samples for m6only.c vs 163,140 for the control over 6 runs each, showing C1 does ~2x the work when the inline expression is present. Two traps caught by verification, not assumed: - int3-padding "function starts" are labels, not entry points; five top-ranked ones took zero breakpoint hits. Raw sampled EIPs are the valid targets. - the top differential EIPs are hot shared parser code: breakpointing the five highest-excess raw EIPs fires in BOTH compiles at the 250-hit cap, so the "excess" is largely volume, not expression specificity. dbg32 now prints hit counts with 8 hex digits instead of 1 (250 printed as "a" before), so differential counting is possible at all. Requirements for a next attempt recorded: count-only mode with a raised cap, a work-matched control (same expression, non-commutative operators), and call-target attribution instead of int3 boundaries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>