1. 04 Dec, 2018 8 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 4 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
    • Ian Lance Taylor's avatar
      cmd/cgo: use field alignment when setting field offset · fbdaa965
      Ian Lance Taylor authored
      The old code ignored the field alignment, and only looked at the field
      offset: if the field offset required padding, cgo added padding. But
      while that approach works for Go (at least with the gc toolchain) it
      doesn't work for C code using packed structs. With a packed struct the
      added padding may leave the struct at a misaligned position, and the
      inserted alignment, which cgo is not considering, may introduce
      additional, unexpected, padding. Padding that ignores alignment is not
      a good idea when the struct is not packed, and Go structs are never
      packed. So don't ignore alignment.
      
      Fixes #28896
      
      Change-Id: Ie50ea15fa6dc35557497097be9fecfecb11efd8a
      Reviewed-on: https://go-review.googlesource.com/c/150602
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      fbdaa965
    • Agniva De Sarker's avatar
      go/doc: convert to unicode quotes for ToText and Synopsis · 81a5c9c3
      Agniva De Sarker authored
      We refactor the conversion of quotes to their unicode equivalent
      to a separate function so that it can be called from ToText and Synopsis.
      
      And we introduce a temp buffer to write the escaped HTML and convert
      the unicode quotes back to html escaped entities. This simplifies the logic
      and gets rid of the need to track the index of the escaped text.
      
      Fixes #27759
      
      Change-Id: I71cf47ddcd4c6794ccdf2898ac25539388b393c1
      Reviewed-on: https://go-review.googlesource.com/c/150377
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      81a5c9c3