cmd/compile: add Key, FieldSlice, and SetFields helpers
Allows safely eliminating more direct uses of Type's Type and Down
fields.
Passes toolstash -cmp.
Change-Id: I5c17fe541a0473c3cd2978d8314c4ab759079a61
Reviewed-on: https://go-review.googlesource.com/20541
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/src/cmd/compile/internal/gc/walk.go b/src/cmd/compile/internal/gc/walk.go
index 3c397df..be0d5ff 100644
--- a/src/cmd/compile/internal/gc/walk.go
+++ b/src/cmd/compile/internal/gc/walk.go
@@ -840,7 +840,7 @@
t := r.Left.Type
p := ""
if t.Type.Width <= 128 { // Check ../../runtime/hashmap.go:maxValueSize before changing.
- switch algtype(t.Down) {
+ switch algtype(t.Key()) {
case AMEM32:
p = "mapaccess2_fast32"
case AMEM64:
@@ -876,7 +876,7 @@
// the boolean result of i.(T) is now untyped so we make it the
// same type as the variable on the lhs.
if !isblank(n.List.Second()) {
- r.Type.Type.Down.Type = n.List.Second().Type
+ r.Type.Field(1).Type = n.List.Second().Type
}
n.Rlist.Set1(r)
n.Op = OAS2FUNC
@@ -1247,7 +1247,7 @@
t := n.Left.Type
p := ""
if t.Type.Width <= 128 { // Check ../../runtime/hashmap.go:maxValueSize before changing.
- switch algtype(t.Down) {
+ switch algtype(t.Key()) {
case AMEM32:
p = "mapaccess1_fast32"
case AMEM64:
@@ -1439,7 +1439,7 @@
}
fn := syslook("makemap")
- substArgTypes(&fn, hmap(t), mapbucket(t), t.Down, t.Type)
+ substArgTypes(&fn, hmap(t), mapbucket(t), t.Key(), t.Type)
n = mkcall1(fn, n.Type, init, typename(n.Type), conv(n.Left, Types[TINT64]), a, r)
case OMAKESLICE:
@@ -2690,7 +2690,7 @@
Fatalf("mapfn %v", t)
}
fn := syslook(name)
- substArgTypes(&fn, t.Down, t.Type, t.Down, t.Type)
+ substArgTypes(&fn, t.Key(), t.Type, t.Key(), t.Type)
return fn
}
@@ -2699,7 +2699,7 @@
Fatalf("mapfn %v", t)
}
fn := syslook(name)
- substArgTypes(&fn, t.Down, t.Type, t.Down)
+ substArgTypes(&fn, t.Key(), t.Type, t.Key())
return fn
}