1. 02 Nov, 2018 4 commits
  2. 01 Nov, 2018 10 commits
  3. 31 Oct, 2018 15 commits
    • Keith Randall's avatar
      runtime: exit early when scanning map buckets · 4b05c01f
      Keith Randall authored
      Divide the "empty" slot state into two, "emptyOne" and "emptyRest".
      emptyOne means just that slot is empty. emptyRest means all subsequent
      slots in that bucket are empty and the overflow pointer is nil.
      
      When scanning a bucket, we can often stop at emptyRest, reducing
      the total work we have to do. (This is similar to how tombstones
      work in open addressing.)
      
      Ideally on delete we have to figure out whether to zero the slot
      with an emptyOne or emptyRest marker. For now, we choose the safe
      but non-optimal choice. (Fix in subsequent CL?)
      
      This is a simpler CL than some others we've tried, including my
      CL sequence 11835[5-8] and Ilya's CL 115616.
      
      Update #19495
      
      name                           old time/op    new time/op    delta
      MegMap                           8.96ns ± 2%    8.74ns ± 6%   -2.44%  (p=0.020 n=10+10)
      MegOneMap                        8.91ns ± 2%    5.53ns ± 2%  -37.99%  (p=0.000 n=10+10)
      MegEqMap                         46.0µs ± 1%    45.8µs ± 3%     ~     (p=0.315 n=9+10)
      MegEmptyMap                      2.50ns ± 0%    2.50ns ± 2%     ~     (p=0.957 n=8+10)
      SmallStrMap                      8.54ns ± 1%    8.71ns ± 2%   +2.01%  (p=0.000 n=10+10)
      MapStringKeysEight_16            8.61ns ± 3%    8.71ns ± 3%   +1.20%  (p=0.026 n=9+9)
      MapStringKeysEight_32            8.54ns ± 2%    8.97ns ± 1%   +5.05%  (p=0.000 n=10+9)
      MapStringKeysEight_64            8.66ns ± 2%    8.99ns ± 2%   +3.87%  (p=0.000 n=10+10)
      MapStringKeysEight_1M            8.57ns ± 2%    8.95ns ± 2%   +4.51%  (p=0.000 n=10+9)
      IntMap                           6.69ns ± 1%    7.46ns ± 1%  +11.60%  (p=0.000 n=9+9)
      MapFirst/1                       3.69ns ± 1%    3.63ns ± 3%   -1.52%  (p=0.040 n=10+10)
      MapFirst/2                       3.70ns ± 2%    3.63ns ± 2%   -1.95%  (p=0.001 n=9+9)
      MapFirst/3                       3.74ns ± 2%    3.66ns ± 2%   -2.12%  (p=0.000 n=8+10)
      MapFirst/4                       3.71ns ± 2%    3.66ns ± 4%     ~     (p=0.073 n=9+10)
      MapFirst/5                       3.69ns ± 1%    3.62ns ± 2%   -1.88%  (p=0.000 n=9+10)
      MapFirst/6                       3.68ns ± 2%    3.62ns ± 1%   -1.83%  (p=0.001 n=10+9)
      MapFirst/7                       3.67ns ± 1%    3.60ns ± 1%   -1.98%  (p=0.000 n=10+8)
      MapFirst/8                       3.68ns ± 2%    3.61ns ± 2%   -1.87%  (p=0.000 n=10+10)
      MapFirst/9                       8.03ns ± 4%    7.89ns ± 2%   -1.76%  (p=0.007 n=10+10)
      MapFirst/10                      7.99ns ± 2%    7.86ns ± 3%   -1.64%  (p=0.009 n=9+10)
      MapFirst/11                      7.96ns ± 1%    7.80ns ± 2%   -2.01%  (p=0.000 n=10+10)
      MapFirst/12                      7.96ns ± 1%    7.82ns ± 1%   -1.67%  (p=0.000 n=10+10)
      MapFirst/13                      8.06ns ± 3%    7.92ns ± 3%     ~     (p=0.055 n=10+10)
      MapFirst/14                      7.95ns ± 1%    7.80ns ± 1%   -1.88%  (p=0.000 n=10+9)
      MapFirst/15                      8.01ns ± 2%    7.80ns ± 2%   -2.57%  (p=0.000 n=10+10)
      MapFirst/16                      8.05ns ± 2%    7.90ns ± 2%   -1.84%  (p=0.005 n=9+10)
      MapMid/1                         4.00ns ± 1%    3.94ns ± 2%   -1.30%  (p=0.021 n=8+9)
      MapMid/2                         4.39ns ± 2%    4.32ns ± 4%     ~     (p=0.128 n=10+10)
      MapMid/3                         4.40ns ± 2%    4.27ns ± 2%   -2.93%  (p=0.000 n=10+9)
      MapMid/4                         4.76ns ± 2%    4.65ns ± 1%   -2.26%  (p=0.000 n=10+9)
      MapMid/5                         4.76ns ± 1%    4.65ns ± 1%   -2.27%  (p=0.000 n=10+10)
      MapMid/6                         5.11ns ± 2%    4.98ns ± 2%   -2.55%  (p=0.000 n=10+10)
      MapMid/7                         5.12ns ± 1%    5.01ns ± 3%   -2.02%  (p=0.003 n=9+9)
      MapMid/8                         5.71ns ± 3%    5.97ns ± 1%   +4.51%  (p=0.000 n=10+9)
      MapMid/9                         8.72ns ±10%    8.89ns ±10%     ~     (p=0.458 n=9+10)
      MapMid/10                        10.1ns ±15%     9.6ns ± 7%     ~     (p=0.080 n=9+10)
      MapMid/11                        9.88ns ±10%    9.44ns ±11%     ~     (p=0.065 n=10+10)
      MapMid/12                        9.90ns ±13%   10.04ns ± 9%     ~     (p=1.000 n=10+8)
      MapMid/13                        9.67ns ±14%   10.23ns ±10%     ~     (p=0.209 n=10+9)
      MapMid/14                        9.12ns ±14%    9.14ns ±13%     ~     (p=0.927 n=10+10)
      MapMid/15                        9.16ns ±12%    9.15ns ±16%     ~     (p=0.955 n=10+10)
      MapMid/16                        9.37ns ±11%    9.60ns ±23%     ~     (p=0.825 n=9+10)
      MapLast/1                        4.08ns ± 1%    3.92ns ± 0%   -3.91%  (p=0.000 n=10+9)
      MapLast/2                        4.37ns ± 1%    4.28ns ± 1%   -1.95%  (p=0.000 n=10+10)
      MapLast/3                        4.94ns ± 2%    4.65ns ± 1%   -5.79%  (p=0.000 n=9+8)
      MapLast/4                        5.40ns ± 3%    5.02ns ± 2%   -7.13%  (p=0.000 n=9+9)
      MapLast/5                        5.88ns ± 2%    5.67ns ± 2%   -3.57%  (p=0.000 n=10+10)
      MapLast/6                        6.48ns ± 3%    5.90ns ± 2%   -8.89%  (p=0.000 n=10+10)
      MapLast/7                        7.01ns ± 2%    6.27ns ± 5%  -10.56%  (p=0.000 n=10+10)
      MapLast/8                        7.60ns ± 2%    6.62ns ± 2%  -12.93%  (p=0.000 n=9+10)
      MapLast/9                        10.6ns ± 9%    10.9ns ±15%     ~     (p=0.344 n=9+10)
      MapLast/10                       11.0ns ±12%    10.9ns ±14%     ~     (p=0.985 n=10+10)
      MapLast/11                       11.4ns ±12%    11.8ns ±22%     ~     (p=0.671 n=10+10)
      MapLast/12                       11.6ns ±10%    12.1ns ±19%     ~     (p=0.617 n=10+10)
      MapLast/13                       12.5ns ±23%    11.8ns ±13%     ~     (p=0.827 n=10+9)
      MapLast/14                       10.5ns ±22%    10.4ns ± 5%     ~     (p=0.797 n=10+9)
      MapLast/15                       10.0ns ±15%    10.3ns ±16%     ~     (p=0.565 n=10+10)
      MapLast/16                       10.4ns ±12%    10.5ns ±13%     ~     (p=0.889 n=10+9)
      MapCycle                         22.3ns ± 1%    22.0ns ± 2%   -1.43%  (p=0.002 n=9+10)
      RepeatedLookupStrMapKey32        16.4ns ± 1%    16.6ns ± 1%   +1.24%  (p=0.000 n=10+9)
      RepeatedLookupStrMapKey1M        35.6µs ± 0%    35.4µs ± 1%   -0.62%  (p=0.002 n=10+10)
      NewEmptyMap                      5.36ns ± 1%    9.05ns ± 1%  +69.02%  (p=0.000 n=10+8)
      NewSmallMap                      51.2ns ± 2%    33.7ns ± 1%  -34.22%  (p=0.000 n=10+9)
      MapIter                          83.8ns ± 1%    88.4ns ± 1%   +5.55%  (p=0.000 n=10+10)
      MapIterEmpty                     4.32ns ± 3%    5.54ns ± 3%  +28.12%  (p=0.000 n=10+10)
      SameLengthMap                    4.31ns ± 1%    4.59ns ± 2%   +6.41%  (p=0.000 n=9+10)
      BigKeyMap                        24.2ns ± 2%    24.3ns ± 1%     ~     (p=0.432 n=10+10)
      BigValMap                        24.3ns ± 1%    24.4ns ± 2%     ~     (p=0.200 n=10+9)
      SmallKeyMap                      17.5ns ± 1%    18.5ns ± 2%   +5.81%  (p=0.000 n=9+10)
      MapPopulate/1                    29.0ns ± 4%    18.8ns ± 1%  -35.27%  (p=0.000 n=10+9)
      MapPopulate/10                    736ns ± 5%     693ns ± 4%   -5.92%  (p=0.000 n=10+10)
      MapPopulate/100                  11.3µs ± 2%    10.8µs ± 3%   -4.38%  (p=0.000 n=10+10)
      MapPopulate/1000                  139µs ± 8%     132µs ± 4%   -5.10%  (p=0.002 n=10+10)
      MapPopulate/10000                1.21ms ± 5%    1.16ms ± 5%   -4.56%  (p=0.002 n=10+10)
      MapPopulate/100000               12.2ms ± 3%    11.8ms ± 5%     ~     (p=0.052 n=10+10)
      ComplexAlgMap                    73.9ns ± 1%    74.4ns ± 2%     ~     (p=0.161 n=9+10)
      GoMapClear/Reflexive/1           36.0ns ± 1%    26.9ns ± 2%  -25.31%  (p=0.000 n=10+10)
      GoMapClear/Reflexive/10          35.2ns ± 1%    24.4ns ± 1%  -30.62%  (p=0.000 n=10+10)
      GoMapClear/Reflexive/100         69.6ns ± 2%    59.2ns ± 1%  -14.92%  (p=0.000 n=10+10)
      GoMapClear/Reflexive/1000        1.06µs ± 2%    1.05µs ± 1%   -1.16%  (p=0.013 n=10+9)
      GoMapClear/Reflexive/10000       11.7µs ± 1%    11.7µs ± 1%     ~     (p=0.542 n=10+10)
      GoMapClear/NonReflexive/1        96.3ns ± 1%    90.0ns ± 1%   -6.52%  (p=0.000 n=10+10)
      GoMapClear/NonReflexive/10        110ns ± 2%     101ns ± 0%   -8.10%  (p=0.000 n=10+7)
      GoMapClear/NonReflexive/100       270ns ± 2%     235ns ± 2%  -12.94%  (p=0.000 n=10+10)
      GoMapClear/NonReflexive/1000     3.02µs ± 2%    2.48µs ± 1%  -17.92%  (p=0.000 n=10+10)
      GoMapClear/NonReflexive/10000    23.7µs ± 1%    19.6µs ± 1%  -17.30%  (p=0.000 n=10+9)
      MapPop100                        9.65µs ± 6%    9.18µs ± 8%   -4.82%  (p=0.008 n=9+10)
      MapPop1000                        162µs ± 6%     148µs ± 4%   -8.67%  (p=0.000 n=9+9)
      MapPop10000                      3.05ms ± 8%    2.82ms ±15%   -7.66%  (p=0.023 n=10+10)
      MapAssign/Int32/256              15.7ns ± 4%    14.6ns ± 2%   -7.08%  (p=0.000 n=10+10)
      MapAssign/Int32/65536            29.8ns ± 1%    30.4ns ± 0%   +2.04%  (p=0.000 n=10+8)
      MapAssign/Int64/256              14.9ns ± 5%    14.8ns ± 4%     ~     (p=0.611 n=10+10)
      MapAssign/Int64/65536            30.3ns ± 2%    30.4ns ± 1%   +0.54%  (p=0.046 n=10+9)
      MapAssign/Str/256                17.8ns ± 3%    19.8ns ± 4%  +11.08%  (p=0.000 n=10+10)
      MapAssign/Str/65536              35.7ns ± 1%    36.4ns ± 1%   +1.82%  (p=0.000 n=10+10)
      MapOperatorAssign/Int32/256      18.8ns ± 5%    14.6ns ± 3%  -22.57%  (p=0.000 n=10+10)
      MapOperatorAssign/Int32/65536    29.8ns ± 1%    30.5ns ± 1%   +2.39%  (p=0.000 n=10+10)
      MapOperatorAssign/Int64/256      16.6ns ± 4%    15.0ns ± 6%   -9.34%  (p=0.000 n=10+10)
      MapOperatorAssign/Int64/65536    30.1ns ± 1%    31.7ns ± 2%   +5.21%  (p=0.000 n=10+10)
      MapOperatorAssign/Str/256        1.70µs ± 1%    1.61µs ± 2%   -5.55%  (p=0.000 n=10+8)
      MapOperatorAssign/Str/65536       289ns ± 7%     294ns ± 4%     ~     (p=0.425 n=10+10)
      MapAppendAssign/Int32/256        34.3ns ± 2%    31.0ns ± 3%   -9.59%  (p=0.000 n=9+9)
      MapAppendAssign/Int32/65536      51.8ns ± 3%    47.1ns ±13%   -9.17%  (p=0.002 n=9+10)
      MapAppendAssign/Int64/256        32.5ns ± 8%    31.2ns ± 6%     ~     (p=0.065 n=10+10)
      MapAppendAssign/Int64/65536      51.4ns ± 4%    47.2ns ±10%   -8.07%  (p=0.005 n=9+10)
      MapAppendAssign/Str/256           105ns ±12%     109ns ± 4%     ~     (p=0.138 n=10+8)
      MapAppendAssign/Str/65536         101ns ±14%      81ns ± 8%  -19.82%  (p=0.000 n=10+9)
      MapDelete/Int32/100              32.0ns ± 1%    35.0ns ± 2%   +9.59%  (p=0.000 n=9+10)
      MapDelete/Int32/1000             27.0ns ± 3%    30.3ns ± 1%  +12.10%  (p=0.000 n=10+9)
      MapDelete/Int32/10000            29.2ns ± 1%    32.9ns ± 2%  +12.80%  (p=0.000 n=10+10)
      MapDelete/Int64/100              31.5ns ± 1%    35.7ns ± 2%  +13.16%  (p=0.000 n=10+10)
      MapDelete/Int64/1000             27.0ns ± 2%    30.6ns ± 1%  +13.21%  (p=0.000 n=10+10)
      MapDelete/Int64/10000            30.3ns ± 1%    34.4ns ± 3%  +13.47%  (p=0.000 n=10+10)
      MapDelete/Str/100                23.4ns ± 8%    26.7ns ± 6%  +14.10%  (p=0.000 n=10+9)
      MapDelete/Str/1000               31.0ns ± 2%    35.1ns ± 3%  +13.19%  (p=0.000 n=10+9)
      MapDelete/Str/10000              38.8ns ± 1%    43.4ns ± 2%  +12.02%  (p=0.000 n=9+10)
      
      Change-Id: I564ce0f40936589f0f9b837f7f2bbcca4c4a1070
      Reviewed-on: https://go-review.googlesource.com/c/142437Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      Reviewed-by: 's avatarMartin Möhrmann <martisch@uos.de>
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4b05c01f
    • Ian Lance Taylor's avatar
      cmd/go: don't pass empty string to ar when using -compiler=gccgo · d086c5c8
      Ian Lance Taylor authored
      Correct error introduced in CL 145417 on non-AIX systems.
      
      Fixes #28511
      
      Change-Id: I6624939061425af19faccedd271f465d1fe6b975
      Reviewed-on: https://go-review.googlesource.com/c/146277
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d086c5c8
    • Agniva De Sarker's avatar
      doc: replace command line usages of godoc with go doc · 3553eca2
      Agniva De Sarker authored
      Effective Go and the FAQ still had some instances which showed the command line
      usage of godoc. Changed them to use go doc.
      
      Updates #25443
      
      Change-Id: If550963322034e6848bc466f79e968e7220e4a88
      Reviewed-on: https://go-review.googlesource.com/c/145222Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3553eca2
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: more direct noder.nod implementation (cleanup) · f6f27bfb
      Robert Griesemer authored
      Also, renamed
      
      - noder.lineno -> noder.setlineno (because that's what it does)
      - noder.setlineno -> noder.pos    (and return the src.XPos)
      
      Change-Id: I5d3442cf2af97028afcab028290152ce8d062927
      Reviewed-on: https://go-review.googlesource.com/c/146317Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      f6f27bfb
    • Tobias Klauser's avatar
      os: add support for long path names on solaris RemoveAll · 4d1e95bb
      Tobias Klauser authored
      Follow CL 146020 and enable RemoveAll based on Unlinkat and Openat on
      solaris.
      
      Updates #27029
      
      Change-Id: I0b0e92f4422fa960a13dcd3e9adb57cd23f09ed4
      Reviewed-on: https://go-review.googlesource.com/c/145839
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4d1e95bb
    • Yury Smolsky's avatar
      time: display results in examples rather soon · 86ad85ce
      Yury Smolsky authored
      We have fixed the playground to display results of
      the program when it was timed out.
      
      This CL fixes how soon results will be displayed to the user.
      
      Change-Id: Ifb75828e0de12c726c8ca6e2d04947e01913dc73
      Reviewed-on: https://go-review.googlesource.com/c/146237Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      86ad85ce
    • Clément Chigot's avatar
      internal/cpu, runtime: add CPU feature detection support for AIX · cb07f492
      Clément Chigot authored
      AIX doesn't have HWCAP/HWCAP2 variables like Linux. Therefore, it relies on
      getsystemcfg syscall which can provide some information about the CPU.
      
      Change-Id: Ic0dc927e80890d4bf8f0bdfb43fad1e2b890d7a0
      Reviewed-on: https://go-review.googlesource.com/c/144959
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMartin Möhrmann <moehrmann@google.com>
      cb07f492
    • Ian Lance Taylor's avatar
      go/build, cmd/go: add "hurd" as a GOOS value · 53856c47
      Ian Lance Taylor authored
      RELNOTES=yes
      
      Change-Id: Ie7090b5a6edd548a49bdc4295e01cb686dfe6522
      Reviewed-on: https://go-review.googlesource.com/c/146023
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      53856c47
    • Darien Raymond's avatar
      crypto/tls: cache Leaf certificate during BuildNameToCertificate · 1350214e
      Darien Raymond authored
      I am working on a TLS server program, which issues new TLS certificates
      on demand. The new certificates will be added into tls.Config.Certificates.
      BuildNameToCertificate will be called to refresh the name table afterwards.
      This change will reduce some workload on existing certificates.
      
      Note that you can’t modify the Certificates field (or call BuildNameToCertificate)
      on a Config in use by a Server. You can however modify an unused Config that gets
      cloned in GetConfigForClient with appropriate locking.
      
      Change-Id: I7bdb7d23fc5d68df83c73f3bfa3ba9181d38fbde
      GitHub-Last-Rev: c3788f4116be47f2fdb777935c421e7dd694f5c8
      GitHub-Pull-Request: golang/go#24920
      Reviewed-on: https://go-review.googlesource.com/c/107627Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      1350214e
    • Oliver Stenbom's avatar
      os: add support for long path names on unix RemoveAll · e8ffb8a7
      Oliver Stenbom authored
      On unix systems, long enough path names will fail when performing syscalls
      like `Lstat`. The current RemoveAll uses several of these syscalls, and so
      will fail for long paths. This can be risky, as it can let users "hide"
      files from the system or otherwise make long enough paths for programs
      to fail. By using `Unlinkat` and `Openat` syscalls instead, RemoveAll is
      safer on unix systems. Initially implemented for linux, darwin, dragonfly,
      netbsd and openbsd. Not yet implemented on freebsd due to fstatat 64-bit
      inode compatibility issues.
      
      Fixes #27029
      Co-authored-by: 's avatarGiuseppe Capizzi <gcapizzi@pivotal.io>
      Co-authored-by: 's avatarJulia Nedialkova <yulia.nedyalkova@sap.com>
      
      Change-Id: I978a6a4986878fe076d3c7af86e7927675624a96
      GitHub-Last-Rev: 9235489c81b90c228210144b7c25b28a46bb80b7
      GitHub-Pull-Request: golang/go#28494
      Reviewed-on: https://go-review.googlesource.com/c/146020
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarTobias Klauser <tobias.klauser@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e8ffb8a7
    • Clément Chigot's avatar
      cmd: add XCOFF objfile and adapt cmd/nm tests · 49dafc70
      Clément Chigot authored
      This commit adds a new file format in cmd/internal/objfile for XCOFF.
      It also adapts tests inside cmd/nm for AIX.
      
      Updates: #25893
      
      Change-Id: I1e55ea0b7f7d08a871343bee27d11e2d3baad254
      Reviewed-on: https://go-review.googlesource.com/c/145397
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      49dafc70
    • Alex Brainman's avatar
      os: use Stat instead of Lstat in Symlink · 5cc80899
      Alex Brainman authored
      Windows implementation of Symlink uses CreateSymbolicLink Windows
      API. The API requires to identify the target type: file or
      directory. Current Symlink implementation  uses Lstat to determine
      symlink type, but Lstat will not be able to determine correct
      result if destination is symlink. Replace Lstat call with Stat.
      
      Fixes #28432
      
      Change-Id: Ibee6d8ac21e2246bf8d0a019c4c66d38b09887d4
      Reviewed-on: https://go-review.googlesource.com/c/145217
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      5cc80899
    • Robert Griesemer's avatar
      cmd/compile: better documentation around checkwidth · fde4b9ed
      Robert Griesemer authored
      Change-Id: I5c7ec9676b5573c883c196459acea85aa9ff8130
      Reviewed-on: https://go-review.googlesource.com/c/146021
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      fde4b9ed
    • Rob Pike's avatar
      cmd/doc: allow -all to apply to individual items · 84b96c21
      Rob Pike authored
      It really only matters for types, and the code already worked but was
      blocked by a usage check.
      
      Fixes #25595
      
      Change-Id: I823f313b682b37616ea555aee079e2fe39f914c2
      Reviewed-on: https://go-review.googlesource.com/c/144357Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      84b96c21
    • Clément Chigot's avatar
      cmd: allow build with gccgo on AIX · faafcc60
      Clément Chigot authored
      This commit adapts cmd/internal/buildid and cmd/go to allow the use of
      gccgo on AIX.
      Buildid is supported only for AIX archives.
      
      Change-Id: I14c790a8994ae8d2ee629d8751e04189c30ffd94
      Reviewed-on: https://go-review.googlesource.com/c/145417
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      faafcc60
  4. 30 Oct, 2018 11 commits
    • Keith Randall's avatar
      cmd/compile: implement some moves using non-overlapping reads&writes · 0ad332d8
      Keith Randall authored
      For moves >8,<16 bytes, do a move using non-overlapping loads/stores
      if it would require no more instructions.
      
      This helps a bit with the case when the move is from a static
      constant, because then the code to materialize the value being moved
      is smaller.
      
      Change-Id: Ie47a5a7c654afeb4973142b0a9922faea13c9b54
      Reviewed-on: https://go-review.googlesource.com/c/146019
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      0ad332d8
    • Keith Randall's avatar
      strings: declare IndexByte as noescape · 56b7c61c
      Keith Randall authored
      This lets []byte->string conversions which are used as arguments to
      strings.IndexByte and friends have their backing store allocated on
      the stack.
      
      It only prevents allocation when the string is small enough (32
      bytes), so it isn't perfect. But reusing the []byte backing store
      directly requires a bunch more compiler analysis (see #2205 and
      related issues).
      
      Fixes #25864.
      
      Change-Id: Ie52430422196e3c91e5529d6e56a8435ced1fc4c
      Reviewed-on: https://go-review.googlesource.com/c/146018Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      56b7c61c
    • Keith Randall's avatar
      cmd/compile: when comparing 0-size types, make sure expr side-effects survive · f14067f3
      Keith Randall authored
      Fixes #23837
      
      Change-Id: I53f524d87946a0065f28a4ddbe47b40f2b43c459
      Reviewed-on: https://go-review.googlesource.com/c/145757
      Run-TryBot: Keith Randall <khr@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      f14067f3
    • templexxx's avatar
      crypto/cipher: use SIMD for xor on amd64 · 5168fcf6
      templexxx authored
      cpu: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
      
      Benchmark: xor
      
      name                   old time/op    new time/op     delta
      XORBytes/8Bytes-8        8.21ns ± 1%     6.35ns ± 3%   -22.66%  (p=0.008 n=5+5)
      XORBytes/128Bytes-8      17.9ns ± 1%     10.4ns ± 1%   -41.68%  (p=0.008 n=5+5)
      XORBytes/2048Bytes-8      187ns ± 1%       78ns ± 0%   -58.44%  (p=0.008 n=5+5)
      XORBytes/32768Bytes-8    2.87µs ± 1%     1.38µs ± 0%   -52.05%  (p=0.008 n=5+5)
      
      name                   old speed      new speed       delta
      XORBytes/8Bytes-8       974MB/s ± 1%   1260MB/s ± 2%   +29.33%  (p=0.008 n=5+5)
      XORBytes/128Bytes-8    7.15GB/s ± 0%  12.25GB/s ± 1%   +71.17%  (p=0.008 n=5+5)
      XORBytes/2048Bytes-8   10.9GB/s ± 1%   26.4GB/s ± 0%  +140.99%  (p=0.008 n=5+5)
      XORBytes/32768Bytes-8  11.4GB/s ± 1%   23.8GB/s ± 0%  +108.52%  (p=0.008 n=5+5)
      
      Benchmark: cipher
      
      name               old time/op    new time/op    delta
      AESGCMSeal1K-8        269ns ± 6%     261ns ± 2%     ~     (p=0.246 n=5+5)
      AESGCMOpen1K-8        242ns ± 1%     240ns ± 2%     ~     (p=0.190 n=5+5)
      AESGCMSign8K-8        869ns ± 0%     870ns ± 1%     ~     (p=0.683 n=5+5)
      AESGCMSeal8K-8       1.64µs ± 6%    1.59µs ± 7%     ~     (p=0.151 n=5+5)
      AESGCMOpen8K-8       1.48µs ± 2%    1.46µs ± 0%   -1.39%  (p=0.008 n=5+5)
      AESCFBEncrypt1K-8    1.88µs ± 5%    1.62µs ± 1%  -13.52%  (p=0.008 n=5+5)
      AESCFBDecrypt1K-8    1.76µs ± 1%    1.58µs ± 1%  -10.24%  (p=0.016 n=4+5)
      AESOFB1K-8           1.10µs ± 4%    1.03µs ± 2%   -6.36%  (p=0.008 n=5+5)
      AESCTR1K-8           1.24µs ± 1%    1.17µs ± 0%   -5.96%  (p=0.008 n=5+5)
      AESCBCEncrypt1K-8    1.74µs ± 0%    1.14µs ± 1%  -34.36%  (p=0.008 n=5+5)
      AESCBCDecrypt1K-8    1.28µs ± 1%    1.10µs ± 1%  -14.04%  (p=0.008 n=5+5)
      
      name               old speed      new speed      delta
      AESGCMSeal1K-8     3.81GB/s ± 6%  3.91GB/s ± 2%     ~     (p=0.310 n=5+5)
      AESGCMOpen1K-8     4.23GB/s ± 1%  4.27GB/s ± 2%     ~     (p=0.222 n=5+5)
      AESGCMSign8K-8     9.43GB/s ± 0%  9.41GB/s ± 1%     ~     (p=0.841 n=5+5)
      AESGCMSeal8K-8     5.01GB/s ± 6%  5.16GB/s ± 6%     ~     (p=0.151 n=5+5)
      AESGCMOpen8K-8     5.54GB/s ± 2%  5.62GB/s ± 0%   +1.41%  (p=0.008 n=5+5)
      AESCFBEncrypt1K-8   543MB/s ± 5%   627MB/s ± 1%  +15.55%  (p=0.008 n=5+5)
      AESCFBDecrypt1K-8   580MB/s ± 1%   646MB/s ± 1%  +11.40%  (p=0.016 n=4+5)
      AESOFB1K-8          925MB/s ± 4%   988MB/s ± 2%   +6.73%  (p=0.008 n=5+5)
      AESCTR1K-8          821MB/s ± 1%   873MB/s ± 1%   +6.34%  (p=0.008 n=5+5)
      AESCBCEncrypt1K-8   588MB/s ± 1%   897MB/s ± 1%  +52.36%  (p=0.008 n=5+5)
      AESCBCDecrypt1K-8   799MB/s ± 1%   929MB/s ± 1%  +16.32%  (p=0.008 n=5+5)
      
      Change-Id: I42e6ba66c23dad853d33c924fca7b0ed805cefdd
      Reviewed-on: https://go-review.googlesource.com/c/125316Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5168fcf6
    • Katie Hockman's avatar
      Revert "os: add support for long path names on unix RemoveAll" · 0e0f7986
      Katie Hockman authored
      This reverts commit 85143d35.
      
      Reason for revert: Breaking all Darwin and FreeBSD builds. Trybots did not pass for this.
      
      Change-Id: I5494e14ad5ab9cf6e1e225a25b2e8b38f3359d13
      Reviewed-on: https://go-review.googlesource.com/c/145897Reviewed-by: 's avatarKatie Hockman <katie@golang.org>
      Run-TryBot: Katie Hockman <katie@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0e0f7986
    • Peter Weinberger's avatar
      cmd/trace: use new traceparser to parse the raw trace files · 08816cb8
      Peter Weinberger authored
      Change-Id: I8b224ae48a2f8acd5a64c9ff283e97821479a9a8
      Reviewed-on: https://go-review.googlesource.com/c/145457
      Run-TryBot: Peter Weinberger <pjw@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      08816cb8
    • Yury Smolsky's avatar
      crypto/cipher: make stream examples runnable in the playground · f570b54c
      Yury Smolsky authored
      Updates #9679
      
      Change-Id: I53412cf0142364de5f76e8affc15d607bfa2ad23
      Reviewed-on: https://go-review.googlesource.com/c/145838
      Run-TryBot: Yury Smolsky <yury@smolsky.by>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      f570b54c
    • Michael Anthony Knyszek's avatar
      runtime: add physical memory scavenging test · 7836457e
      Michael Anthony Knyszek authored
      This change introduces a test to malloc_test which checks for overuse
      of physical memory in the large object treap. Due to fragmentation,
      there may be many pages of physical memory that are sitting unused in
      large-object space.
      
      For #14045.
      
      Change-Id: I3722468f45063b11246dde6301c7ad02ae34be55
      Reviewed-on: https://go-review.googlesource.com/c/138918
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      7836457e
    • Michael Anthony Knyszek's avatar
      runtime: scavenge large spans before heap growth · c803ffc6
      Michael Anthony Knyszek authored
      This change scavenges the largest spans before growing the heap for
      physical pages to "make up" for the newly-mapped space which,
      presumably, will be touched.
      
      In theory, this approach to scavenging helps reduce the RSS of an
      application by marking fragments in memory as reclaimable to the OS
      more eagerly than before. In practice this may not necessarily be
      true, depending on how sysUnused is implemented for each platform.
      
      Fixes #14045.
      
      Change-Id: Iab60790be05935865fc71f793cb9323ab00a18bd
      Reviewed-on: https://go-review.googlesource.com/c/139719
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      c803ffc6
    • Michael Anthony Knyszek's avatar
      runtime: sysUsed spans after trimming · db82a1bc
      Michael Anthony Knyszek authored
      Currently, we mark a whole span as sysUsed before trimming, but this
      unnecessarily tells the OS that the trimmed section from the span is
      used when it may have been scavenged, if s was scavenged. Overall,
      this just makes invocations of sysUsed a little more fine-grained.
      
      It does come with the caveat that now heap_released needs to be managed
      a little more carefully in allocSpanLocked. In this case, we choose to
      (like before this change) negate any effect the span has on
      heap_released before trimming, then add it back if the trimmed part is
      scavengable.
      
      For #14045.
      
      Change-Id: Ifa384d989611398bfad3ca39d3bb595a5962a3ea
      Reviewed-on: https://go-review.googlesource.com/c/140198
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      db82a1bc
    • Michael Anthony Knyszek's avatar
      runtime: extend ReadMemStatsSlow to re-compute HeapReleased · 61d40c8a
      Michael Anthony Knyszek authored
      This change extends the test function ReadMemStatsSlow to re-compute
      the HeapReleased statistic such that it is checked in testing to be
      consistent with the bookkeeping done in the runtime.
      
      Change-Id: I49f5c2620f5731edea8e9f768744cf997dcd7c22
      Reviewed-on: https://go-review.googlesource.com/c/142397
      Run-TryBot: Michael Knyszek <mknyszek@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      61d40c8a