]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: eliminate unnecessary assumption in heapBitsForObject
authorAustin Clements <austin@google.com>
Mon, 23 Feb 2015 19:33:56 +0000 (14:33 -0500)
committerAustin Clements <austin@google.com>
Mon, 23 Feb 2015 21:49:27 +0000 (21:49 +0000)
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>
src/runtime/mbitmap.go

index dce0bd59ffd30016955634db20062b294089e312..369b5ed218114bab57cc986e478d8483fe58aeee 100644 (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 {