From: Austin Clements Date: Mon, 23 Feb 2015 19:33:56 +0000 (-0500) Subject: runtime: eliminate unnecessary assumption in heapBitsForObject X-Git-Tag: go1.5beta1~1916 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=bceb18e4989aee4971fa1de6bb9f5ba7410d5219;p=gostls13.git 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 --- diff --git a/src/runtime/mbitmap.go b/src/runtime/mbitmap.go index dce0bd59ff..369b5ed218 100644 --- a/src/runtime/mbitmap.go +++ b/src/runtime/mbitmap.go @@ -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 {