• Austin Clements's avatar
    runtime: eliminate uses of BP on amd64 · 20a6ff72
    Austin Clements authored
    Any place that clobbers BP in the runtime can potentially interfere
    with frame pointer unwinding with GOEXPERIMENT=framepointer.  This
    change eliminates uses of BP in the runtime to address this problem.
    We have spare registers everywhere this occurs, so there's no downside
    to eliminating BP.  Where possible, this uses the same new register as
    the amd64p32 runtime, which doesn't use BP due to restrictions placed
    on it by NaCL.
    
    One nice side effect of this is that it will let perf/VTune unwind the
    call stack even through a call to systemstack, which will let us get
    really good call graphs from the garbage collector.
    
    Change-Id: I0ffa14cb4dd2b613a7049b8ec59df37c52286212
    Reviewed-on: https://go-review.googlesource.com/3390Reviewed-by: 's avatarMinux Ma <minux@golang.org>
    Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    20a6ff72
sys_openbsd_amd64.s 7.26 KB