1. 05 Nov, 2019 33 commits
  2. 04 Nov, 2019 7 commits
    • Michael Anthony Knyszek's avatar
      runtime: clean up power-of-two rounding code with align functions · 383b447e
      Michael Anthony Knyszek authored
      This change renames the "round" function to the more appropriately named
      "alignUp" which rounds an integer up to the next multiple of a power of
      two.
      
      This change also adds the alignDown function, which is almost like
      alignUp but rounds down to the previous multiple of a power of two.
      
      With these two functions, we also go and replace manual rounding code
      with it where we can.
      
      Change-Id: Ie1487366280484dcb2662972b01b4f7135f72fec
      Reviewed-on: https://go-review.googlesource.com/c/go/+/190618Reviewed-by: default avatarAustin Clements <austin@google.com>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      383b447e
    • Brad Fitzpatrick's avatar
      net/http: support disabling built-in HTTP/2 with a new build tag · 2566e21f
      Brad Fitzpatrick authored
      Fixes #35082
      Updates #6853
      
      Change-Id: I4eeb0e15f534cff57fefb6039cd33fadf15b946e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/205139Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      2566e21f
    • Michael Knyszek's avatar
      runtime: place lower limit on trigger ratio · 74af7fc6
      Michael Knyszek authored
      This change makes it so that the GC pacer's trigger ratio can never fall
      below 0.6. Upcoming changes to the allocator make it significantly more
      scalable and thus much faster in certain cases, creating a large gap
      between the performance of allocation and scanning. The consequence of
      this is that the trigger ratio can drop very low (0.07 was observed) in
      order to drop GC utilization. A low trigger ratio like this results in a
      high amount of black allocations, which causes the live heap to appear
      larger, and thus the heap, and RSS, grows to a much higher stable point.
      
      This change alleviates the problem by placing a lower bound on the
      trigger ratio. The expected (and confirmed) effect of this is that
      utilization in certain scenarios will no longer converge to the expected
      25%, and may go higher. As a result of this artificially high trigger
      ratio, more time will also be spent doing GC assists compared to
      dedicated mark workers, since the GC will be on for an artifically short
      fraction of time (artificial with respect to the pacer). The biggest
      concern of this change is that allocation latency will suffer as a
      result, since there will now be more assists. But, upcoming changes to
      the allocator reduce the latency enough to outweigh the expected
      increase in latency from this change, without the blowup in RSS observed
      from the changes to the allocator.
      
      Updates #35112.
      
      Change-Id: Idd7c94fa974d0de673304c4397e716e89bfbf09b
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200439Reviewed-by: default avatarAustin Clements <austin@google.com>
      74af7fc6
    • Richard Musiol's avatar
      syscall/js: garbage collect references to JavaScript values · 54e6ba67
      Richard Musiol authored
      The js.Value struct now contains a pointer, so a finalizer can
      determine if the value is not referenced by Go any more.
      
      Unfortunately this breaks Go's == operator with js.Value. This change
      adds a new Equal method to check for the equality of two Values.
      This is a breaking change. The == operator is now disallowed to
      not silently break code.
      
      Additionally the helper methods IsUndefined, IsNull and IsNaN got added.
      
      Fixes #35111
      
      Change-Id: I58a50ca18f477bf51a259c668a8ba15bfa76c955
      Reviewed-on: https://go-review.googlesource.com/c/go/+/203600
      Run-TryBot: Richard Musiol <neelance@gmail.com>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      54e6ba67
    • Matthew Dempsky's avatar
      cmd/compile: restore -m=2 diagnostics · 063d0f11
      Matthew Dempsky authored
      This is a rough attempt at restoring -m=2 escape analysis diagnostics
      on par with those that were available with esc.go. It's meant to be
      simple and non-invasive.
      
      For example, given this random example from bytes/reader.go:
      
      138	func (r *Reader) WriteTo(w io.Writer) (n int64, err error) {
      ...
      143	        b := r.s[r.i:]
      144	        m, err := w.Write(b)
      
      esc.go used to report:
      
      bytes/reader.go:138:7: leaking param content: r
      bytes/reader.go:138:7:       from r.s (dot of pointer) at bytes/reader.go:143:8
      bytes/reader.go:138:7:       from b (assigned) at bytes/reader.go:143:4
      bytes/reader.go:138:7:       from w.Write(b) (parameter to indirect call) at bytes/reader.go:144:19
      
      With this CL, escape.go now reports:
      
      bytes/reader.go:138:7: parameter r leaks to {heap} with derefs=1:
      bytes/reader.go:138:7:   flow: b = *r:
      bytes/reader.go:138:7:     from r.s (dot of pointer) at bytes/reader.go:143:8
      bytes/reader.go:138:7:     from r.s[r.i:] (slice) at bytes/reader.go:143:10
      bytes/reader.go:138:7:     from b := r.s[r.i:] (assign) at bytes/reader.go:143:4
      bytes/reader.go:138:7:   flow: {heap} = b:
      bytes/reader.go:138:7:     from w.Write(b) (call parameter) at bytes/reader.go:144:19
      
      Updates #31489.
      
      Change-Id: I0c2b943a0f9ce6345bfff61e1c635172a9290cbb
      Reviewed-on: https://go-review.googlesource.com/c/go/+/196959
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      063d0f11
    • Michael Munday's avatar
      internal/bytealg: add SIMD byte count implementation for s390x · b6245cef
      Michael Munday authored
      Add a 'single lane' SIMD implemementation of the single byte count
      function for use on machines that support the vector facility. This
      allows up to 16 bytes to be counted per loop iteration.
      
      We can probably improve performance further by adding more 'lanes'
      (i.e. counting more bytes in parallel) however this will increase
      the complexity of the function so I'm not sure it is worth doing
      yet.
      
      name                old speed      new speed       delta
      pkg:strings goos:linux goarch:s390x
      CountByte/10         789MB/s ± 0%   1131MB/s ± 0%    +43.44%  (p=0.000 n=9+9)
      CountByte/32         936MB/s ± 0%   3236MB/s ± 0%   +245.87%  (p=0.000 n=8+9)
      CountByte/4096      1.06GB/s ± 0%  21.26GB/s ± 0%  +1907.07%  (p=0.000 n=10+10)
      CountByte/4194304   1.06GB/s ± 0%  20.54GB/s ± 0%  +1838.50%  (p=0.000 n=10+10)
      CountByte/67108864  1.06GB/s ± 0%  18.31GB/s ± 0%  +1629.51%  (p=0.000 n=10+10)
      pkg:bytes goos:linux goarch:s390x
      CountSingle/10       800MB/s ± 0%    986MB/s ± 0%    +23.21%  (p=0.000 n=9+10)
      CountSingle/32       925MB/s ± 0%   2744MB/s ± 0%   +196.55%  (p=0.000 n=9+10)
      CountSingle/4K      1.26GB/s ± 0%  19.44GB/s ± 0%  +1445.59%  (p=0.000 n=10+10)
      CountSingle/4M      1.26GB/s ± 0%  20.28GB/s ± 0%  +1510.26%  (p=0.000 n=8+10)
      CountSingle/64M     1.23GB/s ± 0%  17.78GB/s ± 0%  +1350.67%  (p=0.000 n=9+10)
      
      Change-Id: I230d57905db92a8fdfc50b1d5be338941ae3a7a1
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199979
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      b6245cef
    • Cherry Zhang's avatar
      cmd/link/internal/ld: fix TestArchiveBuildInvokeWithExec · d9ee4b28
      Cherry Zhang authored
      TestArchiveBuildInvokeWithExec is failing on darwin due to
      duplicated symbols, because the C definition (int fortytwo;) is
      copied to two generated cgo sources. In fact, this test is about
      building c-archive, but doesn't need to import "C". Removed the
      "C" import.
      
      Change-Id: I3a17546e01272a7ae37e6417791ab949fb44597e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/205278
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      d9ee4b28