func algtype(t *Type) int {
a := algtype1(t, nil)
- if a == AMEM || a == ANOEQ {
- if Isslice(t) {
- return ASLICE
- }
+ if a == AMEM {
switch t.Width {
case 0:
- return a + AMEM0 - AMEM
-
+ return AMEM0
case 1:
- return a + AMEM8 - AMEM
-
+ return AMEM8
case 2:
- return a + AMEM16 - AMEM
-
+ return AMEM16
case 4:
- return a + AMEM32 - AMEM
-
+ return AMEM32
case 8:
- return a + AMEM64 - AMEM
-
+ return AMEM64
case 16:
- return a + AMEM128 - AMEM
+ return AMEM128
}
}
// type algorithms - known to compiler
const (
- alg_MEM = iota
+ alg_NOEQ = iota
alg_MEM0
alg_MEM8
alg_MEM16
alg_MEM32
alg_MEM64
alg_MEM128
- alg_NOEQ
- alg_NOEQ0
- alg_NOEQ8
- alg_NOEQ16
- alg_NOEQ32
- alg_NOEQ64
- alg_NOEQ128
alg_STRING
alg_INTER
alg_NILINTER
- alg_SLICE
alg_FLOAT32
alg_FLOAT64
alg_CPLX64
func memhash_varlen(p unsafe.Pointer, h uintptr) uintptr
var algarray = [alg_max]typeAlg{
- alg_MEM: {nil, nil}, // not used
+ alg_NOEQ: {nil, nil},
alg_MEM0: {memhash0, memequal0},
alg_MEM8: {memhash8, memequal8},
alg_MEM16: {memhash16, memequal16},
alg_MEM32: {memhash32, memequal32},
alg_MEM64: {memhash64, memequal64},
alg_MEM128: {memhash128, memequal128},
- alg_NOEQ: {nil, nil},
- alg_NOEQ0: {nil, nil},
- alg_NOEQ8: {nil, nil},
- alg_NOEQ16: {nil, nil},
- alg_NOEQ32: {nil, nil},
- alg_NOEQ64: {nil, nil},
- alg_NOEQ128: {nil, nil},
alg_STRING: {strhash, strequal},
alg_INTER: {interhash, interequal},
alg_NILINTER: {nilinterhash, nilinterequal},
- alg_SLICE: {nil, nil},
alg_FLOAT32: {f32hash, f32equal},
alg_FLOAT64: {f64hash, f64equal},
alg_CPLX64: {c64hash, c64equal},