]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: initialize itab.hash always
authorKeith Randall <khr@golang.org>
Wed, 31 May 2017 18:57:07 +0000 (11:57 -0700)
committerKeith Randall <khr@golang.org>
Tue, 15 Aug 2017 01:52:40 +0000 (01:52 +0000)
We weren't initializing this field for dynamically-generated itabs.
Turns out it doesn't matter, as any time we use this field we also
generate a static itab for the interface type / concrete type pair.
But we should initialize it anyway, just to be safe.

Performance on the benchmarks in CL 44339:
benchmark               old ns/op     new ns/op     delta
BenchmarkItabFew-12     1040585       26466         -97.46%
BenchmarkItabAll-12     228873499     4287696       -98.13%

Change-Id: I58ed2b31e6c98b584122bdaf844fee7268b58295
Reviewed-on: https://go-review.googlesource.com/44475
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/runtime/iface.go

index bac0b37b3a8c88d5f812d1bc804e2ae4e04cab12..665dbdbc1655931ebb86dde8168bf351507107b2 100644 (file)
@@ -222,6 +222,7 @@ imethods:
                m.fun[0] = 0
                return iname
        }
+       m.hash = typ.hash
        return ""
 }