diff options
| author | Josh Bleecher Snyder <josharian@gmail.com> | 2017-04-06 13:42:31 -0700 |
|---|---|---|
| committer | Josh Bleecher Snyder <josharian@gmail.com> | 2017-04-07 16:57:03 +0000 |
| commit | 63c1aff60b68dba82ca05d0ae6d0c67bcb0583c1 (patch) | |
| tree | f792076a5b28f0f92c6779220c5260b472598323 /src/cmd/internal/obj/ppc64 | |
| parent | 817c1023b06a7e0dbd180609b63e06a64b6ebeaf (diff) | |
| download | go-63c1aff60b68dba82ca05d0ae6d0c67bcb0583c1.tar.xz | |
cmd/internal/obj: eagerly initialize assemblers
CL 38662 changed the x86 assembler to be eagerly
initialized, for a concurrent backend.
This CL puts in place a proper mechanism for doing so,
and switches all architectures to use it.
Passes toolstash-check -all.
Updates #15756
Change-Id: Id2aa527d3a8259c95797d63a2f0d1123e3ca2a1c
Reviewed-on: https://go-review.googlesource.com/39917
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Diffstat (limited to 'src/cmd/internal/obj/ppc64')
| -rw-r--r-- | src/cmd/internal/obj/ppc64/asm9.go | 9 | ||||
| -rw-r--r-- | src/cmd/internal/obj/ppc64/obj9.go | 2 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/ppc64/asm9.go b/src/cmd/internal/obj/ppc64/asm9.go index a6a359da23..523448b0d9 100644 --- a/src/cmd/internal/obj/ppc64/asm9.go +++ b/src/cmd/internal/obj/ppc64/asm9.go @@ -561,7 +561,7 @@ func span9(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { ctxt.Autosize = int32(p.To.Offset) if oprange[AANDN&obj.AMask] == nil { - buildop(ctxt) + ctxt.Diag("ppc64 ops not initialized, call ppc64.buildop first") } c := int64(0) @@ -1052,6 +1052,13 @@ func opset(a, b0 obj.As) { } func buildop(ctxt *obj.Link) { + if oprange[AANDN&obj.AMask] != nil { + // Already initialized; stop now. + // This happens in the cmd/asm tests, + // each of which re-initializes the arch. + return + } + var n int for i := 0; i < C_NCLASS; i++ { diff --git a/src/cmd/internal/obj/ppc64/obj9.go b/src/cmd/internal/obj/ppc64/obj9.go index 6e93cc3996..1349075043 100644 --- a/src/cmd/internal/obj/ppc64/obj9.go +++ b/src/cmd/internal/obj/ppc64/obj9.go @@ -1051,6 +1051,7 @@ func stacksplit(ctxt *obj.Link, p *obj.Prog, newprog obj.ProgAlloc, framesize in var Linkppc64 = obj.LinkArch{ Arch: sys.ArchPPC64, + Init: buildop, Preprocess: preprocess, Assemble: span9, Progedit: progedit, @@ -1058,6 +1059,7 @@ var Linkppc64 = obj.LinkArch{ var Linkppc64le = obj.LinkArch{ Arch: sys.ArchPPC64LE, + Init: buildop, Preprocess: preprocess, Assemble: span9, Progedit: progedit, |
