mirror of
https://github.com/golang/go.git
synced 2025-05-05 23:53:05 +00:00
Revert "cmd/compile: improve equality algs for arrays of interfaces"
This reverts commit 7eab9506c92562fe49861597e7bf1fcb28f2fd40. Reason for revert: Undoing to get back to semantics discussed in #8606. Change-Id: If0cd7518c10c37a81fdbb4ae112239e04c0b1448 Reviewed-on: https://go-review.googlesource.com/c/go/+/236278 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
7f349e82a2
commit
f98b9ae07c
@ -591,24 +591,6 @@ func geneq(t *types.Type) *obj.LSym {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch t.Elem().Etype {
|
switch t.Elem().Etype {
|
||||||
case TINTER:
|
|
||||||
// Do two loops. First, check that all the types match (cheap).
|
|
||||||
// Second, check that all the data match (expensive).
|
|
||||||
// TODO: when the array size is small, unroll the tab match checks.
|
|
||||||
checkAll(3, func(pi, qi *Node) *Node {
|
|
||||||
// Compare types.
|
|
||||||
pi = typecheck(pi, ctxExpr)
|
|
||||||
qi = typecheck(qi, ctxExpr)
|
|
||||||
eqtab, _ := eqinterface(pi, qi)
|
|
||||||
return eqtab
|
|
||||||
})
|
|
||||||
checkAll(1, func(pi, qi *Node) *Node {
|
|
||||||
// Compare data.
|
|
||||||
pi = typecheck(pi, ctxExpr)
|
|
||||||
qi = typecheck(qi, ctxExpr)
|
|
||||||
_, eqdata := eqinterface(pi, qi)
|
|
||||||
return eqdata
|
|
||||||
})
|
|
||||||
case TSTRING:
|
case TSTRING:
|
||||||
// Do two loops. First, check that all the lengths match (cheap).
|
// Do two loops. First, check that all the lengths match (cheap).
|
||||||
// Second, check that all the contents match (expensive).
|
// Second, check that all the contents match (expensive).
|
||||||
|
Loading…
x
Reference in New Issue
Block a user