Commit 423b0cc2 authored by Matthew Dempsky's avatar Matthew Dempsky

cmd/compile: base mapaccess optimizations on algtype

algtype already controls the behavior of the normal map access code
paths, so it makes sense to base the decision on which optimized paths
are applicable on it too.

Enables use of optimized paths for key types like [8]byte and struct{s
string}.

Fixes #13271.

Change-Id: I48c52d97abaa7259ad5aba9641ea996a967cd359
Reviewed-on: https://go-review.googlesource.com/17464
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarKeith Randall <khr@golang.org>
parent b2492d16
......@@ -787,14 +787,12 @@ opswitch:
t := r.Left.Type
p := ""
if t.Type.Width <= 128 { // Check ../../runtime/hashmap.go:maxValueSize before changing.
switch Simsimtype(t.Down) {
case TINT32, TUINT32:
switch algtype(t.Down) {
case AMEM32:
p = "mapaccess2_fast32"
case TINT64, TUINT64:
case AMEM64:
p = "mapaccess2_fast64"
case TSTRING:
case ASTRING:
p = "mapaccess2_faststr"
}
}
......@@ -1203,14 +1201,12 @@ opswitch:
t := n.Left.Type
p := ""
if t.Type.Width <= 128 { // Check ../../runtime/hashmap.go:maxValueSize before changing.
switch Simsimtype(t.Down) {
case TINT32, TUINT32:
switch algtype(t.Down) {
case AMEM32:
p = "mapaccess1_fast32"
case TINT64, TUINT64:
case AMEM64:
p = "mapaccess1_fast64"
case TSTRING:
case ASTRING:
p = "mapaccess1_faststr"
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment