ea8b693785
Prototype Fe4/Wide8 classes that replace LongArray(4)/LongArray(8) with named @JvmField Long fields. Every LongArray access compiles to laload/lastore (3 bytecode insns + implicit bounds check); Fe4 field access compiles to getfield/putfield (2 insns, zero checks). Bytecode impact (core arithmetic files): LongArray: 464 bounds-checked array ops (U256: 150, FieldP: 119, Fused: 195) Fe4: 0 bounds-checked ops, 203 direct field accesses JVM benchmark results (HotSpot C2, best of 3 rounds, alternating order): FieldP.mul: 40 ns → 41 ns (~equal, C2 fully optimizes hot mul) FieldP.sqr: 48 ns → 30 ns (+60% faster) FieldP.add: 9 ns → 6 ns (+34% faster) FieldP.sub: 10 ns → 6 ns (+55% faster) U256.sqrWide: 37 ns → 17 ns (+114% faster) The gains are largest for sqr/add/sub which have high ratios of array read-modify-write patterns. Expected to be even larger on Android ART (limited inlining) and Kotlin/Native LLVM (AOT, no profile-guided bounds check elimination). https://claude.ai/code/session_01Sxi6Gpxbstuj3Y8TBY7XrU