]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/obj: build ctxt.Text during Sym init
authorJosh Bleecher Snyder <josharian@gmail.com>
Thu, 13 Apr 2017 00:43:30 +0000 (17:43 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 13 Apr 2017 02:29:05 +0000 (02:29 +0000)
Instead of constructing ctxt.Text in Flushplist,
which will be called concurrently,
do it in InitTextSym, which must be called serially.
This allows us to avoid a mutex for ctxt.Text,
and preserves the existing ordering of functions
for debug output.

Passes toolstash-check.

Updates #15756

Change-Id: I6322b4da24f9f0db7ba25e5b1b50e8d3be2deb37
Reviewed-on: https://go-review.googlesource.com/40502
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/internal/obj/plist.go

index 069e9541306d2e40442b679fad7a6b1cc1d6403e..ebfd3610212fc07e6d67a42f8048dd1d1119cdb3 100644 (file)
@@ -107,9 +107,6 @@ func Flushplist(ctxt *Link, plist *Plist, newprog ProgAlloc) {
                linkpcln(ctxt, s)
                makeFuncDebugEntry(ctxt, plist.Curfn, s)
        }
-
-       // Add to running list in ctxt.
-       ctxt.Text = append(ctxt.Text, text...)
 }
 
 func (ctxt *Link) InitTextSym(s *LSym, flag int) {
@@ -135,6 +132,7 @@ func (ctxt *Link) InitTextSym(s *LSym, flag int) {
        s.Set(AttrNeedCtxt, flag&NEEDCTXT != 0)
        s.Set(AttrNoFrame, flag&NOFRAME != 0)
        s.Type = STEXT
+       ctxt.Text = append(ctxt.Text, s)
 }
 
 func (ctxt *Link) Globl(s *LSym, size int64, flag int) {