Commit 7b5f94e7 authored by Josh Bleecher Snyder's avatar Josh Bleecher Snyder

cmd/internal/obj: cache dwarfSym

Follow-up to review feedback from
mdempsky on CL 40507.

Reduces mutex contention by about 1%.

Change-Id: I540ea6772925f4a59e58f55a3458eff15880c328
Reviewed-on: https://go-review.googlesource.com/40575
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent adc80c06
...@@ -324,11 +324,12 @@ type LSym struct { ...@@ -324,11 +324,12 @@ type LSym struct {
// A FuncInfo contains extra fields for STEXT symbols. // A FuncInfo contains extra fields for STEXT symbols.
type FuncInfo struct { type FuncInfo struct {
Args int32 Args int32
Locals int32 Locals int32
Text *Prog Text *Prog
Autom []*Auto Autom []*Auto
Pcln Pcln Pcln Pcln
dwarfSym *LSym
} }
// Attribute is a set of symbol attributes. // Attribute is a set of symbol attributes.
......
...@@ -560,7 +560,10 @@ func (ctxt *Link) dwarfSym(s *LSym) *LSym { ...@@ -560,7 +560,10 @@ func (ctxt *Link) dwarfSym(s *LSym) *LSym {
if s.Type != STEXT { if s.Type != STEXT {
ctxt.Diag("dwarfSym of non-TEXT %v", s) ctxt.Diag("dwarfSym of non-TEXT %v", s)
} }
return ctxt.Lookup(dwarf.InfoPrefix+s.Name, int(s.Version)) if s.FuncInfo.dwarfSym == nil {
s.FuncInfo.dwarfSym = ctxt.Lookup(dwarf.InfoPrefix+s.Name, int(s.Version))
}
return s.FuncInfo.dwarfSym
} }
// populateDWARF fills in the DWARF Debugging Information Entry for TEXT symbol s. // populateDWARF fills in the DWARF Debugging Information Entry for TEXT symbol s.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment