Closed dnr closed 1 month ago
This regenerates the amd64 assembly to avoid issues with clobbering BP.
This includes avo's fix https://github.com/mmcloughlin/avo/pull/174 for issue https://github.com/mmcloughlin/avo/issues/156: it turns out BP actually is callee-save, and this can cause crashes when the new (Go 1.21) frame pointer stack unwinder tries to unwind a stack frame that has called one of these functions.
This passes this repo's tests. I also wrote a crash reproducer that would reliably crash, which fails to crash with this change.
Benchstat results: https://gist.github.com/dnr/5e35fb9331043d29a457aae81f3a8649 This is from my laptop without controlling for anything, so almost meaningless, but seems like there's no regression.
Thanks!
This regenerates the amd64 assembly to avoid issues with clobbering BP.
This includes avo's fix https://github.com/mmcloughlin/avo/pull/174 for issue https://github.com/mmcloughlin/avo/issues/156: it turns out BP actually is callee-save, and this can cause crashes when the new (Go 1.21) frame pointer stack unwinder tries to unwind a stack frame that has called one of these functions.
This passes this repo's tests. I also wrote a crash reproducer that would reliably crash, which fails to crash with this change.