• Austin Clements's avatar
    runtime: lay out heap bitmap forward in memory · 29e9c4d4
    Austin Clements authored
    Currently the heap bitamp is laid in reverse order in memory relative
    to the heap itself. This was originally done out of "excessive
    cleverness" so that computing a bitmap pointer could load only the
    arena_start field and so that heaps could be more contiguous by
    growing the arena and the bitmap out from a common center point.
    
    However, this appears to have no actual performance benefit, it
    complicates nearly every use of the bitmap, and it makes already
    confusing code more confusing. Furthermore, it's still possible to use
    a single field (the new bitmap_delta) for the bitmap pointer
    computation by employing slightly different excessive cleverness.
    
    Hence, this CL puts the bitmap into forward order.
    
    This is a (very) updated version of CL 9404.
    
    Change-Id: I743587cc626c4ecd81e660658bad85b54584108c
    Reviewed-on: https://go-review.googlesource.com/85881
    Run-TryBot: Austin Clements <austin@google.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarRick Hudson <rlh@golang.org>
    29e9c4d4
mheap.go 50.8 KB