• David du Colombier's avatar
    runtime: fix memory allocator on Plan 9 · fb75f856
    David du Colombier authored
    Previously, the memory allocator on Plan 9 did
    not free memory properly. It was only able to
    free the last allocated block.
    
    This change implements a variant of the
    Kernighan & Ritchie memory allocator with
    coalescing and splitting.
    
    The most notable differences are:
    
    - no header is prefixing the allocated blocks, since
      the size is always specified when calling sysFree,
    - the free list is nil-terminated instead of circular.
    
    Fixes #9736.
    Fixes #9803.
    Fixes #9952.
    
    Change-Id: I00d533714e4144a0012f69820d31cbb0253031a3
    Reviewed-on: https://go-review.googlesource.com/5524Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
    fb75f856
mem_plan9.go 3.91 KB