aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/internal/obj/arm64
diff options
context:
space:
mode:
authorJosh Bleecher Snyder <josharian@gmail.com>2017-04-06 13:42:31 -0700
committerJosh Bleecher Snyder <josharian@gmail.com>2017-04-07 16:57:03 +0000
commit63c1aff60b68dba82ca05d0ae6d0c67bcb0583c1 (patch)
treef792076a5b28f0f92c6779220c5260b472598323 /src/cmd/internal/obj/arm64
parent817c1023b06a7e0dbd180609b63e06a64b6ebeaf (diff)
downloadgo-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.go9
-rw-r--r--src/cmd/internal/obj/arm64/obj7.go1
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,