From 245ef3a15739c9e0ee6ae4faf21e85574906c25a Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Sat, 15 Apr 2017 08:00:08 -0700 Subject: [PATCH] cmd/compile: look up more runtime symbols before SSA begins This avoids concurrent runtime package lookups. Updates #15756 Change-Id: I9e2cbd042aba44923f0d03e6ca5b4eb60fa9e7ea Reviewed-on: https://go-review.googlesource.com/40853 Run-TryBot: Josh Bleecher Snyder TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- src/cmd/compile/internal/gc/go.go | 7 ++++++- src/cmd/compile/internal/gc/ssa.go | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/cmd/compile/internal/gc/go.go b/src/cmd/compile/internal/gc/go.go index b3edb0ed22..fde38e27ff 100644 --- a/src/cmd/compile/internal/gc/go.go +++ b/src/cmd/compile/internal/gc/go.go @@ -265,5 +265,10 @@ var ( assertE2I, assertE2I2, assertI2I, - assertI2I2 *obj.LSym + assertI2I2, + goschedguarded, + writeBarrier, + writebarrierptr, + typedmemmove, + typedmemclr *obj.LSym ) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index b54e0bca45..cfb973405d 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -85,6 +85,11 @@ func initssaconfig() { assertE2I2 = Sysfunc("assertE2I2") assertI2I = Sysfunc("assertI2I") assertI2I2 = Sysfunc("assertI2I2") + goschedguarded = Sysfunc("goschedguarded") + writeBarrier = Sysfunc("writeBarrier") + writebarrierptr = Sysfunc("writebarrierptr") + typedmemmove = Sysfunc("typedmemmove") + typedmemclr = Sysfunc("typedmemclr") } // buildssa builds an SSA function. @@ -4942,7 +4947,20 @@ func (e *ssafn) UseWriteBarrier() bool { } func (e *ssafn) Syslook(name string) *obj.LSym { - return Linksym(syslook(name).Sym) + switch name { + case "goschedguarded": + return goschedguarded + case "writeBarrier": + return writeBarrier + case "writebarrierptr": + return writebarrierptr + case "typedmemmove": + return typedmemmove + case "typedmemclr": + return typedmemclr + } + Fatalf("unknown Syslook func %v", name) + return nil } func (n *Node) Typ() ssa.Type { -- 2.48.1