]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: add global autogeneratedPos
authorJosh Bleecher Snyder <josharian@gmail.com>
Tue, 28 Mar 2017 20:52:14 +0000 (13:52 -0700)
committerJosh Bleecher Snyder <josharian@gmail.com>
Thu, 30 Mar 2017 16:53:40 +0000 (16:53 +0000)
We use an "autogenerated" position in several places.
Rather than recreate it each time, make one early on and reuse it.
This removes the creation of new positions during the backend,
which was not concurrency-safe.

Updates #15756

Change-Id: Ic116b2e60f0e99de1a2ea87fe763831b50b645f8
Reviewed-on: https://go-review.googlesource.com/38915
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/gc/alg.go
src/cmd/compile/internal/gc/go.go
src/cmd/compile/internal/gc/init.go
src/cmd/compile/internal/gc/main.go
src/cmd/compile/internal/gc/subr.go

index a63ae091fe818bcc24b13b7fc46709e1546c5b76..945f0f93f59c0db1232aae94eedc18933b0835f0 100644 (file)
@@ -186,7 +186,7 @@ func genhash(sym *Sym, t *Type) {
                fmt.Printf("genhash %v %v\n", sym, t)
        }
 
-       lineno = makePos(nil, 1, 0) // less confusing than end of input
+       lineno = autogeneratedPos // less confusing than end of input
        dclcontext = PEXTERN
        markdcl()
 
@@ -364,7 +364,7 @@ func geneq(sym *Sym, t *Type) {
                fmt.Printf("geneq %v %v\n", sym, t)
        }
 
-       lineno = makePos(nil, 1, 0) // less confusing than end of input
+       lineno = autogeneratedPos // less confusing than end of input
        dclcontext = PEXTERN
        markdcl()
 
index 5d5f5a231c90a43b28634a4898bfc1085ca6b4f1..f4ef28376cef1d513c1d0335298953651f3348c9 100644 (file)
@@ -286,6 +286,8 @@ var nodfp *Node
 
 var disable_checknil int
 
+var autogeneratedPos src.XPos
+
 // interface to back end
 
 type Arch struct {
index 8355a735a9274ebce12c58b99572e2ca810778e4..0ebbffd83aca4e410e39c572cb609d778eebfd28 100644 (file)
@@ -4,8 +4,6 @@
 
 package gc
 
-import "cmd/internal/src"
-
 // a function named init is a special case.
 // it is called by the initialization before
 // main is run. to make it unique within a
@@ -77,7 +75,7 @@ func anyinit(n []*Node) bool {
 }
 
 func fninit(n []*Node) {
-       lineno = makePos(src.NewFileBase("<autogenerated>", "<autogenerated>"), 1, 0)
+       lineno = autogeneratedPos
        nf := initfix(n)
        if !anyinit(nf) {
                return
index 413ff0e879824069268adf6be67ec4a294a1a855..a676597911adf3f52f612b313245f2919b02a8f9 100644 (file)
@@ -351,6 +351,8 @@ func Main(archInit func(*Arch)) {
        dclcontext = PEXTERN
        nerrors = 0
 
+       autogeneratedPos = makePos(src.NewFileBase("<autogenerated>", "<autogenerated>"), 1, 0)
+
        timings.Start("fe", "loadsys")
        loadsys()
 
index df18606009cccd0c91071d277102f6eccd129c92..f6690e0f1bb7129930cd2a504c4d600787d10825 100644 (file)
@@ -1717,7 +1717,7 @@ func genwrapper(rcvr *Type, method *Field, newnam *Sym, iface int) {
                fmt.Printf("genwrapper rcvrtype=%v method=%v newnam=%v\n", rcvr, method, newnam)
        }
 
-       lineno = makePos(src.NewFileBase("<autogenerated>", "<autogenerated>"), 1, 0)
+       lineno = autogeneratedPos
 
        dclcontext = PEXTERN
        markdcl()