1. 02 Dec, 2019 4 commits
  2. 28 Nov, 2019 1 commit
    • Richard Miller's avatar
      runtime: on plan9 don't return substitute address for sysReserve · 8054b135
      Richard Miller authored
      Plan 9 doesn't have a way to reserve virtual memory, so the
      implementation of sysReserve allocates memory space (which won't
      be backed with real pages until the virtual pages are referenced).
      If the space is then freed with sysFree, it's not returned to
      the OS (because Plan 9 doesn't allow shrinking a shared address
      space), but it must be cleared to zeroes in case it's reallocated
      subsequently.
      
      This interacts badly with the way mallocinit on 64-bit machines
      sets up the heap, calling sysReserve repeatedly for a very large
      (64MB?) arena with a non-nil address hint, and then freeing the space
      again because it doesn't have the expected alignment.  The
      repeated clearing of multiple megabytes adds significant startup
      time to every go program.
      
      We correct this by restricting sysReserve to allocate memory only
      when the caller doesn't provide an address hint.  If a hint is
      provided, sysReserve will now return nil instead of allocating memory
      at a different address.
      
      Fixes #27744
      
      Change-Id: Iae5a950adefe4274c4bc64dd9c740d19afe4ed1c
      Reviewed-on: https://go-review.googlesource.com/c/go/+/207917
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid du Colombier <0intro@gmail.com>
      8054b135
  3. 27 Nov, 2019 10 commits
  4. 26 Nov, 2019 4 commits
  5. 25 Nov, 2019 8 commits
  6. 24 Nov, 2019 1 commit
  7. 23 Nov, 2019 4 commits
  8. 22 Nov, 2019 8 commits