1. 04 Dec, 2018 10 commits
  2. 03 Dec, 2018 10 commits
  3. 02 Dec, 2018 2 commits
  4. 01 Dec, 2018 6 commits
  5. 30 Nov, 2018 10 commits
  6. 29 Nov, 2018 2 commits
    • Keith Randall's avatar
      cmd/compile: eliminate write barriers when writing non-heap ptrs · 2140975e
      Keith Randall authored
      We don't need a write barrier if:
      1) The location we're writing to doesn't hold a heap pointer, and
      2) The value we're writing isn't a heap pointer.
      
      The freshly returned value from runtime.newobject satisfies (1).
      Pointers to globals, and the contents of the read-only data section satisfy (2).
      
      This is particularly helpful for code like:
      p := []string{"abc", "def", "ghi"}
      
      Where the compiler generates:
         a := new([3]string)
         move(a, statictmp_)  // eliminates write barriers here
         p := a[:]
      
      For big slice literals, this makes the code a smaller and faster to
      compile.
      
      Update #13554. Reduces the compile time by ~10% and RSS by ~30%.
      
      Change-Id: Icab81db7591c8777f68e5d528abd48c7e44c87eb
      Reviewed-on: https://go-review.googlesource.com/c/151498
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      2140975e
    • Austin Clements's avatar
      runtime: check more work flushing races · 438b9544
      Austin Clements authored
      This adds several new checks to help debug #27993. It adds a mechanism
      for freezing write barriers and gcWork puts during the mark completion
      algorithm. This way, if we do detect mark completion, we can catch any
      puts that happened during the completion algorithm. Based on build
      dashboard failures, this seems to be the window of time when these are
      happening.
      
      This also double-checks that all work buffers are empty immediately
      upon entering mark termination (much earlier than the current check).
      This is unlikely to trigger based on the current failures, but is a
      good safety net.
      
      Change-Id: I03f56c48c4322069e28c50fbc3c15b2fee2130c2
      Reviewed-on: https://go-review.googlesource.com/c/151797
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: default avatarMichael Knyszek <mknyszek@google.com>
      438b9544