mirror of
https://github.com/golang/go.git
synced 2025-05-31 23:25:39 +00:00
[dev.link] cmd/internal/dwarf: revise Abbrevs() signature
The function Abbrevs() was returning an array of structures by value, which is not very efficient (this was showing up in a kubernetes kubelet linker profile). Switch the function to return a slice instead. Improves linker DwarfGenerateDebugSyms running time when linking the compiler in compilebench: DwarfGenerateDebugSyms 29.2ms ±144% 23.9ms ±125% -17.89% (p=0.000 n=99+99) Change-Id: I1132816563f208c63eb82a7932d9f2bcb2455324 Reviewed-on: https://go-review.googlesource.com/c/go/+/231558 Run-TryBot: Than McIntosh <thanm@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
24814e2147
commit
6ea7a196d0
@ -398,9 +398,9 @@ func expandPseudoForm(form uint8) uint8 {
|
||||
|
||||
// Abbrevs() returns the finalized abbrev array for the platform,
|
||||
// expanding any DW_FORM pseudo-ops to real values.
|
||||
func Abbrevs() [DW_NABRV]dwAbbrev {
|
||||
func Abbrevs() []dwAbbrev {
|
||||
if abbrevsFinalized {
|
||||
return abbrevs
|
||||
return abbrevs[:]
|
||||
}
|
||||
for i := 1; i < DW_NABRV; i++ {
|
||||
for j := 0; j < len(abbrevs[i].attr); j++ {
|
||||
@ -408,7 +408,7 @@ func Abbrevs() [DW_NABRV]dwAbbrev {
|
||||
}
|
||||
}
|
||||
abbrevsFinalized = true
|
||||
return abbrevs
|
||||
return abbrevs[:]
|
||||
}
|
||||
|
||||
// abbrevs is a raw table of abbrev entries; it needs to be post-processed
|
||||
|
Loading…
x
Reference in New Issue
Block a user