mirror of
https://github.com/golang/go
synced 2024-11-17 12:54:47 -07:00
runtime: avoid large object stack copy in traceStackTable.dump
Following up on the previous CL, this CL removes a unnecessary stack copy of a large object in a range loop. This drops another 64 KiB from (*traceStackTable).dump's stack frame so it is now roughly 80 bytes depending on architecture, which will easily fit on the system stack. For #53979. Change-Id: I16f642f6f1982d0ed0a62371bf2e19379e5870eb Reviewed-on: https://go-review.googlesource.com/c/go/+/422955 Reviewed-by: Michael Knyszek <mknyszek@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Run-TryBot: Austin Clements <austin@google.com>
This commit is contained in:
parent
d4a3466519
commit
0293a1f308
@ -1060,8 +1060,8 @@ func traceFrames(bufp traceBufPtr, pcs []uintptr) ([]traceFrame, traceBufPtr) {
|
||||
// releases all memory and resets state.
|
||||
func (tab *traceStackTable) dump() {
|
||||
bufp := traceFlush(0, 0)
|
||||
for _, stk := range tab.tab {
|
||||
stk := stk.ptr()
|
||||
for i, _ := range tab.tab {
|
||||
stk := tab.tab[i].ptr()
|
||||
for ; stk != nil; stk = stk.link.ptr() {
|
||||
var frames []traceFrame
|
||||
frames, bufp = traceFrames(bufp, stk.stack())
|
||||
|
Loading…
Reference in New Issue
Block a user