]> Cypherpunks repositories - gostls13.git/commit
runtime: remove size argument from hash and equal algorithms
authorKeith Randall <khr@golang.org>
Wed, 7 Jan 2015 00:42:48 +0000 (16:42 -0800)
committerKeith Randall <khr@golang.org>
Wed, 7 Jan 2015 21:57:01 +0000 (21:57 +0000)
commitd5e4c4061b019a36ed3ac954c98f6535b7e78189
treeaf24f48eccd739765e7ac27a2f03f07b389b3873
parent60801c48530f5fc0555d8156006c1a41fdf53571
runtime: remove size argument from hash and equal algorithms

The equal algorithm used to take the size
   equal(p, q *T, size uintptr) bool
With this change, it does not
   equal(p, q *T) bool
Similarly for the hash algorithm.

The size is rarely used, as most equal functions know the size
of the thing they are comparing.  For instance f32equal already
knows its inputs are 4 bytes in size.

For cases where the size is not known, we allocate a closure
(one for each size needed) that points to an assembly stub that
reads the size out of the closure and calls generic code that
has a size argument.

Reduces the size of the go binary by 0.07%.  Performance impact
is not measurable.

Change-Id: I6e00adf3dde7ad2974adbcff0ee91e86d2194fec
Reviewed-on: https://go-review.googlesource.com/2392
Reviewed-by: Russ Cox <rsc@golang.org>
17 files changed:
src/cmd/gc/builtin.c
src/cmd/gc/go.h
src/cmd/gc/reflect.c
src/cmd/gc/runtime.go
src/cmd/gc/subr.c
src/cmd/gc/walk.c
src/runtime/alg.go
src/runtime/asm_386.s
src/runtime/asm_amd64.s
src/runtime/asm_amd64p32.s
src/runtime/asm_arm.s
src/runtime/asm_ppc64x.s
src/runtime/hash32.go
src/runtime/hash64.go
src/runtime/hashmap.go
src/runtime/hashmap_fast.go
src/runtime/runtime2.go