julia
f153efe3 - codegen: stop using an atomic RMW for coverage and allocation counters

Commit
3 days ago
codegen: stop using an atomic RMW for coverage and allocation counters `de2f3f2594` fixed the memory corruption reported in #59355 by putting a lock around the coverage hash table. In the same change the counter update itself was switched from a volatile load/add/store to an atomic read-modify-write, which is what makes instrumented code much slower on 1.12 than on 1.10/1.11. On an arm64 machine the lattice-Boltzmann kernel from #62424 costs 6.3x uninstrumented on master against 2.5x on 1.11, even though master executes fewer counter updates. The atomic prevents the inner loops from unrolling and issues an `ldadd` to the same cache line on every iteration. Go back to the volatile update. The counters were never exact, the emitted counts are not statement execution counts in any useful sense, and the lock that actually fixed #59355 stays. Fixes #62424 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Committer
Parents
Loading