aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/reflectdata/alg.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/reflectdata/alg.go')
-rw-r--r--src/cmd/compile/internal/reflectdata/alg.go20
1 files changed, 13 insertions, 7 deletions
diff --git a/src/cmd/compile/internal/reflectdata/alg.go b/src/cmd/compile/internal/reflectdata/alg.go
index 4f174a3bb8..bcc5112b8e 100644
--- a/src/cmd/compile/internal/reflectdata/alg.go
+++ b/src/cmd/compile/internal/reflectdata/alg.go
@@ -235,6 +235,12 @@ func genhash(t *types.Type) *obj.LSym {
return closure
}
+func runtimeHashFor(name string, t *types.Type) *ir.Name {
+ n := typecheck.LookupRuntime(name)
+ n = typecheck.SubstArgTypes(n, t)
+ return n
+}
+
func hashfor(t *types.Type) ir.Node {
var sym *types.Sym
@@ -242,19 +248,19 @@ func hashfor(t *types.Type) ir.Node {
case types.AMEM:
base.Fatalf("hashfor with AMEM type")
case types.AINTER:
- sym = ir.Pkgs.Runtime.Lookup("interhash")
+ return runtimeHashFor("interhash", t)
case types.ANILINTER:
- sym = ir.Pkgs.Runtime.Lookup("nilinterhash")
+ return runtimeHashFor("nilinterhash", t)
case types.ASTRING:
- sym = ir.Pkgs.Runtime.Lookup("strhash")
+ return runtimeHashFor("strhash", t)
case types.AFLOAT32:
- sym = ir.Pkgs.Runtime.Lookup("f32hash")
+ return runtimeHashFor("f32hash", t)
case types.AFLOAT64:
- sym = ir.Pkgs.Runtime.Lookup("f64hash")
+ return runtimeHashFor("f64hash", t)
case types.ACPLX64:
- sym = ir.Pkgs.Runtime.Lookup("c64hash")
+ return runtimeHashFor("c64hash", t)
case types.ACPLX128:
- sym = ir.Pkgs.Runtime.Lookup("c128hash")
+ return runtimeHashFor("c128hash", t)
default:
// Note: the caller of hashfor ensured that this symbol
// exists and has a body by calling genhash for t.