1. 02 Oct, 2018 20 commits
    • Austin Clements's avatar
      runtime: implement STW GC in terms of concurrent GC · 1678b2c5
      Austin Clements authored
      Currently, STW GC works very differently from concurrent GC. The
      largest differences in that in concurrent GC, all marking work is done
      by background mark workers during the mark phase, while in STW GC, all
      marking work is done by gchelper during the mark termination phase.
      
      This is a consequence of the evolution of Go's GC from a STW GC by
      incrementally moving work from STW mark termination into concurrent
      mark. However, at this point, the STW code paths exist only as a
      debugging mode. Having separate code paths for this increases the
      maintenance burden and complexity of the garbage collector. At the
      same time, these code paths aren't tested nearly as well, making it
      far more likely that they will bit-rot.
      
      This CL reverses the relationship between STW GC, by re-implementing
      STW GC in terms of concurrent GC.
      
      This builds on the new scheduled support for disabling user goroutine
      scheduling. During sweep termination, it disables user scheduling, so
      when the GC starts the world again for concurrent mark, it's really
      only "concurrent" with itself.
      
      There are several code paths that were specific to STW GC that are now
      vestigial. We'll remove these in the follow-up CLs.
      
      Updates #26903.
      
      Change-Id: Ia3883d2fcf7ab1d89bdc9c8ee54bf9bffb32c096
      Reviewed-on: https://go-review.googlesource.com/c/134780
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      1678b2c5
    • Austin Clements's avatar
      runtime: support disabling goroutine scheduling by class · 6e9fb11b
      Austin Clements authored
      This adds support for disabling the scheduling of user goroutines
      while allowing system goroutines like the garbage collector to
      continue running. User goroutines pass through the usual state
      transitions, but if we attempt to actually schedule one, it will get
      put on a deferred scheduling list.
      
      Updates #26903. This is preparation for unifying STW GC and concurrent
      GC.
      
      Updates #25578. This same mechanism can form the basis for disabling
      all but a single user goroutine for the purposes of debugger function
      call injection.
      
      Change-Id: Ib72a808e00c25613fe6982f5528160d3de3dbbc6
      Reviewed-on: https://go-review.googlesource.com/c/134779
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      6e9fb11b
    • Austin Clements's avatar
      runtime: add a more stable isSystemGoroutine mode · 29b21ec4
      Austin Clements authored
      Currently, isSystemGoroutine varies on whether it considers the
      finalizer goroutine a user goroutine or a system goroutine. For the
      next CL, we're going to want to always consider the finalier goroutine
      a user goroutine, so add a flag that indicates that.
      
      Updates #26903. This is preparation for unifying STW GC and concurrent
      GC.
      
      Change-Id: Iafc92e519c13d9f8d879332cb5f0d12164104c33
      Reviewed-on: https://go-review.googlesource.com/c/134778
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      29b21ec4
    • Austin Clements's avatar
      runtime: remove GODEBUG=gcrescanstacks=1 mode · 198440cc
      Austin Clements authored
      Currently, setting GODEBUG=gcrescanstacks=1 enables a debugging mode
      where the garbage collector re-scans goroutine stacks during mark
      termination. This was introduced in Go 1.8 to debug the hybrid write
      barrier, but I don't think we ever used it.
      
      Now it's one of the last sources of mark work during mark termination.
      This CL removes it.
      
      Updates #26903. This is preparation for unifying STW GC and concurrent
      GC.
      
      Updates #17503.
      
      Change-Id: I6ae04d3738aa9c448e6e206e21857a33ecd12acf
      Reviewed-on: https://go-review.googlesource.com/c/134777
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      198440cc
    • Austin Clements's avatar
      runtime: avoid using STW GC mechanism for checkmarks mode · ecc36596
      Austin Clements authored
      Currently, checkmarks mode uses the full STW GC infrastructure to
      perform mark checking. We're about to remove that infrastructure and,
      furthermore, since checkmarks is about doing the simplest thing
      possible to check concurrent GC, it's valuable for it to be simpler.
      
      Hence, this CL makes checkmarks even simpler by making it non-parallel
      and divorcing it from the STW GC infrastructure (including the
      gchelper mechanism).
      
      Updates #26903. This is preparation for unifying STW GC and concurrent
      GC.
      
      Change-Id: Iad21158123e025e3f97d7986d577315e994bd43e
      Reviewed-on: https://go-review.googlesource.com/c/134776
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      ecc36596
    • Austin Clements's avatar
      runtime: remove gcStart's mode argument · 918ed88e
      Austin Clements authored
      This argument is always gcBackgroundMode since only
      debug.gcstoptheworld can trigger a STW GC at this point. Remove the
      unnecessary argument.
      
      Updates #26903. This is preparation for unifying STW GC and concurrent
      GC.
      
      Change-Id: Icb4ba8f10f80c2b69cf51a21e04fa2c761b71c94
      Reviewed-on: https://go-review.googlesource.com/c/134775
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      918ed88e
    • Austin Clements's avatar
      runtime: don't disable GC work caching during mark termination · e25ef352
      Austin Clements authored
      Currently, we disable GC work caching during mark termination. This is
      no longer necessary with the new mark completion detection because
      
      1. There's no way for any of the GC mark termination helpers to have
      any real work queued and,
      
      2. Mark termination has to explicitly flush every P's buffers anyway
      in order to flush Ps that didn't run a GC mark termination helper.
      
      Hence, remove the code that disposes gcWork buffers during mark
      termination.
      
      Updates #26903. This is a follow-up to eliminating mark 2.
      
      Change-Id: I81f002ee25d5c10f42afd39767774636519007f9
      Reviewed-on: https://go-review.googlesource.com/c/134320
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      e25ef352
    • Austin Clements's avatar
      runtime: eliminate gcBlackenPromptly mode · d398dbdf
      Austin Clements authored
      Now that there is no mark 2 phase, gcBlackenPromptly is no longer
      used.
      
      Updates #26903. This is a follow-up to eliminating mark 2.
      
      Change-Id: Ib9c534f21b36b8416fcf3cab667f186167b827f8
      Reviewed-on: https://go-review.googlesource.com/c/134319
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      d398dbdf
    • Austin Clements's avatar
      runtime: eliminate mark 2 and fix mark termination race · 9108ae77
      Austin Clements authored
      The mark 2 phase was originally introduced as a way to reduce the
      chance of entering STW mark termination while there was still marking
      work to do. It works by flushing and disabling all local work caches
      so that all enqueued work becomes immediately globally visible.
      However, mark 2 is not only slow–disabling caches makes marking and
      the write barrier both much more expensive–but also imperfect. There
      is still a rare but possible race (~once per all.bash) that can cause
      GC to enter mark termination while there is still marking work. This
      race is detailed at
      https://github.com/golang/proposal/blob/master/design/17503-eliminate-rescan.md#appendix-mark-completion-race
      The effect of this is that mark termination must still cope with the
      possibility that there may be work remaining after a concurrent mark
      phase. Dealing with this increases STW pause time and increases the
      complexity of mark termination.
      
      Furthermore, a similar but far more likely race can cause early
      transition from mark 1 to mark 2. This is unfortunate because it
      causes performance instability because of the cost of mark 2.
      
      This CL fixes this by replacing mark 2 with a distributed termination
      detection algorithm. This algorithm is correct, so it eliminates the
      mark termination race, and doesn't require disabling local caches. It
      ensures that there are no grey objects upon entering mark termination.
      With this change, we're one step closer to eliminating marking from
      mark termination entirely (it's still used by STW GC and checkmarks
      mode).
      
      This CL does not eliminate the gcBlackenPromptly global flag, though
      it is always set to false now. It will be removed in a cleanup CL.
      
      This led to only minor variations in the go1 benchmarks
      (https://perf.golang.org/search?q=upload:20180909.1) and compilebench
      benchmarks (https://perf.golang.org/search?q=upload:20180910.2).
      
      This significantly improves performance of the garbage benchmark, with
      no impact on STW times:
      
      name                        old time/op    new time/op   delta
      Garbage/benchmem-MB=64-12    2.21ms ± 1%   2.05ms ± 1%   -7.38% (p=0.000 n=18+19)
      Garbage/benchmem-MB=1024-12  2.30ms ±16%   2.20ms ± 7%   -4.51% (p=0.001 n=20+20)
      
      name                        old STW-ns/GC  new STW-ns/GC  delta
      Garbage/benchmem-MB=64-12      138k ±44%     141k ±23%     ~    (p=0.309 n=19+20)
      Garbage/benchmem-MB=1024-12    159k ±25%     178k ±98%     ~    (p=0.798 n=16+18)
      
      name                        old STW-ns/op  new STW-ns/op                delta
      Garbage/benchmem-MB=64-12     4.42k ±44%    4.24k ±23%     ~    (p=0.531 n=19+20)
      Garbage/benchmem-MB=1024-12     591 ±24%      636 ±111%    ~    (p=0.309 n=16+18)
      
      (https://perf.golang.org/search?q=upload:20180910.1)
      
      Updates #26903.
      Updates #17503.
      
      Change-Id: Icbd1e12b7a12a76f423c9bf033b13cb363e4cd19
      Reviewed-on: https://go-review.googlesource.com/c/134318
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      9108ae77
    • Austin Clements's avatar
      runtime: track whether any buffer has been flushed from gcWork · a2a2901b
      Austin Clements authored
      Nothing currently consumes the flag, but we'll use it in the
      distributed termination detection algorithm.
      
      Updates #26903. This is preparation for eliminating mark 2.
      
      Change-Id: I5e149a05b1c878fe1009150da21f8bd8ae2b9b6a
      Reviewed-on: https://go-review.googlesource.com/c/134317
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      a2a2901b
    • Austin Clements's avatar
      runtime: remove GODEBUG=gctrace=2 mode · edc2d170
      Austin Clements authored
      It turns out if you set GODEBUG=gctrace=2, it enables an obscure
      debugging mode that, in addition to printing gctrace statistics, also
      does a second STW GC following each regular GC. This debugging mode
      has long since lost its value (you could maybe use it to analyze
      floating garbage, except that we don't print the gctrace line on the
      second GC), and it interferes substantially with the operation of the
      GC by messing up the statistics used to schedule GCs.
      
      It's also a source of mark termination GC work when we're in
      concurrent GC mode, so it's going to interfere with eliminating mark
      2. And it's going to get in the way of unifying STW and concurrent GC.
      
      This CL removes this debugging mode.
      
      Updates #26903. This is preparation for eliminating mark 2 and
      unifying STW GC and concurrent GC.
      
      Change-Id: Ib5bce05d8c4d5b6559c89a65165d49532165df07
      Reviewed-on: https://go-review.googlesource.com/c/134316
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      edc2d170
    • Austin Clements's avatar
      runtime: flush write barrier buffer to create work · 9c634ea8
      Austin Clements authored
      Currently, if the gcWork runs out of work, we'll fall out of the GC
      worker, even though flushing the write barrier buffer could produce
      more work. While this is not a correctness issue, it can lead to
      premature mark 2 or mark termination.
      
      Fix this by flushing the write barrier buffer if the local gcWork runs
      out of work and then checking the local gcWork again.
      
      This reduces the number of premature mark terminations during all.bash
      by about a factor of 10.
      
      Updates #26903. This is preparation for eliminating mark 2.
      
      Change-Id: I48577220b90c86bfd28d498e8603bc379a8cd617
      Reviewed-on: https://go-review.googlesource.com/c/134315
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      9c634ea8
    • Daniel Theophanes's avatar
      database/sql: correctly report MaxIdleClosed stat · 7db509e6
      Daniel Theophanes authored
      Previously the MaxIdleClosed counter was incremented when added
      to the free connection list, rather then when it wasn't added
      to the free connection list. Flip this logic to correct.
      
      Fixes #27792
      
      Change-Id: I405302c14fb985369dab48fbe845e5651afc4ccf
      Reviewed-on: https://go-review.googlesource.com/c/138578
      Run-TryBot: Daniel Theophanes <kardianos@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7db509e6
    • Carlos Eduardo Seo's avatar
      cmd/compile: instrinsify math/bits.Mul on ppc64x · 9aed4cc3
      Carlos Eduardo Seo authored
      Add SSA rules to intrinsify Mul/Mul64 on ppc64x.
      
      benchmark             old ns/op     new ns/op     delta
      BenchmarkMul-40       8.80          0.93          -89.43%
      BenchmarkMul32-40     1.39          1.39          +0.00%
      BenchmarkMul64-40     5.39          0.93          -82.75%
      
      Updates #24813
      
      Change-Id: I6e95bfbe976a2278bd17799df184a7fbc0e57829
      Reviewed-on: https://go-review.googlesource.com/138917Reviewed-by: 's avatarLynn Boger <laboger@linux.vnet.ibm.com>
      9aed4cc3
    • Robert Griesemer's avatar
      cmd/compile: update fmt_test (fix build for long-running tests) · f5e58442
      Robert Griesemer authored
      Follow-up on https://golang.org/cl/136397.
      
      Change-Id: Ib0df690847c7c92d8de406dadc16a10507bfda39
      Reviewed-on: https://go-review.googlesource.com/c/139059Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f5e58442
    • Richard Musiol's avatar
      misc/wasm: add mention of polyfill for Edge support · e5489cfc
      Richard Musiol authored
      Edge supports WebAssembly but not TextEncoder or TextDecoder.
      This change adds a comment pointing to a polyfill that could
      be used. The polyfill is not added by default, because we want to
      let the user decide if/how to include the polyfill.
      
      Fixes #27295
      
      Change-Id: I375f58f2168665f549997b368428c398dfbbca1c
      Reviewed-on: https://go-review.googlesource.com/139037Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      e5489cfc
    • Brad Fitzpatrick's avatar
      Revert "misc/wasm: add polyfill for TextEncoder/TextDecoder for Edge support" · ed969a0c
      Brad Fitzpatrick authored
      This reverts CL 131718, commit a0e7f127.
      
      Reason for revert: adds request overhead & dependency on third-party service for all users regardless of whether it's necessary.
      
      Updates #27295
      
      Change-Id: I4a8a9b0c8e4a3198c884dfbd90ba36734f70a9a9
      Reviewed-on: https://go-review.googlesource.com/138937Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      ed969a0c
    • Muhammad Falak R Wani's avatar
      net/http: document Header.Set canonicalizes the header key · 9ec5d9c1
      Muhammad Falak R Wani authored
      Fixes #27923
      
      Change-Id: Ia902a1966beeae56e43265fc5ed987555fa834b6
      Reviewed-on: https://go-review.googlesource.com/138677Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9ec5d9c1
    • esell's avatar
      net/http: add Handle example · 3ee96729
      esell authored
      Currently there is no example for http.Handle in the
      documentation. This adds an example.
      
      Change-Id: I66ee9983bea1f5237757e1ef4956eae9a056e963
      Reviewed-on: https://go-review.googlesource.com/137715
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3ee96729
    • Alex Brainman's avatar
      net: skip TestUnixConnLocalWindows on windows/386 · de72c43f
      Alex Brainman authored
      Recent CL 125456 implemented Unix Socket functionality on windows.
      But that functionality does not appear to be working when 32-bit
      code is used. So disable TestUnixConnLocalWindows.
      
      windows/386 builder does not appear to be complaining about
      TestUnixConnLocalWindows, because new functionality requires
      Windows 10 Build 17063. windows/386 builder uses Windows 2008.
      
      Fixes #27943
      
      Change-Id: Iea91b86aaa124352d198ca0cd03fff1e7542f949
      Reviewed-on: https://go-review.googlesource.com/138676
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarYasuhiro MATSUMOTO <mattn.jp@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      de72c43f
  2. 01 Oct, 2018 5 commits
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: add alternative node dumper for debugging · 5d444e36
      Robert Griesemer authored
      dump/fdump is a reflection-based data structure dumper slightly
      customized for the compiler's Node data structure. It dumps the
      transitivle closure of Node (and other) data structures using a
      recursive descent depth first traversal and permits filtering
      options (recursion depth limitation, filtering of struct fields).
      
      I have been using it to diagnose compiler bugs and found it more
      useful than the existing node printing code in some cases because
      field filtering reduces the output to the interesting parts.
      
      No impact on rest of compiler if functions are not called (which
      they only should during a debugging session).
      
      Change-Id: I79d7227f10dd78dbd4bbcdf204db236102fc97a7
      Reviewed-on: https://go-review.googlesource.com/136397Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      5d444e36
    • Katie Hockman's avatar
      doc: document Go 1.11.1 · f99fc3a1
      Katie Hockman authored
      Change-Id: I2f1a55e15dc5737a5a06bd894c46b2c4705f338c
      Reviewed-on: https://go-review.googlesource.com/138858Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      f99fc3a1
    • Shulhan's avatar
      runtime: fix runtime gdb test with gdb v8.2 · a9c69e0a
      Shulhan authored
      Previously, some of output from gdb matched with literal string, while
      gdb v8.2 print the address of variable (e.g. map key and value) in
      output.
      
      This commit fix the regex in testing the output.
      
      Fixes #27608
      
      Change-Id: Ic3fe8280b9f93fda2799116804822616caa66beb
      Reviewed-on: https://go-review.googlesource.com/135055
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      a9c69e0a
    • Ian Davis's avatar
      image: optimize bounds checking for At and Set methods · b57ccdf9
      Ian Davis authored
      Use a subslice of the pixel data to give the compiler hints
      for bounds checking. Only do this for image formats that
      require 4 or more slice reads/writes.
      
      See #27857 for discussion of small cap sizes.
      
      name                   old time/op    new time/op    delta
      At/rgba-8              18.8ns ± 2%    18.5ns ± 1%   -1.49%  (p=0.026 n=10+10)
      At/rgba64-8            22.2ns ± 2%    21.1ns ± 3%   -4.51%  (p=0.000 n=10+10)
      At/nrgba-8             18.8ns ± 2%    18.7ns ± 2%     ~     (p=0.467 n=10+10)
      At/nrgba64-8           21.9ns ± 2%    21.0ns ± 2%   -4.15%  (p=0.000 n=10+9)
      At/alpha-8             14.3ns ± 1%    14.3ns ± 2%     ~     (p=0.543 n=10+10)
      At/alpha16-8           6.43ns ± 1%    6.47ns ± 1%     ~     (p=0.053 n=10+10)
      At/gray-8              14.4ns ± 2%    14.6ns ± 5%     ~     (p=0.194 n=10+10)
      At/gray16-8            6.52ns ± 1%    6.55ns ± 2%     ~     (p=0.610 n=10+10)
      At/paletted-8          4.17ns ± 1%    4.21ns ± 2%     ~     (p=0.095 n=9+10)
      Set/rgba-8             39.2ns ± 2%    40.1ns ± 4%   +2.45%  (p=0.007 n=10+10)
      Set/rgba64-8           46.2ns ± 3%    43.3ns ± 3%   -6.11%  (p=0.000 n=10+10)
      Set/nrgba-8            39.2ns ± 1%    39.7ns ± 5%     ~     (p=0.407 n=10+10)
      Set/nrgba64-8          45.6ns ± 3%    42.9ns ± 3%   -5.83%  (p=0.000 n=9+10)
      Set/alpha-8            35.0ns ± 3%    34.1ns ± 2%   -2.43%  (p=0.017 n=10+10)
      Set/alpha16-8          36.3ns ± 4%    35.8ns ± 5%     ~     (p=0.254 n=10+10)
      Set/gray-8             19.8ns ± 1%    19.7ns ± 0%   -0.69%  (p=0.002 n=8+6)
      Set/gray16-8           36.0ns ± 1%    36.4ns ± 2%   +1.08%  (p=0.037 n=10+10)
      Set/paletted-8         39.1ns ± 0%    39.6ns ± 1%   +1.30%  (p=0.000 n=10+10)
      RGBAAt-8               3.72ns ± 1%    3.58ns ± 1%   -3.76%  (p=0.000 n=9+10)
      RGBASetRGBA-8          4.35ns ± 1%    3.70ns ± 1%  -14.92%  (p=0.000 n=10+10)
      RGBA64At-8             5.08ns ± 1%    3.69ns ± 1%  -27.40%  (p=0.000 n=9+9)
      RGBA64SetRGBA64-8      6.65ns ± 2%    3.63ns ± 0%  -45.35%  (p=0.000 n=10+9)
      NRGBAAt-8              3.72ns ± 1%    3.59ns ± 1%   -3.55%  (p=0.000 n=10+10)
      NRGBASetNRGBA-8        4.05ns ± 0%    3.71ns ± 1%   -8.57%  (p=0.000 n=9+10)
      NRGBA64At-8            4.99ns ± 1%    3.69ns ± 0%  -26.07%  (p=0.000 n=10+9)
      NRGBA64SetNRGBA64-8    6.66ns ± 1%    3.64ns ± 1%  -45.40%  (p=0.000 n=10+10)
      AlphaAt-8              1.44ns ± 1%    1.44ns ± 0%     ~     (p=0.176 n=10+7)
      AlphaSetAlpha-8        1.60ns ± 2%    1.56ns ± 0%   -2.62%  (p=0.000 n=10+6)
      Alpha16At-8            2.87ns ± 1%    2.92ns ± 2%   +1.67%  (p=0.001 n=10+10)
      AlphaSetAlpha16-8      3.26ns ± 1%    3.35ns ± 1%   +2.68%  (p=0.012 n=8+3)
      
      Fixes #14884
      
      Change-Id: Ia0383530596a550e1b1c7aafce5220e5e0935a53
      Reviewed-on: https://go-review.googlesource.com/137495Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      b57ccdf9
    • Katie Hockman's avatar
      Revert "compress: move benchmark text from src/testdata to src/compress/testdata" · 43cd9070
      Katie Hockman authored
      This reverts commit 067bb443.
      
      Reason for revert:
      Failing Darwin-arm builds because that testing environment does not access testdata
      from sibling directories. A future change will likely be made to move this testdata
      out of src/testdata to create a solution that doesn't require the single-file directory.
      
      Updates #27151
      
      Change-Id: I8dbf5dd9512c94a605ee749ff4655cb00b0de686
      Reviewed-on: https://go-review.googlesource.com/138737Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
      43cd9070
  3. 30 Sep, 2018 1 commit
  4. 29 Sep, 2018 4 commits
    • Keith Randall's avatar
      reflect: ensure correct scanning of return values · ef503739
      Keith Randall authored
      During a call to a reflect-generated function or method (via
      makeFuncStub or methodValueCall), when should we scan the return
      values?
      
      When we're starting a reflect call, the space on the stack for the
      return values is not initialized yet, as it contains whatever junk was
      on the stack of the caller at the time. The return space must not be
      scanned during a GC.
      
      When we're finishing a reflect call, the return values are
      initialized, and must be scanned during a GC to make sure that any
      pointers in the return values are found and their referents retained.
      
      When the GC stack walk comes across a reflect call in progress on the
      stack, it needs to know whether to scan the results or not. It doesn't
      know the progress of the reflect call, so it can't decide by
      itself. The reflect package needs to tell it.
      
      This CL adds another slot in the frame of makeFuncStub and
      methodValueCall so we can put a boolean in there which tells the
      runtime whether to scan the results or not.
      
      This CL also adds the args length to reflectMethodValue so the
      runtime can restrict its scanning to only the args section (not the
      results) if the reflect package says the results aren't ready yet.
      
      Do a delicate dance in the reflect package to set the "results are
      valid" bit. We need to make sure we set the bit only after we've
      copied the results back to the stack. But we must set the bit before
      we drop reflect's copy of the results. Otherwise, we might have a
      state where (temporarily) no one has a live copy of the results.
      That's the state we were observing in issue #27695 before this CL.
      
      The bitmap used by the runtime currently contains only the args.
      (Actually, it contains all the bits, but the size is set so we use
      only the args portion.) This is safe for early in a reflect call, but
      unsafe late in a reflect call. The test issue27695.go demonstrates
      this unsafety. We change the bitmap to always include both args
      and results, and decide at runtime which portion to use.
      
      issue27695.go only has a test for method calls. Function calls were ok
      because there wasn't a safepoint between when reflect dropped its copy
      of the return values and when the caller is resumed. This may change
      when we introduce safepoints everywhere.
      
      This truncate-to-only-the-args was part of CL 9888 (in 2015). That
      part of the CL fixed the problem demonstrated in issue27695b.go but
      introduced the problem demonstrated in issue27695.go.
      
      TODO, in another CL: simplify FuncLayout and its test. stack return
      value is now identical to frametype.ptrdata + frametype.gcdata.
      
      Fixes #27695
      
      Change-Id: I2d49b34e34a82c6328b34f02610587a291b25c5f
      Reviewed-on: https://go-review.googlesource.com/137440
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      ef503739
    • Jake B's avatar
      misc/wasm: add polyfill for TextEncoder/TextDecoder for Edge support · a0e7f127
      Jake B authored
      Edge supports WASM but not TextEncoder or TextDecoder.
      This PR adds a polyfill to `misc/wasm/wasm_exec.js` to fix this.
      
      Fixes #27295
      
      Change-Id: Ie35ee5604529b170a5dc380eb286f71bdd691d3e
      GitHub-Last-Rev: a587edae2806e1ca9b6be1c5dfd8824568373bdb
      GitHub-Pull-Request: golang/go#27296
      Reviewed-on: https://go-review.googlesource.com/131718Reviewed-by: 's avatarAgniva De Sarker <agniva.quicksilver@gmail.com>
      Reviewed-by: 's avatarRichard Musiol <neelance@gmail.com>
      a0e7f127
    • QtRoS's avatar
      path/filepath: fix Windows-specific Clean bug · d1f7470c
      QtRoS authored
      Fixes #27791
      Change-Id: I762fa663379086c24cb4ddc8233a2c0a82b1238e
      Reviewed-on: https://go-review.googlesource.com/137055
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlex Brainman <alex.brainman@gmail.com>
      d1f7470c
    • Alex Brainman's avatar
      os: use FILE_FLAG_OPEN_REPARSE_POINT in SameFile · 1c95d972
      Alex Brainman authored
      SameFile opens file to discover identifier and volume serial
      number that uniquely identify the file. SameFile uses Windows
      CreateFile API to open the file, and that works well for files
      and directories. But CreateFile always follows symlinks, so
      SameFile always opens symlink target instead of symlink itself.
      
      This CL uses FILE_FLAG_OPEN_REPARSE_POINT flag to adjust
      CreateFile behavior when handling symlinks.
      
      As per https://docs.microsoft.com/en-us/windows/desktop/FileIO/symbolic-link-effects-on-file-systems-functions#createfile-and-createfiletransacted
      
      "... If FILE_FLAG_OPEN_REPARSE_POINT is specified and:
      
      If an existing file is opened and it is a symbolic link, the handle
      returned is a handle to the symbolic link. ...".
      
      I also added new tests for both issue #21854 and #27225.
      Issue #27225 is still to be fixed, so skipping the test on
      windows for the moment.
      
      Fixes #21854
      Updates #27225
      
      Change-Id: I8aaa13ad66ce3b4074991bb50994d2aeeeaa7c95
      Reviewed-on: https://go-review.googlesource.com/134195
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      1c95d972
  5. 28 Sep, 2018 10 commits
    • Ian Lance Taylor's avatar
      cmd/go: permit some more x86 compiler options · 7dda5123
      Ian Lance Taylor authored
      Permit -mssse3, -maes, -mvaes, and various -mavxNNN options.
      
      Change-Id: If496df6b84eca37897fd603a6480c9f63e7f7382
      Reviewed-on: https://go-review.googlesource.com/138476
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7dda5123
    • Katie Hockman's avatar
      compress: move benchmark text from src/testdata to src/compress/testdata · 067bb443
      Katie Hockman authored
      This text is used mainly for benchmark compression testing, and in one
      net test. The text was prevoiusly in a src/testdata directory, but since
      that directory would only include one file, the text is moved to the
      existing src/compression/testdata directory.
      
      This does not cause any change to the benchmark results.
      
      Updates #27151
      
      Change-Id: I38ab5089dfe744189a970947d15be50ef1d48517
      Reviewed-on: https://go-review.googlesource.com/138495
      Run-TryBot: Katie Hockman <katie@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      067bb443
    • Austin Clements's avatar
      runtime: don't call mcache.refill on systemstack · 01e6cfc2
      Austin Clements authored
      mcache.refill doesn't need to run on the system stack; it just needs
      to be non-preemptible. Its only caller, mcache.nextFree, also needs to
      be non-preemptible, so we can remove the unnecessary systemstack
      switch.
      
      Change-Id: Iba5b3f4444855f1dc134485ba588efff3b54c426
      Reviewed-on: https://go-review.googlesource.com/138196
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      01e6cfc2
    • Austin Clements's avatar
      runtime: remove redundant locking in mcache.refill · 2d23ece1
      Austin Clements authored
      mcache.refill acquires g.m.locks, which is pointless because the
      caller itself absolutely must have done so already to prevent
      ownership of mcache from shifting.
      
      Also, mcache.refill's documentation is generally a bit out-of-date, so
      this cleans this up.
      
      Change-Id: Idc8de666fcaf3c3d96006bd23a8f307539587d6c
      Reviewed-on: https://go-review.googlesource.com/138195
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      2d23ece1
    • Alessandro Arzilli's avatar
      doc: remove "known bug" about global variables in debug_info. · eac99c44
      Alessandro Arzilli authored
      This hasn't been true at least since 1.4. Until golang.org/cl/137235
      they were lumped together into a random compile unit, now they are
      assigned to the correct one.
      
      Change-Id: Ib66539bd67af3e9daeecac8bf5f32c10e62e11b1
      Reviewed-on: https://go-review.googlesource.com/138415Reviewed-by: 's avatarThan McIntosh <thanm@google.com>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      eac99c44
    • Ben Shi's avatar
      cmd/compile: optimize arm64's code with more shifted operations · 5aeecc45
      Ben Shi authored
      This CL optimizes arm64's NEG/MVN/TST/CMN with a shifted operand.
      
      1. The total size of pkg/android_arm64 decreases about 0.2KB, excluding
      cmd/compile/ .
      
      2. The go1 benchmark shows no regression, excluding noise.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              16.4s ± 1%     16.4s ± 1%    ~     (p=0.914 n=29+29)
      Fannkuch11-4                8.72s ± 0%     8.72s ± 0%    ~     (p=0.274 n=30+29)
      FmtFprintfEmpty-4           174ns ± 0%     174ns ± 0%    ~     (all equal)
      FmtFprintfString-4          370ns ± 0%     370ns ± 0%    ~     (all equal)
      FmtFprintfInt-4             419ns ± 0%     419ns ± 0%    ~     (all equal)
      FmtFprintfIntInt-4          672ns ± 1%     675ns ± 2%    ~     (p=0.217 n=28+30)
      FmtFprintfPrefixedInt-4     806ns ± 0%     806ns ± 0%    ~     (p=0.402 n=30+28)
      FmtFprintfFloat-4          1.09µs ± 0%    1.09µs ± 0%  +0.02%  (p=0.011 n=22+27)
      FmtManyArgs-4              2.67µs ± 0%    2.68µs ± 0%    ~     (p=0.279 n=29+30)
      GobDecode-4                33.1ms ± 1%    33.1ms ± 0%    ~     (p=0.052 n=28+29)
      GobEncode-4                29.6ms ± 0%    29.6ms ± 0%  +0.08%  (p=0.013 n=28+29)
      Gzip-4                      1.38s ± 2%     1.39s ± 2%    ~     (p=0.071 n=29+29)
      Gunzip-4                    139ms ± 0%     139ms ± 0%    ~     (p=0.265 n=29+29)
      HTTPClientServer-4          789µs ± 4%     785µs ± 4%    ~     (p=0.206 n=29+28)
      JSONEncode-4               49.7ms ± 0%    49.6ms ± 0%  -0.24%  (p=0.000 n=30+30)
      JSONDecode-4                266ms ± 1%     267ms ± 1%  +0.34%  (p=0.000 n=30+30)
      Mandelbrot200-4            16.6ms ± 0%    16.6ms ± 0%    ~     (p=0.835 n=28+30)
      GoParse-4                  15.9ms ± 0%    15.8ms ± 0%  -0.29%  (p=0.000 n=27+30)
      RegexpMatchEasy0_32-4       380ns ± 0%     381ns ± 0%  +0.18%  (p=0.000 n=30+30)
      RegexpMatchEasy0_1K-4      1.18µs ± 0%    1.19µs ± 0%  +0.23%  (p=0.000 n=30+30)
      RegexpMatchEasy1_32-4       357ns ± 0%     358ns ± 0%  +0.28%  (p=0.000 n=29+29)
      RegexpMatchEasy1_1K-4      2.04µs ± 0%    2.04µs ± 0%  +0.06%  (p=0.006 n=30+30)
      RegexpMatchMedium_32-4      589ns ± 0%     590ns ± 0%  +0.24%  (p=0.000 n=28+30)
      RegexpMatchMedium_1K-4      162µs ± 0%     162µs ± 0%  -0.01%  (p=0.027 n=26+29)
      RegexpMatchHard_32-4       9.58µs ± 0%    9.58µs ± 0%    ~     (p=0.935 n=30+30)
      RegexpMatchHard_1K-4        287µs ± 0%     287µs ± 0%    ~     (p=0.387 n=29+30)
      Revcomp-4                   2.50s ± 0%     2.50s ± 0%  -0.10%  (p=0.020 n=28+28)
      Template-4                  310ms ± 0%     310ms ± 1%    ~     (p=0.406 n=30+30)
      TimeParse-4                1.68µs ± 0%    1.68µs ± 0%  +0.03%  (p=0.014 n=30+17)
      TimeFormat-4               1.65µs ± 0%    1.66µs ± 0%  +0.32%  (p=0.000 n=27+29)
      [Geo mean]                  247µs          247µs       +0.05%
      
      name                     old speed      new speed      delta
      GobDecode-4              23.2MB/s ± 0%  23.2MB/s ± 0%  -0.08%  (p=0.032 n=27+29)
      GobEncode-4              26.0MB/s ± 0%  25.9MB/s ± 0%  -0.10%  (p=0.011 n=29+29)
      Gzip-4                   14.1MB/s ± 2%  14.0MB/s ± 2%    ~     (p=0.081 n=29+29)
      Gunzip-4                  139MB/s ± 0%   139MB/s ± 0%    ~     (p=0.290 n=29+29)
      JSONEncode-4             39.0MB/s ± 0%  39.1MB/s ± 0%  +0.25%  (p=0.000 n=29+30)
      JSONDecode-4             7.30MB/s ± 1%  7.28MB/s ± 1%  -0.33%  (p=0.000 n=30+30)
      GoParse-4                3.65MB/s ± 0%  3.66MB/s ± 0%  +0.29%  (p=0.000 n=27+30)
      RegexpMatchEasy0_32-4    84.1MB/s ± 0%  84.0MB/s ± 0%  -0.17%  (p=0.000 n=30+28)
      RegexpMatchEasy0_1K-4     864MB/s ± 0%   862MB/s ± 0%  -0.24%  (p=0.000 n=30+30)
      RegexpMatchEasy1_32-4    89.5MB/s ± 0%  89.3MB/s ± 0%  -0.18%  (p=0.000 n=28+24)
      RegexpMatchEasy1_1K-4     502MB/s ± 0%   502MB/s ± 0%  -0.05%  (p=0.008 n=30+29)
      RegexpMatchMedium_32-4   1.70MB/s ± 0%  1.69MB/s ± 0%  -0.59%  (p=0.000 n=29+30)
      RegexpMatchMedium_1K-4   6.31MB/s ± 0%  6.31MB/s ± 0%  +0.05%  (p=0.005 n=30+26)
      RegexpMatchHard_32-4     3.34MB/s ± 0%  3.34MB/s ± 0%    ~     (all equal)
      RegexpMatchHard_1K-4     3.57MB/s ± 0%  3.57MB/s ± 0%    ~     (all equal)
      Revcomp-4                 102MB/s ± 0%   102MB/s ± 0%  +0.10%  (p=0.022 n=28+28)
      Template-4               6.26MB/s ± 0%  6.26MB/s ± 1%    ~     (p=0.768 n=30+30)
      [Geo mean]               24.2MB/s       24.1MB/s       -0.08%
      
      Change-Id: I494f9db7f8a568a00e9c74ae25086a58b2221683
      Reviewed-on: https://go-review.googlesource.com/137976
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      5aeecc45
    • Ben Shi's avatar
      cmd/compile: optimize arm64's MADD and MSUB · d60cf39f
      Ben Shi authored
      This CL implements constant folding for MADD/MSUB on arm64.
      
      1. The total size of pkg/android_arm64/ decreases about 4KB,
         excluding cmd/compile/ .
      
      2. There is no regression in the go1 benchmark, excluding noise.
      name                     old time/op    new time/op    delta
      BinaryTree17-4              16.4s ± 1%     16.5s ± 1%  +0.24%  (p=0.008 n=29+29)
      Fannkuch11-4                8.73s ± 0%     8.71s ± 0%  -0.15%  (p=0.000 n=29+29)
      FmtFprintfEmpty-4           174ns ± 0%     174ns ± 0%    ~     (all equal)
      FmtFprintfString-4          370ns ± 0%     372ns ± 2%  +0.53%  (p=0.007 n=24+30)
      FmtFprintfInt-4             419ns ± 0%     419ns ± 0%    ~     (all equal)
      FmtFprintfIntInt-4          673ns ± 1%     661ns ± 1%  -1.81%  (p=0.000 n=30+27)
      FmtFprintfPrefixedInt-4     806ns ± 0%     805ns ± 0%    ~     (p=0.957 n=28+27)
      FmtFprintfFloat-4          1.09µs ± 0%    1.09µs ± 0%  -0.04%  (p=0.001 n=22+30)
      FmtManyArgs-4              2.67µs ± 0%    2.68µs ± 0%  +0.03%  (p=0.045 n=29+28)
      GobDecode-4                33.2ms ± 1%    32.5ms ± 1%  -2.11%  (p=0.000 n=29+29)
      GobEncode-4                29.5ms ± 0%    29.2ms ± 0%  -1.04%  (p=0.000 n=28+28)
      Gzip-4                      1.39s ± 2%     1.38s ± 1%  -0.48%  (p=0.023 n=30+30)
      Gunzip-4                    139ms ± 0%     139ms ± 0%    ~     (p=0.616 n=30+28)
      HTTPClientServer-4          766µs ± 4%     758µs ± 3%  -1.03%  (p=0.013 n=28+29)
      JSONEncode-4               49.7ms ± 0%    49.6ms ± 0%  -0.24%  (p=0.000 n=30+30)
      JSONDecode-4                266ms ± 0%     268ms ± 1%  +1.07%  (p=0.000 n=29+30)
      Mandelbrot200-4            16.6ms ± 0%    16.6ms ± 0%    ~     (p=0.248 n=30+29)
      GoParse-4                  15.9ms ± 0%    16.0ms ± 0%  +0.76%  (p=0.000 n=29+29)
      RegexpMatchEasy0_32-4       381ns ± 0%     380ns ± 0%  -0.14%  (p=0.000 n=30+30)
      RegexpMatchEasy0_1K-4      1.18µs ± 0%    1.19µs ± 1%  +0.30%  (p=0.000 n=29+30)
      RegexpMatchEasy1_32-4       357ns ± 0%     357ns ± 0%    ~     (all equal)
      RegexpMatchEasy1_1K-4      2.04µs ± 0%    2.05µs ± 0%  +0.50%  (p=0.000 n=26+28)
      RegexpMatchMedium_32-4      590ns ± 0%     589ns ± 0%  -0.12%  (p=0.000 n=30+23)
      RegexpMatchMedium_1K-4      162µs ± 0%     162µs ± 0%    ~     (p=0.318 n=28+25)
      RegexpMatchHard_32-4       9.56µs ± 0%    9.56µs ± 0%    ~     (p=0.072 n=30+29)
      RegexpMatchHard_1K-4        287µs ± 0%     287µs ± 0%  -0.02%  (p=0.005 n=28+28)
      Revcomp-4                   2.50s ± 0%     2.51s ± 0%    ~     (p=0.246 n=29+29)
      Template-4                  312ms ± 1%     313ms ± 1%  +0.46%  (p=0.002 n=30+30)
      TimeParse-4                1.68µs ± 0%    1.67µs ± 0%  -0.31%  (p=0.000 n=27+29)
      TimeFormat-4               1.66µs ± 0%    1.64µs ± 0%  -0.92%  (p=0.000 n=29+26)
      [Geo mean]                  247µs          246µs       -0.15%
      
      name                     old speed      new speed      delta
      GobDecode-4              23.1MB/s ± 1%  23.6MB/s ± 0%  +2.17%  (p=0.000 n=29+28)
      GobEncode-4              26.0MB/s ± 0%  26.3MB/s ± 0%  +1.05%  (p=0.000 n=28+28)
      Gzip-4                   14.0MB/s ± 2%  14.1MB/s ± 1%  +0.47%  (p=0.026 n=30+30)
      Gunzip-4                  139MB/s ± 0%   139MB/s ± 0%    ~     (p=0.624 n=30+28)
      JSONEncode-4             39.1MB/s ± 0%  39.2MB/s ± 0%  +0.24%  (p=0.000 n=30+30)
      JSONDecode-4             7.31MB/s ± 0%  7.23MB/s ± 1%  -1.07%  (p=0.000 n=28+30)
      GoParse-4                3.65MB/s ± 0%  3.62MB/s ± 0%  -0.77%  (p=0.000 n=29+29)
      RegexpMatchEasy0_32-4    84.0MB/s ± 0%  84.1MB/s ± 0%  +0.18%  (p=0.000 n=28+30)
      RegexpMatchEasy0_1K-4     864MB/s ± 0%   861MB/s ± 1%  -0.29%  (p=0.000 n=29+30)
      RegexpMatchEasy1_32-4    89.5MB/s ± 0%  89.5MB/s ± 0%    ~     (p=0.841 n=28+28)
      RegexpMatchEasy1_1K-4     502MB/s ± 0%   500MB/s ± 0%  -0.51%  (p=0.000 n=29+29)
      RegexpMatchMedium_32-4   1.69MB/s ± 0%  1.70MB/s ± 0%  +0.41%  (p=0.000 n=26+30)
      RegexpMatchMedium_1K-4   6.31MB/s ± 0%  6.30MB/s ± 0%    ~     (p=0.129 n=30+25)
      RegexpMatchHard_32-4     3.35MB/s ± 0%  3.35MB/s ± 0%    ~     (p=0.657 n=30+29)
      RegexpMatchHard_1K-4     3.57MB/s ± 0%  3.57MB/s ± 0%    ~     (all equal)
      Revcomp-4                 102MB/s ± 0%   101MB/s ± 0%    ~     (p=0.213 n=29+29)
      Template-4               6.22MB/s ± 1%  6.19MB/s ± 1%  -0.42%  (p=0.005 n=30+29)
      [Geo mean]               24.1MB/s       24.2MB/s       +0.08%
      
      Change-Id: I6c02d3c9975f6bd8bc215cb1fc14d29602b45649
      Reviewed-on: https://go-review.googlesource.com/138095
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      d60cf39f
    • Clément Chigot's avatar
      go/build, runtime/internal/sys: add GOOS=aix · bf8e6b70
      Clément Chigot authored
      This is the first commit of a series that will add AIX as an
      operating system target for ppc64 architecture.
      
      Updates #25893
      
      Change-Id: I865b67a9c98277c11c1a56107be404ac5253277d
      Reviewed-on: https://go-review.googlesource.com/138115
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      bf8e6b70
    • Chris Broadfoot's avatar
      doc: add go1.11 to contrib.html · 38861b51
      Chris Broadfoot authored
      Missing from https://golang.org/project
      
      Change-Id: I6cb769ae861a81f0264bae624b5fe8d70aa92497
      Reviewed-on: https://go-review.googlesource.com/138355Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      38861b51
    • Ian Davis's avatar
      all: remove repeated "the" from comments · d3dcd891
      Ian Davis authored
      A simple grep over the codebase for "the the" which is often
      missed by humans.
      
      Change-Id: Ie4b4f07abfc24c73dcd51c8ef1edf4f73514a21c
      Reviewed-on: https://go-review.googlesource.com/138335Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      d3dcd891