1. 22 Aug, 2018 5 commits
    • Ben Shi's avatar
      cmd/compile: optimize 386 code with MULLload/DIVSSload/DIVSDload · 90f2fa00
      Ben Shi authored
      IMULL/DIVSS/DIVSD all can take the source operand from memory
      directly. And this CL implement that optimization.
      
      1. The total size of pkg/linux_386 decreases about 84KB (excluding
      cmd/compile).
      
      2. The go1 benchmark shows little regression in total (excluding noise).
      name                     old time/op    new time/op    delta
      BinaryTree17-4              3.29s ± 2%     3.27s ± 4%    ~     (p=0.192 n=30+30)
      Fannkuch11-4                3.49s ± 2%     3.54s ± 1%  +1.48%  (p=0.000 n=30+30)
      FmtFprintfEmpty-4          45.9ns ± 3%    46.3ns ± 4%  +0.89%  (p=0.037 n=30+30)
      FmtFprintfString-4         78.8ns ± 3%    78.7ns ± 4%    ~     (p=0.209 n=30+27)
      FmtFprintfInt-4            91.0ns ± 2%    90.3ns ± 2%  -0.82%  (p=0.031 n=30+27)
      FmtFprintfIntInt-4          142ns ± 4%     143ns ± 4%    ~     (p=0.136 n=30+30)
      FmtFprintfPrefixedInt-4     181ns ± 3%     183ns ± 4%  +1.40%  (p=0.005 n=30+30)
      FmtFprintfFloat-4           404ns ± 4%     408ns ± 3%    ~     (p=0.397 n=30+30)
      FmtManyArgs-4               601ns ± 3%     609ns ± 5%    ~     (p=0.059 n=30+30)
      GobDecode-4                7.21ms ± 5%    7.24ms ± 5%    ~     (p=0.612 n=30+30)
      GobEncode-4                6.91ms ± 6%    6.91ms ± 6%    ~     (p=0.797 n=30+30)
      Gzip-4                      398ms ± 6%     399ms ± 4%    ~     (p=0.173 n=30+30)
      Gunzip-4                   41.7ms ± 3%    41.8ms ± 3%    ~     (p=0.423 n=30+30)
      HTTPClientServer-4         62.3µs ± 2%    62.7µs ± 3%    ~     (p=0.085 n=29+30)
      JSONEncode-4               21.0ms ± 4%    20.7ms ± 5%  -1.39%  (p=0.014 n=30+30)
      JSONDecode-4               66.3ms ± 3%    67.4ms ± 1%  +1.71%  (p=0.003 n=30+24)
      Mandelbrot200-4            5.15ms ± 3%    5.16ms ± 3%    ~     (p=0.697 n=30+30)
      GoParse-4                  3.24ms ± 3%    3.27ms ± 4%  +0.91%  (p=0.032 n=30+30)
      RegexpMatchEasy0_32-4       101ns ± 5%      99ns ± 4%  -1.82%  (p=0.008 n=29+30)
      RegexpMatchEasy0_1K-4       848ns ± 4%     841ns ± 2%  -0.77%  (p=0.043 n=30+30)
      RegexpMatchEasy1_32-4       106ns ± 6%     106ns ± 3%    ~     (p=0.939 n=29+30)
      RegexpMatchEasy1_1K-4      1.02µs ± 3%    1.03µs ± 4%    ~     (p=0.297 n=28+30)
      RegexpMatchMedium_32-4      129ns ± 4%     127ns ± 4%    ~     (p=0.073 n=30+30)
      RegexpMatchMedium_1K-4     43.9µs ± 3%    43.8µs ± 3%    ~     (p=0.186 n=30+30)
      RegexpMatchHard_32-4       2.24µs ± 4%    2.22µs ± 4%    ~     (p=0.332 n=30+29)
      RegexpMatchHard_1K-4       68.0µs ± 4%    67.5µs ± 3%    ~     (p=0.290 n=30+30)
      Revcomp-4                   1.85s ± 3%     1.85s ± 3%    ~     (p=0.358 n=30+30)
      Template-4                 69.6ms ± 3%    70.0ms ± 4%    ~     (p=0.273 n=30+30)
      TimeParse-4                 445ns ± 3%     441ns ± 3%    ~     (p=0.494 n=30+30)
      TimeFormat-4                412ns ± 3%     412ns ± 6%    ~     (p=0.841 n=30+30)
      [Geo mean]                 66.7µs         66.8µs       +0.13%
      
      name                     old speed      new speed      delta
      GobDecode-4               107MB/s ± 5%   106MB/s ± 5%    ~     (p=0.615 n=30+30)
      GobEncode-4               111MB/s ± 6%   111MB/s ± 6%    ~     (p=0.790 n=30+30)
      Gzip-4                   48.8MB/s ± 6%  48.7MB/s ± 4%    ~     (p=0.167 n=30+30)
      Gunzip-4                  465MB/s ± 3%   465MB/s ± 3%    ~     (p=0.420 n=30+30)
      JSONEncode-4             92.4MB/s ± 4%  93.7MB/s ± 5%  +1.42%  (p=0.015 n=30+30)
      JSONDecode-4             29.3MB/s ± 3%  28.8MB/s ± 1%  -1.72%  (p=0.003 n=30+24)
      GoParse-4                17.9MB/s ± 3%  17.7MB/s ± 4%  -0.89%  (p=0.037 n=30+30)
      RegexpMatchEasy0_32-4     317MB/s ± 8%   324MB/s ± 4%  +2.14%  (p=0.006 n=30+30)
      RegexpMatchEasy0_1K-4    1.21GB/s ± 4%  1.22GB/s ± 2%  +0.77%  (p=0.036 n=30+30)
      RegexpMatchEasy1_32-4     298MB/s ± 7%   299MB/s ± 4%    ~     (p=0.511 n=30+30)
      RegexpMatchEasy1_1K-4    1.00GB/s ± 3%  1.00GB/s ± 4%    ~     (p=0.304 n=28+30)
      RegexpMatchMedium_32-4   7.75MB/s ± 4%  7.82MB/s ± 4%    ~     (p=0.089 n=30+30)
      RegexpMatchMedium_1K-4   23.3MB/s ± 3%  23.4MB/s ± 3%    ~     (p=0.181 n=30+30)
      RegexpMatchHard_32-4     14.3MB/s ± 4%  14.4MB/s ± 4%    ~     (p=0.320 n=30+29)
      RegexpMatchHard_1K-4     15.1MB/s ± 4%  15.2MB/s ± 3%    ~     (p=0.273 n=30+30)
      Revcomp-4                 137MB/s ± 3%   137MB/s ± 3%    ~     (p=0.352 n=30+30)
      Template-4               27.9MB/s ± 3%  27.7MB/s ± 4%    ~     (p=0.277 n=30+30)
      [Geo mean]               79.9MB/s       80.1MB/s       +0.15%
      
      Change-Id: I97333cd8ddabb3c7c88ca5aa9e14a005b74d306d
      Reviewed-on: https://go-review.googlesource.com/120695
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      90f2fa00
    • Ben Shi's avatar
      cmd/compile: optimize AMD64 with DIVSSload and DIVSDload · 705f3c74
      Ben Shi authored
      DIVSSload & DIVSDload directly operate on a memory operand. And
      binary size can be reduced by them, while the performance is
      not affected.
      
      The total size of pkg/linux_amd64 (excluding cmd/compile) decreases
      about 6KB.
      
      There is little regression in the go1 benchmark test (excluding noise).
      name                     old time/op    new time/op    delta
      BinaryTree17-4              2.63s ± 4%     2.62s ± 4%    ~     (p=0.809 n=30+30)
      Fannkuch11-4                2.40s ± 2%     2.40s ± 2%    ~     (p=0.109 n=30+30)
      FmtFprintfEmpty-4          43.1ns ± 4%    43.2ns ± 9%    ~     (p=0.168 n=30+30)
      FmtFprintfString-4         73.6ns ± 4%    74.1ns ± 4%    ~     (p=0.069 n=30+30)
      FmtFprintfInt-4            81.0ns ± 3%    81.4ns ± 5%    ~     (p=0.350 n=30+30)
      FmtFprintfIntInt-4          127ns ± 4%     129ns ± 4%  +0.99%  (p=0.021 n=30+30)
      FmtFprintfPrefixedInt-4     156ns ± 4%     155ns ± 4%    ~     (p=0.415 n=30+30)
      FmtFprintfFloat-4           219ns ± 4%     218ns ± 4%    ~     (p=0.071 n=30+30)
      FmtManyArgs-4               522ns ± 3%     518ns ± 3%  -0.68%  (p=0.034 n=30+30)
      GobDecode-4                6.49ms ± 6%    6.52ms ± 6%    ~     (p=0.832 n=30+30)
      GobEncode-4                6.10ms ± 9%    6.14ms ± 7%    ~     (p=0.485 n=30+30)
      Gzip-4                      227ms ± 1%     224ms ± 4%    ~     (p=0.484 n=24+30)
      Gunzip-4                   37.2ms ± 3%    36.8ms ± 4%    ~     (p=0.889 n=30+30)
      HTTPClientServer-4         58.9µs ± 1%    58.7µs ± 2%  -0.42%  (p=0.003 n=28+28)
      JSONEncode-4               12.0ms ± 3%    12.0ms ± 4%    ~     (p=0.523 n=30+30)
      JSONDecode-4               54.6ms ± 4%    54.5ms ± 4%    ~     (p=0.708 n=30+30)
      Mandelbrot200-4            3.78ms ± 4%    3.81ms ± 3%  +0.99%  (p=0.016 n=30+30)
      GoParse-4                  3.20ms ± 4%    3.20ms ± 5%    ~     (p=0.994 n=30+30)
      RegexpMatchEasy0_32-4      77.0ns ± 4%    75.9ns ± 3%  -1.39%  (p=0.006 n=29+30)
      RegexpMatchEasy0_1K-4       255ns ± 4%     253ns ± 4%    ~     (p=0.091 n=30+30)
      RegexpMatchEasy1_32-4      69.7ns ± 3%    70.3ns ± 4%    ~     (p=0.120 n=30+30)
      RegexpMatchEasy1_1K-4       373ns ± 2%     378ns ± 3%  +1.43%  (p=0.000 n=21+26)
      RegexpMatchMedium_32-4      107ns ± 2%     108ns ± 4%  +1.50%  (p=0.012 n=22+30)
      RegexpMatchMedium_1K-4     34.0µs ± 1%    34.3µs ± 3%  +1.08%  (p=0.008 n=24+30)
      RegexpMatchHard_32-4       1.53µs ± 3%    1.54µs ± 3%    ~     (p=0.234 n=30+30)
      RegexpMatchHard_1K-4       46.7µs ± 4%    47.0µs ± 4%    ~     (p=0.420 n=30+30)
      Revcomp-4                   411ms ± 7%     415ms ± 6%    ~     (p=0.059 n=30+30)
      Template-4                 65.5ms ± 5%    66.9ms ± 4%  +2.21%  (p=0.001 n=30+30)
      TimeParse-4                 317ns ± 3%     311ns ± 3%  -1.97%  (p=0.000 n=30+30)
      TimeFormat-4                293ns ± 3%     294ns ± 3%    ~     (p=0.243 n=30+30)
      [Geo mean]                 47.4µs         47.5µs       +0.17%
      
      name                     old speed      new speed      delta
      GobDecode-4               118MB/s ± 5%   118MB/s ± 6%    ~     (p=0.832 n=30+30)
      GobEncode-4               125MB/s ± 7%   125MB/s ± 7%    ~     (p=0.625 n=29+30)
      Gzip-4                   85.3MB/s ± 1%  86.6MB/s ± 4%    ~     (p=0.486 n=24+30)
      Gunzip-4                  522MB/s ± 3%   527MB/s ± 4%    ~     (p=0.889 n=30+30)
      JSONEncode-4              162MB/s ± 3%   162MB/s ± 4%    ~     (p=0.520 n=30+30)
      JSONDecode-4             35.5MB/s ± 4%  35.6MB/s ± 4%    ~     (p=0.701 n=30+30)
      GoParse-4                18.1MB/s ± 4%  18.1MB/s ± 4%    ~     (p=0.891 n=29+30)
      RegexpMatchEasy0_32-4     416MB/s ± 4%   422MB/s ± 3%  +1.43%  (p=0.005 n=29+30)
      RegexpMatchEasy0_1K-4    4.01GB/s ± 4%  4.04GB/s ± 4%    ~     (p=0.091 n=30+30)
      RegexpMatchEasy1_32-4     460MB/s ± 3%   456MB/s ± 5%    ~     (p=0.123 n=30+30)
      RegexpMatchEasy1_1K-4    2.74GB/s ± 2%  2.70GB/s ± 3%  -1.33%  (p=0.000 n=22+26)
      RegexpMatchMedium_32-4   9.39MB/s ± 3%  9.19MB/s ± 4%  -2.06%  (p=0.001 n=28+30)
      RegexpMatchMedium_1K-4   30.1MB/s ± 1%  29.8MB/s ± 3%  -1.04%  (p=0.008 n=24+30)
      RegexpMatchHard_32-4     20.9MB/s ± 3%  20.8MB/s ± 3%    ~     (p=0.234 n=30+30)
      RegexpMatchHard_1K-4     21.9MB/s ± 4%  21.8MB/s ± 4%    ~     (p=0.420 n=30+30)
      Revcomp-4                 619MB/s ± 7%   612MB/s ± 7%    ~     (p=0.059 n=30+30)
      Template-4               29.6MB/s ± 4%  29.0MB/s ± 4%  -2.16%  (p=0.002 n=30+30)
      [Geo mean]                123MB/s        123MB/s       -0.33%
      
      Change-Id: Ia59e077feae4f2824df79059daea4d0f678e3e4c
      Reviewed-on: https://go-review.googlesource.com/120275
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      705f3c74
    • David Carlier's avatar
      crypto/rand: use the new getrandom syscall on FreeBSD · 64f3d75b
      David Carlier authored
      Since the 12.x branch, the getrandom syscall had been introduced
      with similar interface as Linux's and consistent syscall id
      across architectures.
      
      Change-Id: I63d6b45dbe9e29f07f1b5b6c2ec8be4fa624b9ee
      GitHub-Last-Rev: 6fb76e6522ef5ccb96d02445ffa39796dae89016
      GitHub-Pull-Request: golang/go#25976
      Reviewed-on: https://go-review.googlesource.com/120055
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      64f3d75b
    • Michael Fraenkel's avatar
      strings: use Builder in Map · 45c7d808
      Michael Fraenkel authored
      Use a builder to avoid the copy when converting the []byte to a string.
      
      name                  old time/op    new time/op    delta
      ByteByteMap-8            796ns ± 5%     700ns ± 1%  -12.00%  (p=0.000 n=9+8)
      Map/identity/ASCII-8     123ns ± 8%     126ns ± 7%     ~     (p=0.194 n=10+10)
      Map/identity/Greek-8     198ns ± 2%     204ns ± 5%   +2.99%  (p=0.008 n=9+10)
      Map/change/ASCII-8       266ns ±10%     202ns ± 3%  -24.19%  (p=0.000 n=10+10)
      Map/change/Greek-8       450ns ± 4%     406ns ± 1%   -9.73%  (p=0.000 n=9+10)
      MapNoChanges-8          85.4ns ± 3%    90.2ns ±11%   +5.67%  (p=0.000 n=9+10)
      
      name                  old alloc/op   new alloc/op   delta
      ByteByteMap-8             416B ± 0%      208B ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/identity/ASCII-8     0.00B          0.00B          ~     (all equal)
      Map/identity/Greek-8     0.00B          0.00B          ~     (all equal)
      Map/change/ASCII-8        128B ± 0%       64B ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/change/Greek-8        160B ± 0%       80B ± 0%  -50.00%  (p=0.000 n=10+10)
      MapNoChanges-8           0.00B          0.00B          ~     (all equal)
      
      name                  old allocs/op  new allocs/op  delta
      ByteByteMap-8             2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/identity/ASCII-8      0.00           0.00          ~     (all equal)
      Map/identity/Greek-8      0.00           0.00          ~     (all equal)
      Map/change/ASCII-8        2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      Map/change/Greek-8        2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.000 n=10+10)
      MapNoChanges-8            0.00           0.00          ~     (all equal)
      
      Fixes #26304
      
      Change-Id: Ideec9dfc29b0b8107f34fc634247081d0031777d
      Reviewed-on: https://go-review.googlesource.com/122875Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      45c7d808
    • Daniël de Kok's avatar
      cmd/cgo: perform explicit conversion in _GoStringLen · d2ace0ce
      Daniël de Kok authored
      _GoStringLen performs an implicit conversion from intgo to size_t.
      Explicitly cast to size_t.
      
      This change avoids warnings when using cgo with CFLAGS:
      -Wconversion.
      
      Change-Id: I58f75a35e17f669a67f9805061c041b03eddbb5c
      GitHub-Last-Rev: b5df1ac0c3c90360fa1d22c069e0f126e9f894d8
      GitHub-Pull-Request: golang/go#27092
      Reviewed-on: https://go-review.googlesource.com/129820
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      d2ace0ce
  2. 21 Aug, 2018 35 commits
    • Alberto Donizetti's avatar
      time: accept anything between -23 and 23 as offset namezone name · 2ce84112
      Alberto Donizetti authored
      time.Parse currently rejects numeric timezones names with UTC offsets
      bigger than +12, but this is incorrect: there's a +13 timezone and a
      +14 timezone:
      
        $ zdump Pacific/Kiritimati
        Pacific/Kiritimati  Mon Jun 25 02:15:03 2018 +14
      
      For convenience, this cl changes the ranges of accepted offsets from
      -14..+12 to -23..+23 (zero still excluded), i.e. every possible offset
      that makes sense. We don't validate three-letter abbreviations for the
      timezones names, so there's no need to be too strict on numeric names.
      
      This change also fixes a bug in the parseTimeZone, that is currently
      unconditionally returning true (i.e. valid timezone), without checking
      the value returned by parseSignedOffset.
      
      This fixes 5 of 17 time.Parse() failures listed in Issue #26032.
      
      Updates #26032
      
      Change-Id: I2f08ca9aa41ea4c6149ed35ed2dd8f23eeb42bff
      Reviewed-on: https://go-review.googlesource.com/120558Reviewed-by: 's avatarRob Pike <r@golang.org>
      2ce84112
    • Ian Lance Taylor's avatar
      math: test for pos/neg zero return of Ceil/Floor/Trunc · 1ae2eed0
      Ian Lance Taylor authored
      Ceil and Trunc of -0.2 return -0, not +0, but we didn't test that.
      
      Updates #23647
      
      Change-Id: Idbd4699376abfb4ca93f16c73c114d610d86a9f2
      Reviewed-on: https://go-review.googlesource.com/91335
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      1ae2eed0
    • Jordan Rhee's avatar
      cmd/link: support windows/arm · aa311fec
      Jordan Rhee authored
      Enable the Go linker to generate executables for windows/arm.
      
      Generates PE relocation tables, which are used by Windows to
      dynamically relocate the Go binary in memory. Windows on ARM
      requires all modules to be relocatable, unlike x86/amd64 which are
      permitted to have fixed base addresses.
      
      Updates #26148
      
      Change-Id: Ie63964ff52c2377e121b2885e9d05ec3ed8dc1cd
      Reviewed-on: https://go-review.googlesource.com/125648
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      aa311fec
    • Ilya Tocar's avatar
      net: use internal/bytealg insetad of linkname tricks · 39e59da7
      Ilya Tocar authored
      We are currently using go:linkname for some algorithms from
      strings/bytes packages, to avoid importing strings/bytes.
      But strings/bytes are just wrappers around internal/bytealg, so
      we should use internal/bytealg directly.
      
      Change-Id: I2836f779b88bf8876d5fa725043a6042bdda0390
      Reviewed-on: https://go-review.googlesource.com/130515
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      39e59da7
    • Ilya Tocar's avatar
      time: optimize big4 · 08cc3dc5
      Ilya Tocar authored
      Use the same load order in big4 as in encoding/binary.BigEndian.
      This order is recognized by the compiler and converted into single load.
      This isn't in the hot path, but doesn't hurt readability, so lets do this.
      
      Change-Id: Ib1240d0b278e9d667ad419fe91fa52b23d28cfc0
      Reviewed-on: https://go-review.googlesource.com/130478
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      08cc3dc5
    • Andreas Auernhammer's avatar
      crypto/rc4: remove assembler implementations · 30eda671
      Andreas Auernhammer authored
      This CL removes the RC4 assembler implementations.
      RC4 is broken and should not be used for encryption
      anymore. Therefore it's not worth maintaining
      platform-specific assembler implementations.
      
      The native Go implementation may be slower
      or faster depending on the CPU:
      
      name       old time/op   new time/op   delta
      RC4_128-4    256ns ± 0%    196ns ± 0%  -23.78%  (p=0.029 n=4+4)
      RC4_1K-4    2.38µs ± 0%   1.54µs ± 0%  -35.22%  (p=0.029 n=4+4)
      RC4_8K-4    19.4µs ± 1%   12.0µs ± 0%  -38.35%  (p=0.029 n=4+4)
      
      name       old speed     new speed     delta
      RC4_128-4  498MB/s ± 0%  654MB/s ± 0%  +31.12%  (p=0.029 n=4+4)
      RC4_1K-4   431MB/s ± 0%  665MB/s ± 0%  +54.34%  (p=0.029 n=4+4)
      RC4_8K-4   418MB/s ± 1%  677MB/s ± 0%  +62.18%  (p=0.029 n=4+4)
      
      vendor_id	: GenuineIntel
      cpu family	: 6
      model		: 142
      model name	: Intel(R) Core(TM) i5-7Y54 CPU @ 1.20GHz
      stepping	: 9
      microcode	: 0x84
      cpu MHz		: 800.036
      cache size	: 4096 KB
      
      name       old time/op   new time/op   delta
      RC4_128-4    235ns ± 1%    431ns ± 0%  +83.00%  (p=0.000 n=10+10)
      RC4_1K-4    1.74µs ± 0%   3.41µs ± 0%  +96.74%  (p=0.000 n=10+10)
      RC4_8K-4    13.6µs ± 1%   26.8µs ± 0%  +97.58%   (p=0.000 n=10+9)
      
      name       old speed     new speed     delta
      RC4_128-4  543MB/s ± 0%  297MB/s ± 1%  -45.29%  (p=0.000 n=10+10)
      RC4_1K-4   590MB/s ± 0%  300MB/s ± 0%  -49.16%  (p=0.000 n=10+10)
      RC4_8K-4   596MB/s ± 1%  302MB/s ± 0%  -49.39%   (p=0.000 n=10+9)
      
      vendor_id       : GenuineIntel
      cpu family      : 6
      model           : 63
      model name      : Intel(R) Xeon(R) CPU @ 2.30GHz
      stepping        : 0
      microcode       : 0x1
      cpu MHz         : 2300.000
      cache size      : 46080 KB
      
      Fixes #25417
      
      Change-Id: I4124037154aaaa8e48d300c23974f125b6055a1c
      Reviewed-on: https://go-review.googlesource.com/130397
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      30eda671
    • Daniel Martí's avatar
      encoding/json: various minor decoder speed-ups · 6d4787af
      Daniel Martí authored
      Reuse v.Type() and cachedTypeFields(t) when decoding maps and structs.
      
      Always use the same data slices when in hot loops, to ensure that the
      compiler generates good code. "for i < len(data) { use(d.data[i]) }"
      makes it harder for the compiler.
      
      Finally, do other minor clean-ups, such as deduplicating switch cases,
      and using a switch instead of three chained ifs.
      
      The decoder sees a noticeable speed-up, in particular when decoding
      structs.
      
      name           old time/op    new time/op    delta
      CodeDecoder-4    29.8ms ± 1%    27.5ms ± 0%  -7.83%  (p=0.002 n=6+6)
      
      name           old speed      new speed      delta
      CodeDecoder-4  65.0MB/s ± 1%  70.6MB/s ± 0%  +8.49%  (p=0.002 n=6+6)
      
      Updates #5683.
      
      Change-Id: I9d751e22502221962da696e48996ffdeb777277d
      Reviewed-on: https://go-review.googlesource.com/122468
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      6d4787af
    • Daniel Martí's avatar
      encoding/json: defer error context work until necessary · 9a2a34e1
      Daniel Martí authored
      Calling Name on a reflect.Type is somewhat expensive, as it involves a
      number of nested calls and string handling.
      
      This cost was showing up when decoding structs, as we were calling it to
      set up an error context.
      
      We can avoid the extra work unless we do encounter an error, which makes
      decoding via struct types faster.
      
      name           old time/op    new time/op    delta
      CodeDecoder-4    31.0ms ± 1%    29.9ms ± 1%  -3.69%  (p=0.002 n=6+6)
      
      name           old speed      new speed      delta
      CodeDecoder-4  62.6MB/s ± 1%  65.0MB/s ± 1%  +3.83%  (p=0.002 n=6+6)
      
      Updates #5683.
      
      Change-Id: I48a3a85ef0ba96f524b7c3e9096cb2c4589e077a
      Reviewed-on: https://go-review.googlesource.com/122467
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9a2a34e1
    • Michael Munday's avatar
      crypto/{aes,cipher,rand}: use binary.{Big,Little}Endian methods · 4a842f25
      Michael Munday authored
      Use the binary.{Big,Little}Endian integer encoding methods rather
      than unsafe or local implementations. These methods are tested to
      ensure they inline correctly and don't add unnecessary bounds checks,
      so it seems better to use them wherever possible.
      
      This introduces a dependency on encoding/binary to crypto/cipher. I
      think this is OK because other "L3" packages already import
      encoding/binary.
      
      Change-Id: I5cf01800d08554ca364e46cfc1d9445cf3c711a0
      Reviewed-on: https://go-review.googlesource.com/115555
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4a842f25
    • Alberto Donizetti's avatar
      cmd/gofmt: skip gofmt idempotency check on known issue · 3649fe29
      Alberto Donizetti authored
      gofmt's TestAll runs gofmt on all the go files in the tree and checks,
      among other things, that gofmt is idempotent (i.e. that a second
      invocation does not change the input again).
      
      There's a known bug of gofmt not being idempotent (Issue #24472), and
      unfortunately the fixedbugs/issue22662.go file triggers it. We can't
      just gofmt the file, because it tests the effect of various line
      directives inside weirdly-placed comments, and gofmt moves those
      comments, making the test useless.
      
      Instead, just skip the idempotency check when gofmt-ing the
      problematic file.
      
      This fixes go test on the cmd/gofmt package, and a failure seen on the
      longtest builder.
      
      Updates #24472
      
      Change-Id: Ib06300977cd8fce6c609e688b222e9b2186f5aa7
      Reviewed-on: https://go-review.googlesource.com/130377Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      3649fe29
    • Ian Lance Taylor's avatar
      misc/cgo/testcarchive: make the tests work when using gccgo · 0829e1b7
      Ian Lance Taylor authored
      Change-Id: I62a7a8ebbbc1f1a266234b53680768da157b2df5
      Reviewed-on: https://go-review.googlesource.com/130416
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0829e1b7
    • Ian Lance Taylor's avatar
      runtime: don't use linkname to refer to internal/cpu · cd7cb86d
      Ian Lance Taylor authored
      The runtime package already imports the internal/cpu package, so there
      is no reason for it to use go:linkname comments to refer to
      internal/cpu functions and variables. Since internal/cpu is internal,
      we can just export those names. Removing the obscurity of go:linkname
      outweighs the minor additional complexity added to the internal/cpu API.
      
      Change-Id: Id89951b7f3fc67cd9bce67ac6d01d44a647a10ad
      Reviewed-on: https://go-review.googlesource.com/128755
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarMartin Möhrmann <moehrmann@google.com>
      cd7cb86d
    • Tobias Klauser's avatar
      syscall: add S_IRWXG and S_IRWXO on Solaris · 4e1b11e2
      Tobias Klauser authored
      As discussed in CL 126621, these constants are already defined on Linux,
      Darwin, FreeBSD and NetBSD. In order to ensure portability of existing
      code using the syscall package, provide them for Solaris as well.
      
      Change-Id: Id49f6991f36775b152b9c47b9923cd0a08053bcb
      Reviewed-on: https://go-review.googlesource.com/130356
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4e1b11e2
    • Tobias Klauser's avatar
      syscall: add S_IRWXG and S_IRWXO on OpenBSD · d865e1fa
      Tobias Klauser authored
      As discussed in CL 126621, these constants are already defined on Linux,
      Darwin, FreeBSD and NetBSD. In order to ensure portability of existing
      code using the syscall package, provide them for OpenBSD (and
      DragonflyBSD, in a separate CL) as well.
      
      Change-Id: Ia9e07cb01f989d144a620d268daa8ec946788861
      Reviewed-on: https://go-review.googlesource.com/130336
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d865e1fa
    • Tobias Klauser's avatar
      syscall: add S_IRWXG and S_IRWXO on DragonflyBSD · e8daca4c
      Tobias Klauser authored
      As discussed in CL 126621, these constants are already defined on Linux,
      Darwin, FreeBSD and NetBSD. In order to ensure portability of existing
      code using the syscall package, provide them for DragonflyBSD (and
      OpenBSD, in a separate CL) as well.
      
      Change-Id: I708c60f75f787a410bdfa4ceebd2825874e92511
      Reviewed-on: https://go-review.googlesource.com/130335
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      e8daca4c
    • Florian Forster's avatar
      net/url: escape URL.RawQuery on Parse if it contains invalid characters · 1040626c
      Florian Forster authored
      Fixes #22907
      
      Change-Id: I7abcf53ab92768514e13ce2554a6c25dcde8218e
      Reviewed-on: https://go-review.googlesource.com/99135
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      1040626c
    • Michael Munday's avatar
      go/build: format with latest gofmt · 1d1a0277
      Michael Munday authored
      Change-Id: I172af5c83a0d4d79ad627ba9dfe02dead23bf3a6
      Reviewed-on: https://go-review.googlesource.com/130376
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      1d1a0277
    • Giovanni Bajo's avatar
      doc: remove mentions of cloning from GitHub · 94e4aca3
      Giovanni Bajo authored
      Complete CL117178 removing all references to GitHub, and leaving
      a small note to make sure we remember that it's not supported.
      
      Change-Id: Id4257515a864875808fa7a67f002ed52cfd635a3
      Reviewed-on: https://go-review.googlesource.com/130395Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      94e4aca3
    • Daniel Martí's avatar
      cmd/compile: fix racy setting of gc's Config.Race · c1807989
      Daniel Martí authored
      ssaConfig.Race was being set by many goroutines concurrently, resulting
      in a data race seen below. This was very likely introduced by CL 121235.
      
      	WARNING: DATA RACE
      	Write at 0x00c000344408 by goroutine 12:
      	  cmd/compile/internal/gc.buildssa()
      	      /workdir/go/src/cmd/compile/internal/gc/ssa.go:134 +0x7a8
      	  cmd/compile/internal/gc.compileSSA()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:259 +0x5d
      	  cmd/compile/internal/gc.compileFunctions.func2()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:323 +0x5a
      
      	Previous write at 0x00c000344408 by goroutine 11:
      	  cmd/compile/internal/gc.buildssa()
      	      /workdir/go/src/cmd/compile/internal/gc/ssa.go:134 +0x7a8
      	  cmd/compile/internal/gc.compileSSA()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:259 +0x5d
      	  cmd/compile/internal/gc.compileFunctions.func2()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:323 +0x5a
      
      	Goroutine 12 (running) created at:
      	  cmd/compile/internal/gc.compileFunctions()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:321 +0x39b
      	  cmd/compile/internal/gc.Main()
      	      /workdir/go/src/cmd/compile/internal/gc/main.go:651 +0x437d
      	  main.main()
      	      /workdir/go/src/cmd/compile/main.go:51 +0x100
      
      	Goroutine 11 (running) created at:
      	  cmd/compile/internal/gc.compileFunctions()
      	      /workdir/go/src/cmd/compile/internal/gc/pgen.go:321 +0x39b
      	  cmd/compile/internal/gc.Main()
      	      /workdir/go/src/cmd/compile/internal/gc/main.go:651 +0x437d
      	  main.main()
      	      /workdir/go/src/cmd/compile/main.go:51 +0x100
      
      Instead, set up the field exactly once as part of initssaconfig.
      
      Change-Id: I2c30c6b1cf92b8fd98e7cb5c2e10c526467d0b0a
      Reviewed-on: https://go-review.googlesource.com/130375
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      c1807989
    • Daniel Martí's avatar
      encoding/json: remove alloc when encoding short byte slices · 30d3ebe3
      Daniel Martí authored
      If the encoded bytes fit in the bootstrap array encodeState.scratch, use
      that instead of allocating a new byte slice.
      
      Also tweaked the Encoding vs Encoder heuristic to use the length of the
      encoded bytes, not the length of the input bytes. Encoding is used for
      allocations of up to 1024 bytes, as we measured 2048 to be the point
      where it no longer provides a noticeable advantage.
      
      Also added some benchmarks. Only the first case changes in behavior.
      
      name                 old time/op    new time/op    delta
      MarshalBytes/32-4       420ns ± 1%     383ns ± 1%   -8.69%  (p=0.002 n=6+6)
      MarshalBytes/256-4      913ns ± 1%     915ns ± 0%     ~     (p=0.580 n=5+6)
      MarshalBytes/4096-4    7.72µs ± 0%    7.74µs ± 0%     ~     (p=0.340 n=5+6)
      
      name                 old alloc/op   new alloc/op   delta
      MarshalBytes/32-4        112B ± 0%       64B ± 0%  -42.86%  (p=0.002 n=6+6)
      MarshalBytes/256-4       736B ± 0%      736B ± 0%     ~     (all equal)
      MarshalBytes/4096-4    7.30kB ± 0%    7.30kB ± 0%     ~     (all equal)
      
      name                 old allocs/op  new allocs/op  delta
      MarshalBytes/32-4        2.00 ± 0%      1.00 ± 0%  -50.00%  (p=0.002 n=6+6)
      MarshalBytes/256-4       2.00 ± 0%      2.00 ± 0%     ~     (all equal)
      MarshalBytes/4096-4      2.00 ± 0%      2.00 ± 0%     ~     (all equal)
      
      Updates #5683.
      
      Change-Id: I5fa55c27bd7728338d770ae7c0756885ba9a5724
      Reviewed-on: https://go-review.googlesource.com/122462
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      30d3ebe3
    • Daniel Martí's avatar
      encoding/json: encode struct field names ahead of time · 2d3599e5
      Daniel Martí authored
      Struct field names are static, so we can run HTMLEscape on them when
      building each struct type encoder. Then, when running the struct
      encoder, we can select either the original or the escaped field name to
      write directly.
      
      When the encoder is not escaping HTML, using the original string works
      because neither Go struct field names nor JSON tags allow any characters
      that would need to be escaped, like '"', '\\', or '\n'.
      
      When the encoder is escaping HTML, the only difference is that '<', '>',
      and '&' are allowed via JSON struct field tags, hence why we use
      HTMLEscape to properly escape them.
      
      All of the above lets us encode field names with a simple if/else and
      WriteString calls, which are considerably simpler and faster than
      encoding an arbitrary string.
      
      While at it, also include the quotes and colon in these strings, to
      avoid three WriteByte calls in the loop hot path.
      
      Also added a few tests, to ensure that the behavior in these edge cases
      is not broken. The output of the tests is the same if this optimization
      is reverted.
      
      name           old time/op    new time/op    delta
      CodeEncoder-4    7.12ms ± 0%    6.14ms ± 0%  -13.85%  (p=0.004 n=6+5)
      
      name           old speed      new speed      delta
      CodeEncoder-4   272MB/s ± 0%   316MB/s ± 0%  +16.08%  (p=0.004 n=6+5)
      
      name           old alloc/op   new alloc/op   delta
      CodeEncoder-4    91.9kB ± 0%    93.2kB ± 0%   +1.43%  (p=0.002 n=6+6)
      
      name           old allocs/op  new allocs/op  delta
      CodeEncoder-4      0.00           0.00          ~     (all equal)
      
      Updates #5683.
      
      Change-Id: I6f6a340d0de4670799ce38cf95b2092822d2e3ef
      Reviewed-on: https://go-review.googlesource.com/122460
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      2d3599e5
    • Tobias Klauser's avatar
      cmd/compile/internal/gc: unexport Deferproc and Newproc · e7f59f02
      Tobias Klauser authored
      They are no longer used outside the package since CL 38080.
      
      Passes toolstash-check -all
      
      Change-Id: I30977ed2b233b7c8c53632cc420938bc3b0e37c6
      Reviewed-on: https://go-review.googlesource.com/129781
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      e7f59f02
    • Daniel Martí's avatar
      cmd/go: fix 'go vet -h' to print the right text · d7ab57ef
      Daniel Martí authored
      For the last two releases, its output has been the same as 'go -h'.
      
      The test and vet sub-commands share their flag logic via the cmdflag
      package, so fixing it there would mean a larger refactor. Moreover, the
      test subcommand handles its '-h' flag in a special way; that's #26999.
      
      For now, use a much less invasive fix, mirroring the special-casing of
      'test -h' to simply print vet's short usage text.
      
      Also add a regression test via a cmd/go test script.
      
      Fixes #26998.
      
      Change-Id: Ie6b866d98116a1bc5f84a204e1c9f1c2f6b48bff
      Reviewed-on: https://go-review.googlesource.com/129318
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      d7ab57ef
    • Marcus Willock's avatar
      net/http: add an example of creating a custom FileSystem · 187a41db
      Marcus Willock authored
      The existing documentation of http.Dir is clear in that, if you want to hide
      your files and directories that start with a period, you must create
      a custom FileSystem. However, there are currently no example on how
      to create a custom FileSystem. This commit provides an example.
      
      Fixes #20759
      
      Change-Id: I5a350675536f81412af384d1a316fd6cd6241563
      GitHub-Last-Rev: 8b0b644cd02c59fe2461908304c44d64e8be431e
      GitHub-Pull-Request: golang/go#26768
      Reviewed-on: https://go-review.googlesource.com/127576Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      187a41db
    • Cholerae Hu's avatar
      hash/crc64: lazily initialize slice8Tables · 2a5df067
      Cholerae Hu authored
      Saves 36KB of memory in stdlib packages.
      
      Updates #26775
      
      Change-Id: I0f9d7b17d9768f6fb980d5fbba7c45920215a5fc
      Reviewed-on: https://go-review.googlesource.com/127735
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      2a5df067
    • Brad Fitzpatrick's avatar
      net: lazily look up the listenerBacklog value on first use · 80fe2e6e
      Brad Fitzpatrick authored
      Don't open files or do sysctls in init.
      
      Updates #26775
      
      Change-Id: I017bed6c24ef1e4bc30040120349fb779f203225
      Reviewed-on: https://go-review.googlesource.com/127655Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      80fe2e6e
    • Kevin Zita's avatar
      strings: revise ToUpperSpecial and ToLowerSpecial wording · 82724848
      Kevin Zita authored
      Fixes #26654
      
      Change-Id: I4832c45cad40607b83e1a8a9b562fa12e639b7d9
      GitHub-Last-Rev: c9ceedb7d4b4c01f91ea4fe3dc3496e73eed9120
      GitHub-Pull-Request: golang/go#26781
      Reviewed-on: https://go-review.googlesource.com/127716Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      82724848
    • Sandy's avatar
      time: use secondsPerMinute instead of 60 · 15c362a2
      Sandy authored
      It's maybe better.
      
      Change-Id: I7929e93a95c96676915bc24f2f7cce4e73b08c59
      GitHub-Last-Rev: a8c2bb6cafe78090f35c3b194e270e301255be89
      GitHub-Pull-Request: golang/go#26685
      Reviewed-on: https://go-review.googlesource.com/126623Reviewed-by: 's avatarRalph Corderoy <ralph@inputplus.co.uk>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      15c362a2
    • Peter Collingbourne's avatar
      cmd/link: pass provided ldflags when testing whether an ldflag is supported · 6417e919
      Peter Collingbourne authored
      It's possible for one of the ldflags to cause the compiler driver to
      use a different linker than the default, so we need to make sure that
      the flag is supported by whichever linker is specified.
      
      Fixes #27110.
      
      Change-Id: Ic0c51b886e34344d324e68cbf6673b168c14992f
      Reviewed-on: https://go-review.googlesource.com/130316
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      6417e919
    • Brad Fitzpatrick's avatar
      cmd/go: run mkalldocs.sh after earlier revert · 247b034a
      Brad Fitzpatrick authored
      Change-Id: Ie4ed8b3e7d26ae53b2290a7a6e7d9888eb963edc
      Reviewed-on: https://go-review.googlesource.com/130318Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      247b034a
    • Ian Lance Taylor's avatar
      cmd/vet: implement old TODO from testdata/print.go · e8e074d1
      Ian Lance Taylor authored
      The code was fixed in CL 108559 but the testing TODO was not implemented.
      
      Updates #22936
      
      Change-Id: I20a703260a181bbcf5f87609d6fb8221a182be1a
      Reviewed-on: https://go-review.googlesource.com/125038
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      e8e074d1
    • Ian Lance Taylor's avatar
      cmd/compile: only support -race and -msan where they work · 7e643779
      Ian Lance Taylor authored
      Consolidate decision about whether -race and -msan options are
      supported in cmd/internal/sys. Use consolidated functions in
      cmd/compile and cmd/go. Use a copy of them in cmd/dist; cmd/dist can't
      import cmd/internal/sys because Go 1.4 doesn't have it.
      
      Fixes #24315
      
      Change-Id: I9cecaed4895eb1a2a49379b4848db40de66d32a9
      Reviewed-on: https://go-review.googlesource.com/121816
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      7e643779
    • Brad Fitzpatrick's avatar
      net/http: add test showing that ReverseProxy HTTP/2 bidi streaming works · d58f3e6f
      Brad Fitzpatrick authored
      Change-Id: I8361ae33c785e45e3ccc7e9bc2732c887eeb41c4
      Reviewed-on: https://go-review.googlesource.com/127015
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatt Layher <mdlayher@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d58f3e6f
    • Iskander Sharipov's avatar
      cmd/compile/internal/ssa: use math/bits in countRegs and pickReg · bce1f122
      Iskander Sharipov authored
      Makes code simpler and faster (at least on x86).
      
      	name               old time/op  new time/op  delta
      	CountRegs-8        7.40ns ± 1%  0.59ns ± 0%  -92.02%  (p=0.000 n=9+9)
      	PickReg/(1<<0)-8   2.07ns ± 0%  0.37ns ± 0%  -82.13%  (p=0.000 n=9+10)
      	PickReg/(1<<16)-8  11.8ns ± 0%   0.4ns ± 0%  -96.86%  (p=0.002 n=8+10)
      
      Change-Id: Ic780b615b75c25b6e7632a0de93b16a8e9ed0f8f
      Reviewed-on: https://go-review.googlesource.com/120318
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      bce1f122
    • Brad Fitzpatrick's avatar
      go/doc: compile regexps lazily · fc5107c2
      Brad Fitzpatrick authored
      Compile go/doc's 4 regexps lazily, on demand.
      
      Also, add a test for the one that had no test coverage.
      
      This reduces init-time CPU as well as heap by ~20KB when they're not
      used, which seems to be common enough. As an example, cmd/doc only
      seems to use 1 of them. (as noted by temporary print statements)
      
      Updates #26775
      
      Change-Id: I85df89b836327a53fb8e1ace3f92480374270368
      Reviewed-on: https://go-review.googlesource.com/127875
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      fc5107c2