问题 / Problem
Static-name bytecode operations currently load a String constant and call intern_property_key_js_string every time they execute. In the fixed 20-million-property-read investigation this caused about 20 million intern calls; constant_property_key accounted for 33.45% inclusive sampled cycles. Atom-table deduplication avoids duplicate names but does not eliminate repeated hashing, string processing and lookup.
静态名称指令每次执行都从常量池取出字符串并重新 intern。固定 2,000 万次属性读取产生约 2,000 万次 intern;constant_property_key inclusive 采样占比为 33.45%。Atom 表去重无法消除重复哈希、字符串处理与查表。
Evidence / 证据: CPU report. Follow-up to #4; build on #6's array-key early check, implemented in Eric-Song-Nop#1.
修复 / Scope
- Link static-name constants to runtime-local Atoms at bytecode publication; VM accesses reuse the mapping, including resumed activations. / 发布字节码时链接静态名称 Atom,VM 和恢复执行的帧直接复用。
- Retain original String constants and serialized representation; rebuild mappings in each target Runtime. / 保留字符串常量与序列化形式,在目标 Runtime 重新链接。
- Integrate Atom ownership, publication rollback and bytecode cleanup; validate mapping coverage and ownership. / 接入 Atom 所有权、失败回滚与字节码回收,校验映射覆盖及引用所有权。
- Keep existing PropertyKey handle ownership in this first fix. / 第一轮保留现有 PropertyKey 引用管理。
验证 / Validation
Compare against perf/array-own-key-early-check@4e2e69b: relevant Rust tests, strict production Clippy, full Test262 outcome comparison; serial release before/after benchmarks for fixed property reads and Richards, plus publication-time and mapping-storage measurements. Keep diagnostics off for performance conclusions; do not assume the inclusive CPU share is an achievable speedup.
以数组优化分支 4e2e69b 为基线:相关 Rust 测试、生产目标 strict Clippy、完整 Test262 outcome 对照;固定属性读取和 Richards 的串行 release 对比,另测发布时间与映射存储开销。性能结论关闭诊断,不以 inclusive CPU 占比直接承诺收益。
问题 / Problem
Static-name bytecode operations currently load a String constant and call
intern_property_key_js_stringevery time they execute. In the fixed 20-million-property-read investigation this caused about 20 million intern calls;constant_property_keyaccounted for 33.45% inclusive sampled cycles. Atom-table deduplication avoids duplicate names but does not eliminate repeated hashing, string processing and lookup.静态名称指令每次执行都从常量池取出字符串并重新 intern。固定 2,000 万次属性读取产生约 2,000 万次 intern;
constant_property_keyinclusive 采样占比为 33.45%。Atom 表去重无法消除重复哈希、字符串处理与查表。Evidence / 证据: CPU report. Follow-up to #4; build on #6's array-key early check, implemented in Eric-Song-Nop#1.
修复 / Scope
验证 / Validation
Compare against
perf/array-own-key-early-check@4e2e69b: relevant Rust tests, strict production Clippy, full Test262 outcome comparison; serial release before/after benchmarks for fixed property reads and Richards, plus publication-time and mapping-storage measurements. Keep diagnostics off for performance conclusions; do not assume the inclusive CPU share is an achievable speedup.以数组优化分支
4e2e69b为基线:相关 Rust 测试、生产目标 strict Clippy、完整 Test262 outcome 对照;固定属性读取和 Richards 的串行 release 对比,另测发布时间与映射存储开销。性能结论关闭诊断,不以 inclusive CPU 占比直接承诺收益。