1
0
mirror of https://github.com/golang/go synced 2024-11-18 08:04:40 -07:00

runtime: eliminate unnecessary assumption in heapBitsForObject

The slow path of heapBitsForObjects somewhat subtly assumes that the
pointer will not point to the first word of the object and will round
the pointer wrong if this assumption is violated.  This assumption is
safe because the fast path should always take care of this case, but
there's no benefit to making this assumption, it makes the code more
difficult to experiment with than necessary, and it's trivial to
eliminate.

Change-Id: Iedd336f7d529a27d3abeb83e77dfb32a285ea73a
Reviewed-on: https://go-review.googlesource.com/5636
Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
Austin Clements 2015-02-23 14:33:56 -05:00
parent ce137592c0
commit bceb18e498

View File

@ -198,7 +198,7 @@ func heapBitsForObject(p uintptr) (base uintptr, hbits heapBits) {
return
}
base = s.base()
if p-base > s.elemsize {
if p-base >= s.elemsize {
base += (p - base) / s.elemsize * s.elemsize
}
if base == p {