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/arm64 | |
| 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/arm64')
| -rw-r--r-- | src/cmd/internal/obj/arm64/asm7.go | 9 | ||||
| -rw-r--r-- | src/cmd/internal/obj/arm64/obj7.go | 1 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/cmd/internal/obj/arm64/asm7.go b/src/cmd/internal/obj/arm64/asm7.go index c0a19d2d2a..65c48d3e01 100644 --- a/src/cmd/internal/obj/arm64/asm7.go +++ b/src/cmd/internal/obj/arm64/asm7.go @@ -537,7 +537,7 @@ func span7(ctxt *obj.Link, cursym *obj.LSym, newprog obj.ProgAlloc) { ctxt.Autosize = int32(p.To.Offset&0xffffffff) + 8 if oprange[AAND&obj.AMask] == nil { - buildop(ctxt) + ctxt.Diag("arm64 ops not initialized, call arm64.buildop first") } bflag := 1 @@ -1438,6 +1438,13 @@ func oprangeset(a obj.As, t []Optab) { } func buildop(ctxt *obj.Link) { + if oprange[AAND&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_GOK; i++ { for n = 0; n < C_GOK; n++ { diff --git a/src/cmd/internal/obj/arm64/obj7.go b/src/cmd/internal/obj/arm64/obj7.go index b09454445a..52c4c594cb 100644 --- a/src/cmd/internal/obj/arm64/obj7.go +++ b/src/cmd/internal/obj/arm64/obj7.go @@ -799,6 +799,7 @@ var unaryDst = map[obj.As]bool{ var Linkarm64 = obj.LinkArch{ Arch: sys.ArchARM64, + Init: buildop, Preprocess: preprocess, Assemble: span7, Progedit: progedit, |
