1. 28 Aug, 2019 35 commits
    • Matthew Dempsky's avatar
      test: remove -newescape from regress tests · 501b786e
      Matthew Dempsky authored
      Prep for subsequent CLs to remove old escape analysis pass.
      
      This CL removes -newescape=true from tests that use it, and deletes
      tests that use -newescape=false. (For history, see CL 170447.)
      
      Notably, this removes escape_because.go without any replacement, but
      this is being tracked by #31489.
      
      Change-Id: I6f6058d58fff2c5d210cb1d2713200cc9f501ca7
      Reviewed-on: https://go-review.googlesource.com/c/go/+/187617
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      501b786e
    • Brad Fitzpatrick's avatar
      net/http: don't panic serving dir in ServeFile with empty Request.URL.Path · 7ed973b4
      Brad Fitzpatrick authored
      Updates #30165
      Updates #31622
      
      Change-Id: I7a4b91aa7c5c3af8c0b1273cbb42046feddf7d78
      Reviewed-on: https://go-review.googlesource.com/c/go/+/180499Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      7ed973b4
    • Ayan George's avatar
      runtime: simplify GOOS detection in mstart() · b3a1205a
      Ayan George authored
      The existing condition is long and repetitive.  Using select/case with
      multiple values in the expression list is more concise and clearer.
      
      Change-Id: I43f8abcf958e433468728f1d89ff1436332b29da
      Reviewed-on: https://go-review.googlesource.com/c/go/+/188519Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      b3a1205a
    • Ian Lance Taylor's avatar
      test: add test that failed with gccgo · 47575187
      Ian Lance Taylor authored
      Updates #33739
      
      Change-Id: Ib7ce4bc51972fe49998f37f6e27baa6a2a036d5e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191001Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      47575187
    • Jordi Martin's avatar
      io: add error check on pipe close functions to avoid error overwriting · f45eb9ff
      Jordi Martin authored
      The current implementation allows multiple calls `Close` and `CloseWithError` in every side of the pipe, as a result, the original error can be overwritten.
      
      This CL fixes this behavior adding an error existence check on `atomicError` type
      and keeping the first error still available.
      
      Fixes #24283
      
      Change-Id: Iefe8f758aeb775309424365f8177511062514150
      GitHub-Last-Rev: b559540d7af3a0dad423816b695525ac2d6bd864
      GitHub-Pull-Request: golang/go#33239
      Reviewed-on: https://go-review.googlesource.com/c/go/+/187197Reviewed-by: default avatarJoe Tsai <thebrokentoaster@gmail.com>
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f45eb9ff
    • empijei's avatar
      crypto/x509: allow nil Certificates to be compared in Equal · 89865f8b
      empijei authored
      The current implementation panics on nil certificates,
      so introduce a nil check and early return true if both
      are nil, false if only one is.
      
      Fixes #28743
      
      Change-Id: I71b0dee3e505d3ad562a4470ccc22c3a2579bc52
      Reviewed-on: https://go-review.googlesource.com/c/go/+/167118
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      89865f8b
    • Mostyn Bramley-Moore's avatar
      crypto/ecdsa: improve documentation readability · 84198445
      Mostyn Bramley-Moore authored
      Include references in the package-level comment block, expand
      the obscure IRO acronym, and add a reference for "the standard
      (cryptographic) assumptions".
      
      Fixes #33589
      
      Change-Id: I76c3b0a2f7258b3ab4bf1c8e7681c5d159720a20
      GitHub-Last-Rev: 30d5a1e2fbbbb577ccc819f5ef80d5238565c9f3
      GitHub-Pull-Request: golang/go#33723
      Reviewed-on: https://go-review.googlesource.com/c/go/+/190840Reviewed-by: default avatarFilippo Valsorda <filippo@golang.org>
      84198445
    • Eric Lagergren's avatar
      math/big: document that Rat.Denom might modify the receiver · 9dfa4cb0
      Eric Lagergren authored
      Fixes #33792
      
      Change-Id: I306a95883c3db2d674d3294a6feb50adc50ee5d6
      Reviewed-on: https://go-review.googlesource.com/c/go/+/192017Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      9dfa4cb0
    • Meng Zhuo's avatar
      runtime, cmd/compile: implement and use DUFFCOPY on MIPS64 · 307544f4
      Meng Zhuo authored
      OS: Linux loongson 3.10.84 mips64el
      CPU: Loongson 3A3000 quad core
      
      name                   old time/op    new time/op    delta
      BinaryTree17              23.5s ± 1%     23.2s ± 0%  -1.12%  (p=0.008 n=5+5)
      Fannkuch11                10.2s ± 0%     10.1s ± 0%  -0.19%  (p=0.008 n=5+5)
      FmtFprintfEmpty           450ns ± 0%     446ns ± 1%  -0.89%  (p=0.024 n=5+5)
      FmtFprintfString          722ns ± 1%     721ns ± 1%    ~     (p=0.762 n=5+5)
      FmtFprintfInt             693ns ± 2%     691ns ± 2%    ~     (p=0.889 n=5+5)
      FmtFprintfIntInt          912ns ± 1%     911ns ± 0%    ~     (p=0.722 n=5+5)
      FmtFprintfPrefixedInt    1.35µs ± 2%    1.35µs ± 2%    ~     (p=1.000 n=5+5)
      FmtFprintfFloat          1.79µs ± 0%    1.78µs ± 0%    ~     (p=0.683 n=5+5)
      FmtManyArgs              3.46µs ± 1%    3.48µs ± 1%    ~     (p=0.246 n=5+5)
      GobDecode                48.8ms ± 1%    48.6ms ± 0%    ~     (p=0.222 n=5+5)
      GobEncode                37.7ms ± 1%    37.4ms ± 1%    ~     (p=0.095 n=5+5)
      Gzip                      1.72s ± 1%     1.72s ± 0%    ~     (p=0.905 n=5+4)
      Gunzip                    342ms ± 0%     342ms ± 0%    ~     (p=0.421 n=5+5)
      HTTPClientServer          219µs ± 1%     219µs ± 1%    ~     (p=1.000 n=5+5)
      JSONEncode               89.1ms ± 1%    89.4ms ± 1%    ~     (p=0.222 n=5+5)
      JSONDecode                292ms ± 1%     291ms ± 0%    ~     (p=0.421 n=5+5)
      Mandelbrot200            15.7ms ± 0%    15.6ms ± 0%    ~     (p=0.690 n=5+5)
      GoParse                  19.5ms ± 1%    19.6ms ± 1%    ~     (p=0.310 n=5+5)
      RegexpMatchEasy0_32       534ns ± 1%     529ns ± 1%    ~     (p=0.056 n=5+5)
      RegexpMatchEasy0_1K      2.75µs ± 0%    2.74µs ± 0%  -0.46%  (p=0.008 n=5+5)
      RegexpMatchEasy1_32       572ns ± 2%     565ns ± 3%    ~     (p=0.310 n=5+5)
      RegexpMatchEasy1_1K      4.15µs ± 0%    4.15µs ± 1%    ~     (p=0.548 n=5+5)
      RegexpMatchMedium_32     31.2ns ± 0%    31.1ns ± 0%  -0.45%  (p=0.016 n=5+4)
      RegexpMatchMedium_1K      235µs ± 1%     235µs ± 0%    ~     (p=1.000 n=5+5)
      RegexpMatchHard_32       13.9µs ± 1%    13.5µs ± 1%  -2.74%  (p=0.008 n=5+5)
      RegexpMatchHard_1K        416µs ± 2%     410µs ± 2%    ~     (p=0.056 n=5+5)
      Revcomp                   6.36s ± 0%     6.34s ± 0%  -0.31%  (p=0.008 n=5+5)
      Template                  352ms ± 1%     353ms ± 0%  +0.45%  (p=0.032 n=5+5)
      TimeParse                2.04µs ± 4%    2.01µs ± 0%    ~     (p=0.056 n=5+5)
      TimeFormat               2.97µs ± 0%    2.97µs ± 0%    ~     (p=1.000 n=5+5)
      
      name                   old speed      new speed      delta
      GobDecode              15.7MB/s ± 1%  15.8MB/s ± 0%    ~     (p=0.206 n=5+5)
      GobEncode              20.4MB/s ± 1%  20.5MB/s ± 1%    ~     (p=0.056 n=5+5)
      Gzip                   11.3MB/s ± 1%  11.3MB/s ± 0%    ~     (p=0.841 n=5+4)
      Gunzip                 56.7MB/s ± 0%  56.8MB/s ± 0%    ~     (p=0.389 n=5+5)
      JSONEncode             21.8MB/s ± 1%  21.7MB/s ± 1%    ~     (p=0.246 n=5+5)
      JSONDecode             6.66MB/s ± 0%  6.67MB/s ± 0%    ~     (p=0.857 n=4+5)
      GoParse                2.97MB/s ± 1%  2.96MB/s ± 1%    ~     (p=0.238 n=5+5)
      RegexpMatchEasy0_32    59.9MB/s ± 1%  60.5MB/s ± 1%  +0.92%  (p=0.032 n=5+5)
      RegexpMatchEasy0_1K     372MB/s ± 0%   374MB/s ± 0%  +0.46%  (p=0.008 n=5+5)
      RegexpMatchEasy1_32    56.0MB/s ± 2%  56.7MB/s ± 3%    ~     (p=0.310 n=5+5)
      RegexpMatchEasy1_1K     247MB/s ± 0%   247MB/s ± 1%    ~     (p=0.548 n=5+5)
      RegexpMatchMedium_32   32.0MB/s ± 0%  32.1MB/s ± 0%    ~     (p=0.135 n=5+5)
      RegexpMatchMedium_1K   4.35MB/s ± 1%  4.35MB/s ± 1%    ~     (p=0.825 n=5+5)
      RegexpMatchHard_32     2.30MB/s ± 1%  2.37MB/s ± 1%  +2.78%  (p=0.008 n=5+5)
      RegexpMatchHard_1K     2.47MB/s ± 1%  2.50MB/s ± 2%    ~     (p=0.095 n=5+5)
      Revcomp                40.0MB/s ± 0%  40.1MB/s ± 0%  +0.31%  (p=0.016 n=5+5)
      Template               5.51MB/s ± 1%  5.49MB/s ± 0%    ~     (p=0.190 n=5+5)
      
      Change-Id: I540a2e4e7992376ce04f93b332f64fc3b6071237
      Reviewed-on: https://go-review.googlesource.com/c/go/+/185078Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      307544f4
    • Tobias Klauser's avatar
      syscall: move Renameat to syscall_linux_$GOARCH.go · b58d9bb8
      Tobias Klauser authored
      On linux/riscv64, the renameat syscall no longer exists and has been
      superseded by renameat2. Thus we'll have to use Renameat2 to implement
      Renameat on linux/riscv64 for #27532. Prepare for this by moving the
      Renameat definition to the GOARCH specific files.
      
      Follow CL 157899 which did the same for golang.org/x/sys/unix
      
      Change-Id: I9670213cc3987df48fee962ddee36915a7785560
      Reviewed-on: https://go-review.googlesource.com/c/go/+/192077
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b58d9bb8
    • Ben Shi's avatar
      cmd/compile: optimize ARM's math.bits.RotateLeft32 · 3cfd003a
      Ben Shi authored
      This CL optimizes math.bits.RotateLeft32 to inline
      "MOVW Rx@>Ry, Rd" on ARM.
      
      The benchmark results of math/bits show some improvements.
      name               old time/op  new time/op  delta
      RotateLeft-4       9.42ns ± 0%  6.91ns ± 0%  -26.66%  (p=0.000 n=40+33)
      RotateLeft8-4      8.79ns ± 0%  8.79ns ± 0%   -0.04%  (p=0.000 n=40+31)
      RotateLeft16-4     8.79ns ± 0%  8.79ns ± 0%   -0.04%  (p=0.000 n=40+32)
      RotateLeft32-4     8.16ns ± 0%  7.54ns ± 0%   -7.68%  (p=0.000 n=40+40)
      RotateLeft64-4     15.7ns ± 0%  15.7ns ± 0%     ~     (all equal)
      
      updates #31265
      
      Change-Id: I77bc1c2c702d5323fc7cad5264a8e2d5666bf712
      Reviewed-on: https://go-review.googlesource.com/c/go/+/188697
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      3cfd003a
    • Ben Shi's avatar
      cmd/compile: optimize ARM's math.Abs · c683ab81
      Ben Shi authored
      This CL optimizes math.Abs to an inline ABSD instruction on ARM.
      
      The benchmark results of src/math/ show big improvements.
      name                   old time/op  new time/op  delta
      Acos-4                  181ns ± 0%   182ns ± 0%   +0.30%  (p=0.000 n=40+40)
      Acosh-4                 202ns ± 0%   202ns ± 0%     ~     (all equal)
      Asin-4                  163ns ± 0%   163ns ± 0%     ~     (all equal)
      Asinh-4                 242ns ± 0%   242ns ± 0%     ~     (all equal)
      Atan-4                  120ns ± 0%   121ns ± 0%   +0.83%  (p=0.000 n=40+40)
      Atanh-4                 202ns ± 0%   202ns ± 0%     ~     (all equal)
      Atan2-4                 173ns ± 0%   173ns ± 0%     ~     (all equal)
      Cbrt-4                 1.06µs ± 0%  1.06µs ± 0%   +0.09%  (p=0.000 n=39+37)
      Ceil-4                 72.9ns ± 0%  72.8ns ± 0%     ~     (p=0.237 n=40+40)
      Copysign-4             13.2ns ± 0%  13.2ns ± 0%     ~     (all equal)
      Cos-4                   193ns ± 0%   183ns ± 0%   -5.18%  (p=0.000 n=40+40)
      Cosh-4                  254ns ± 0%   239ns ± 0%   -5.91%  (p=0.000 n=40+40)
      Erf-4                   112ns ± 0%   112ns ± 0%     ~     (all equal)
      Erfc-4                  117ns ± 0%   117ns ± 0%     ~     (all equal)
      Erfinv-4                127ns ± 0%   127ns ± 1%     ~     (p=0.492 n=40+40)
      Erfcinv-4               128ns ± 0%   128ns ± 0%     ~     (all equal)
      Exp-4                   212ns ± 0%   206ns ± 0%   -3.05%  (p=0.000 n=40+40)
      ExpGo-4                 216ns ± 0%   209ns ± 0%   -3.24%  (p=0.000 n=40+40)
      Expm1-4                 142ns ± 0%   142ns ± 0%     ~     (all equal)
      Exp2-4                  191ns ± 0%   184ns ± 0%   -3.45%  (p=0.000 n=40+40)
      Exp2Go-4                194ns ± 0%   187ns ± 0%   -3.61%  (p=0.000 n=40+40)
      Abs-4                  14.4ns ± 0%   6.3ns ± 0%  -56.39%  (p=0.000 n=38+39)
      Dim-4                  12.6ns ± 0%  12.6ns ± 0%     ~     (all equal)
      Floor-4                49.6ns ± 0%  49.6ns ± 0%     ~     (all equal)
      Max-4                  27.6ns ± 0%  27.6ns ± 0%     ~     (all equal)
      Min-4                  27.0ns ± 0%  27.0ns ± 0%     ~     (all equal)
      Mod-4                   349ns ± 0%   305ns ± 1%  -12.55%  (p=0.000 n=33+40)
      Frexp-4                54.0ns ± 0%  47.1ns ± 0%  -12.78%  (p=0.000 n=38+38)
      Gamma-4                 242ns ± 0%   234ns ± 0%   -3.16%  (p=0.000 n=36+40)
      Hypot-4                84.8ns ± 0%  67.8ns ± 0%  -20.05%  (p=0.000 n=31+35)
      HypotGo-4              88.5ns ± 0%  71.6ns ± 0%  -19.12%  (p=0.000 n=40+38)
      Ilogb-4                45.8ns ± 0%  38.9ns ± 0%  -15.12%  (p=0.000 n=40+32)
      J0-4                    821ns ± 0%   802ns ± 0%   -2.33%  (p=0.000 n=33+40)
      J1-4                    816ns ± 0%   807ns ± 0%   -1.05%  (p=0.000 n=40+29)
      Jn-4                   1.67µs ± 0%  1.65µs ± 0%   -1.45%  (p=0.000 n=40+39)
      Ldexp-4                61.5ns ± 0%  54.6ns ± 0%  -11.27%  (p=0.000 n=40+32)
      Lgamma-4                188ns ± 0%   188ns ± 0%     ~     (all equal)
      Log-4                   154ns ± 0%   147ns ± 0%   -4.78%  (p=0.000 n=40+40)
      Logb-4                 50.9ns ± 0%  42.7ns ± 0%  -16.11%  (p=0.000 n=34+39)
      Log1p-4                 160ns ± 0%   159ns ± 0%     ~     (p=0.828 n=40+40)
      Log10-4                 173ns ± 0%   166ns ± 0%   -4.05%  (p=0.000 n=40+40)
      Log2-4                 65.3ns ± 0%  58.4ns ± 0%  -10.57%  (p=0.000 n=37+37)
      Modf-4                 36.4ns ± 0%  36.4ns ± 0%     ~     (all equal)
      Nextafter32-4          36.4ns ± 0%  36.4ns ± 0%     ~     (all equal)
      Nextafter64-4          32.7ns ± 0%  32.6ns ± 0%     ~     (p=0.375 n=40+40)
      PowInt-4                300ns ± 0%   277ns ± 0%   -7.78%  (p=0.000 n=40+40)
      PowFrac-4               676ns ± 0%   635ns ± 0%   -6.00%  (p=0.000 n=40+35)
      Pow10Pos-4             17.6ns ± 0%  17.6ns ± 0%     ~     (all equal)
      Pow10Neg-4             22.0ns ± 0%  22.0ns ± 0%     ~     (all equal)
      Round-4                30.1ns ± 0%  30.1ns ± 0%     ~     (all equal)
      RoundToEven-4          38.9ns ± 0%  38.9ns ± 0%     ~     (all equal)
      Remainder-4             291ns ± 0%   263ns ± 0%   -9.62%  (p=0.000 n=40+40)
      Signbit-4              11.3ns ± 0%  11.3ns ± 0%     ~     (all equal)
      Sin-4                   185ns ± 0%   185ns ± 0%     ~     (all equal)
      Sincos-4                230ns ± 0%   230ns ± 0%     ~     (all equal)
      Sinh-4                  253ns ± 0%   246ns ± 0%   -2.77%  (p=0.000 n=39+39)
      SqrtIndirect-4         41.4ns ± 0%  41.4ns ± 0%     ~     (all equal)
      SqrtLatency-4          13.8ns ± 0%  13.8ns ± 0%     ~     (all equal)
      SqrtIndirectLatency-4  37.0ns ± 0%  37.0ns ± 0%     ~     (p=0.632 n=40+40)
      SqrtGoLatency-4         911ns ± 0%   911ns ± 0%   +0.08%  (p=0.000 n=40+40)
      SqrtPrime-4            13.2µs ± 0%  13.2µs ± 0%   +0.01%  (p=0.038 n=38+40)
      Tan-4                   205ns ± 0%   205ns ± 0%     ~     (all equal)
      Tanh-4                  264ns ± 0%   247ns ± 0%   -6.44%  (p=0.000 n=39+32)
      Trunc-4                45.2ns ± 0%  45.2ns ± 0%     ~     (all equal)
      Y0-4                    796ns ± 0%   792ns ± 0%   -0.55%  (p=0.000 n=35+40)
      Y1-4                    804ns ± 0%   797ns ± 0%   -0.82%  (p=0.000 n=24+40)
      Yn-4                   1.64µs ± 0%  1.62µs ± 0%   -1.27%  (p=0.000 n=40+39)
      Float64bits-4          8.16ns ± 0%  8.16ns ± 0%   +0.04%  (p=0.000 n=35+40)
      Float64frombits-4      10.7ns ± 0%  10.7ns ± 0%     ~     (all equal)
      Float32bits-4          7.53ns ± 0%  7.53ns ± 0%     ~     (p=0.760 n=40+40)
      Float32frombits-4      6.91ns ± 0%  6.91ns ± 0%   -0.04%  (p=0.002 n=32+38)
      [Geo mean]              111ns        106ns        -3.98%
      
      Change-Id: I54f4fd7f5160db020b430b556bde59cc0fdb996d
      Reviewed-on: https://go-review.googlesource.com/c/go/+/188678
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      c683ab81
    • Meng Zhuo's avatar
      cmd/asm: add V[LD|ST][2-4] vector instructions on arm64 · 8403d4ea
      Meng Zhuo authored
      This change adds VLD2, VLD3, VLD4, VST2, VST3, VST4 (multiple structures)
      for image or multi media optimazation.
      
      Change-Id: Iae3538ef4434e436e3fb2f19153c58f918f773af
      Reviewed-on: https://go-review.googlesource.com/c/go/+/166518
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      8403d4ea
    • Illya Yalovyy's avatar
      math/big: fast path for Cmp if same · be452cea
      Illya Yalovyy authored
      math/big.Int Cmp method does not have a fast path for the case if x and y are the same.
      
      Fixes #30856
      
      Change-Id: Ia9a5b5f72db9d73af1b13ed6ac39ecff87d10393
      Reviewed-on: https://go-review.googlesource.com/c/go/+/178957
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      be452cea
    • Cherry Zhang's avatar
      cmd/compile: don't mark stack object symbol DUPOK · 1abe22c3
      Cherry Zhang authored
      Stack object symbol is named as <FunctionName>.stkobj. If the
      function itself is not DUPOK, its stack object symbol should only
      be defined in the package where the function is defined,
      therefore no duplicates.
      
      If in the future we change the stack object symbol to
      content-hash naming, as other gcdata symbols, we can mark it as
      DUPOK.
      
      Change-Id: I5aee96578940e2f76e7115d96cd2716021672c03
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191437
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      1abe22c3
    • Daniel Martí's avatar
      net/http: fix a long test after CL 185117 · 81fde0c9
      Daniel Martí authored
      The net/url error in question now quotes the URL, so update the expected
      output string.
      
      While at it, also update a comment in httputil, though that doesn't
      affect any test.
      
      Fixes #33910.
      
      Change-Id: I0981f528b24337c2952ef60c0db3b7ff72d72110
      Reviewed-on: https://go-review.googlesource.com/c/go/+/192078
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      81fde0c9
    • Bryan C. Mills's avatar
      Revert "cmd/compile: optimize 386's math.bits.TrailingZeros16" · 372b0eed
      Bryan C. Mills authored
      This reverts CL 189277.
      
      Reason for revert: broke 32-bit builders.
      
      Updates #33902
      
      Change-Id: Ie5f180d0371a90e5057ed578c334372e5fc3a286
      Reviewed-on: https://go-review.googlesource.com/c/go/+/192097
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      372b0eed
    • Nao YONASHIRO's avatar
      compress/flate: improve deflate performance by register allocating the index · bc92fe8b
      Nao YONASHIRO authored
      Use local index variable to help the go compiler use a
      register to for the hash index instead of continuous
      memory read and write operations.
      
      compress/flate:
      Encode/Digits/Huffman/1e4-4        35.3µs ± 1%    32.7µs ± 0%  -7.48%  (p=0.000 n=17+19)
      Encode/Digits/Huffman/1e5-4         330µs ± 0%     312µs ± 0%  -5.55%  (p=0.000 n=17+18)
      Encode/Digits/Huffman/1e6-4        3.30ms ± 0%    3.12ms ± 0%  -5.64%  (p=0.000 n=18+19)
      Encode/Digits/Speed/1e4-4           157µs ± 0%     156µs ± 0%  -0.41%  (p=0.000 n=17+19)
      Encode/Digits/Speed/1e5-4          1.46ms ± 0%    1.46ms ± 1%    ~     (p=0.478 n=20+19)
      Encode/Digits/Speed/1e6-4          14.4ms ± 0%    14.4ms ± 0%    ~     (p=0.835 n=19+20)
      Encode/Digits/Default/1e4-4         309µs ± 0%     310µs ± 0%  +0.23%  (p=0.000 n=19+17)
      Encode/Digits/Default/1e5-4        4.76ms ± 0%    4.76ms ± 0%    ~     (p=0.297 n=19+19)
      Encode/Digits/Default/1e6-4        51.0ms ± 0%    51.0ms ± 1%    ~     (p=0.233 n=18+19)
      Encode/Digits/Compression/1e4-4     309µs ± 0%     310µs ± 0%  +0.21%  (p=0.000 n=17+20)
      Encode/Digits/Compression/1e5-4    4.76ms ± 0%    4.76ms ± 0%    ~     (p=0.749 n=20+19)
      Encode/Digits/Compression/1e6-4    50.9ms ± 0%    50.9ms ± 0%    ~     (p=0.499 n=18+19)
      Encode/Newton/Huffman/1e4-4        51.9µs ± 0%    48.0µs ± 0%  -7.61%  (p=0.000 n=19+19)
      Encode/Newton/Huffman/1e5-4         396µs ± 0%     377µs ± 0%  -4.79%  (p=0.000 n=18+19)
      Encode/Newton/Huffman/1e6-4        3.95ms ± 0%    3.74ms ± 0%  -5.21%  (p=0.000 n=20+17)
      Encode/Newton/Speed/1e4-4           155µs ± 0%     154µs ± 0%  -0.67%  (p=0.000 n=17+18)
      Encode/Newton/Speed/1e5-4          1.17ms ± 0%    1.16ms ± 0%  -0.64%  (p=0.000 n=20+16)
      Encode/Newton/Speed/1e6-4          11.6ms ± 0%    11.5ms ± 0%  -0.63%  (p=0.000 n=19+20)
      Encode/Newton/Default/1e4-4         347µs ± 0%     347µs ± 0%    ~     (p=0.744 n=20+19)
      Encode/Newton/Default/1e5-4        5.06ms ± 0%    5.02ms ± 0%  -0.77%  (p=0.000 n=20+19)
      Encode/Newton/Default/1e6-4        53.3ms ± 1%    52.8ms ± 0%  -0.91%  (p=0.000 n=18+16)
      Encode/Newton/Compression/1e4-4     351µs ± 0%     351µs ± 0%    ~     (p=0.277 n=20+20)
      Encode/Newton/Compression/1e5-4    6.90ms ± 0%    6.85ms ± 0%  -0.61%  (p=0.000 n=19+18)
      Encode/Newton/Compression/1e6-4    73.2ms ± 0%    72.8ms ± 0%  -0.52%  (p=0.000 n=18+18)
      
      name                             old speed      new speed      delta
      Encode/Digits/Huffman/1e4-4       283MB/s ± 1%   306MB/s ± 0%  +8.09%  (p=0.000 n=17+19)
      Encode/Digits/Huffman/1e5-4       303MB/s ± 0%   321MB/s ± 0%  +5.87%  (p=0.000 n=18+18)
      Encode/Digits/Huffman/1e6-4       303MB/s ± 0%   321MB/s ± 0%  +5.98%  (p=0.000 n=18+19)
      Encode/Digits/Speed/1e4-4        63.9MB/s ± 0%  64.2MB/s ± 0%  +0.41%  (p=0.000 n=17+19)
      Encode/Digits/Speed/1e5-4        68.5MB/s ± 0%  68.4MB/s ± 1%    ~     (p=0.481 n=20+19)
      Encode/Digits/Speed/1e6-4        69.4MB/s ± 0%  69.3MB/s ± 0%    ~     (p=0.712 n=19+20)
      Encode/Digits/Default/1e4-4      32.3MB/s ± 0%  32.3MB/s ± 0%  -0.23%  (p=0.000 n=19+17)
      Encode/Digits/Default/1e5-4      21.0MB/s ± 0%  21.0MB/s ± 0%    ~     (p=0.460 n=19+19)
      Encode/Digits/Default/1e6-4      19.6MB/s ± 0%  19.6MB/s ± 1%    ~     (p=0.180 n=18+19)
      Encode/Digits/Compression/1e4-4  32.3MB/s ± 0%  32.3MB/s ± 0%  -0.21%  (p=0.000 n=17+20)
      Encode/Digits/Compression/1e5-4  21.0MB/s ± 0%  21.0MB/s ± 0%    ~     (p=0.700 n=20+19)
      Encode/Digits/Compression/1e6-4  19.6MB/s ± 0%  19.6MB/s ± 0%    ~     (p=0.486 n=18+19)
      Encode/Newton/Huffman/1e4-4       193MB/s ± 0%   208MB/s ± 0%  +8.23%  (p=0.000 n=19+19)
      Encode/Newton/Huffman/1e5-4       252MB/s ± 0%   265MB/s ± 0%  +5.04%  (p=0.000 n=18+19)
      Encode/Newton/Huffman/1e6-4       253MB/s ± 0%   267MB/s ± 0%  +5.49%  (p=0.000 n=20+17)
      Encode/Newton/Speed/1e4-4        64.5MB/s ± 0%  65.0MB/s ± 0%  +0.67%  (p=0.000 n=17+18)
      Encode/Newton/Speed/1e5-4        85.7MB/s ± 0%  86.3MB/s ± 0%  +0.65%  (p=0.000 n=20+16)
      Encode/Newton/Speed/1e6-4        86.2MB/s ± 0%  86.7MB/s ± 0%  +0.63%  (p=0.000 n=19+20)
      Encode/Newton/Default/1e4-4      28.9MB/s ± 0%  28.9MB/s ± 0%    ~     (p=0.840 n=20+19)
      Encode/Newton/Default/1e5-4      19.8MB/s ± 0%  19.9MB/s ± 0%  +0.78%  (p=0.000 n=20+19)
      Encode/Newton/Default/1e6-4      18.8MB/s ± 1%  18.9MB/s ± 0%  +0.93%  (p=0.000 n=18+16)
      Encode/Newton/Compression/1e4-4  28.5MB/s ± 0%  28.5MB/s ± 0%    ~     (p=0.244 n=20+20)
      Encode/Newton/Compression/1e5-4  14.5MB/s ± 0%  14.6MB/s ± 0%  +0.61%  (p=0.000 n=19+18)
      Encode/Newton/Compression/1e6-4  13.7MB/s ± 0%  13.7MB/s ± 0%  +0.53%  (p=0.000 n=18+18)
      
      image/png:
      name                        old time/op    new time/op    delta
      EncodeGray-4                  2.16ms ± 1%    1.85ms ± 1%  -14.17%  (p=0.000 n=86+91)
      EncodeGrayWithBufferPool-4    1.99ms ± 0%    1.69ms ± 0%  -15.09%  (p=0.000 n=97+94)
      EncodeNRGBOpaque-4            6.51ms ± 1%    5.62ms ± 1%  -13.66%  (p=0.000 n=90+92)
      EncodeNRGBA-4                 7.33ms ± 1%    6.12ms ± 1%  -16.49%  (p=0.000 n=89+90)
      EncodePaletted-4              5.10ms ± 1%    4.96ms ± 1%   -2.76%  (p=0.000 n=90+87)
      EncodeRGBOpaque-4             6.51ms ± 1%    5.63ms ± 1%  -13.49%  (p=0.000 n=94+87)
      EncodeRGBA-4                  24.3ms ± 2%    23.0ms ± 0%   -5.23%  (p=0.000 n=91+89)
      
      name                        old speed      new speed      delta
      EncodeGray-4                 142MB/s ± 1%   166MB/s ± 1%  +16.50%  (p=0.000 n=86+91)
      EncodeGrayWithBufferPool-4   154MB/s ± 0%   182MB/s ± 0%  +17.78%  (p=0.000 n=97+94)
      EncodeNRGBOpaque-4           189MB/s ± 1%   219MB/s ± 1%  +15.82%  (p=0.000 n=90+93)
      EncodeNRGBA-4                168MB/s ± 1%   201MB/s ± 1%  +19.75%  (p=0.000 n=89+90)
      EncodePaletted-4            60.3MB/s ± 1%  62.0MB/s ± 1%   +2.84%  (p=0.000 n=90+87)
      EncodeRGBOpaque-4            189MB/s ± 1%   218MB/s ± 1%  +15.60%  (p=0.000 n=94+87)
      EncodeRGBA-4                50.6MB/s ± 2%  53.4MB/s ± 0%   +5.51%  (p=0.000 n=91+89)
      
      Change-Id: Ifed4486a7ba19a26abe5cbf2142f15cc7464e84f
      Reviewed-on: https://go-review.googlesource.com/c/go/+/187837
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarJoe Tsai <thebrokentoaster@gmail.com>
      bc92fe8b
    • Stefan Baebler's avatar
      net/url: improve url parsing error messages by quoting · 64cfe9fe
      Stefan Baebler authored
      Current implementation doesn't always make it obvious what the exact
      problem with the URL is, so this makes it clearer by consistently quoting
      the invalid URL, as is the norm in other parsing implementations, eg.:
      strconv.Atoi(" 123") returns an error: parsing " 123": invalid syntax
      
      Updates #29261
      
      Change-Id: Icc6bff8b4a4584677c0f769992823e6e1e0d397d
      GitHub-Last-Rev: 648b9d93fe149ec90f3aeca73019158a344de03e
      GitHub-Pull-Request: golang/go#29384
      Reviewed-on: https://go-review.googlesource.com/c/go/+/185117Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      64cfe9fe
    • Martin Möhrmann's avatar
      runtime: reduce allocations when building pprof LabelSet · 5fb74fc1
      Martin Möhrmann authored
      Pre-allocate the slice of labels with enough capacity
      to avoid growslice calls.
      
      Change-Id: I89db59ac722c03b0202e042d1f707bb041e0999f
      Reviewed-on: https://go-review.googlesource.com/c/go/+/181517
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarMichael Matloob <matloob@golang.org>
      5fb74fc1
    • Eddie Scholtz's avatar
      encoding/xml: rename fInnerXml to fInnerXML · 37373592
      Eddie Scholtz authored
      Per the code review guidelines: "Words in names that are
      initialisms or acronyms have a consistent case."
      
      Change-Id: I347b02d2f48455f2cbbc040191ba197e3e8f23fc
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191970Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      37373592
    • Martin Möhrmann's avatar
      net/url: use strings.IndexByte instead of strings.Index in split function · 5ff12f62
      Martin Möhrmann authored
      Production profiling shows ~15% of url.Parse time being spend in the overhead
      of calling strings.IndexByte through strings.Index instead of calling
      strings.IndexByte directly.
      
      name   old time/op  new time/op  delta
      Split  15.5ns ± 2%  10.7ns ± 3%  -30.98%  (p=0.000 n=20+19)
      
      Change-Id: Ie25dd4afa93539a1335a91ab2a4a367f97bd3df0
      Reviewed-on: https://go-review.googlesource.com/c/go/+/178877
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      5ff12f62
    • Cuong Manh Le's avatar
      cmd/compile: remove gc.eqtype in comments · 6a73e94c
      Cuong Manh Le authored
      golang.org/cl/143180 changed gc.eqtype to types.Identical, but gc.eqtype
      is still mentioned in some comments. Remove them and update comments to
      mention new functions instead.
      
      Change-Id: I6c5eece5221f524556ee55db80de0e4bdfaf166e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191357Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      6a73e94c
    • Nao YONASHIRO's avatar
      image/png: hoist repetitive pixels per byte out of loop in Encode · f04f594a
      Nao YONASHIRO authored
      The existing implementation has calculated pixels per byte for each pixel.
      reduce the calculation of pixels per byte.
      
      name                        old time/op    new time/op     delta
      EncodeGray-4                  2.16ms ± 1%     2.16ms ± 1%    -0.28%  (p=0.000 n=86+84)
      EncodeGrayWithBufferPool-4    1.99ms ± 0%     1.97ms ± 0%    -0.72%  (p=0.000 n=97+92)
      EncodeNRGBOpaque-4            6.51ms ± 1%     6.48ms ± 1%    -0.45%  (p=0.000 n=90+85)
      EncodeNRGBA-4                 7.33ms ± 1%     7.28ms ± 0%    -0.69%  (p=0.000 n=89+87)
      EncodePaletted-4              5.10ms ± 1%     2.29ms ± 0%   -55.11%  (p=0.000 n=90+85)
      EncodeRGBOpaque-4             6.51ms ± 1%     6.51ms ± 0%      ~     (p=0.311 n=94+88)
      EncodeRGBA-4                  24.3ms ± 2%     24.1ms ± 1%    -0.87%  (p=0.000 n=91+91)
      
      name                        old speed      new speed       delta
      EncodeGray-4                 142MB/s ± 1%    143MB/s ± 1%    +0.26%  (p=0.000 n=86+85)
      EncodeGrayWithBufferPool-4   154MB/s ± 0%    156MB/s ± 0%    +0.73%  (p=0.000 n=97+92)
      EncodeNRGBOpaque-4           189MB/s ± 1%    190MB/s ± 1%    +0.44%  (p=0.000 n=90+86)
      EncodeNRGBA-4                168MB/s ± 1%    169MB/s ± 0%    +0.69%  (p=0.000 n=89+87)
      EncodePaletted-4            60.3MB/s ± 1%  134.2MB/s ± 0%  +122.74%  (p=0.000 n=90+85)
      EncodeRGBOpaque-4            189MB/s ± 1%    189MB/s ± 0%      ~     (p=0.326 n=94+88)
      EncodeRGBA-4                50.6MB/s ± 2%   51.1MB/s ± 1%    +0.87%  (p=0.000 n=91+91)
      
      name                        old alloc/op   new alloc/op    delta
      EncodeGray-4                   852kB ± 0%      852kB ± 0%    +0.00%  (p=0.000 n=100+100)
      EncodeGrayWithBufferPool-4    1.49kB ± 2%     1.47kB ± 1%    -0.88%  (p=0.000 n=95+90)
      EncodeNRGBOpaque-4             860kB ± 0%      860kB ± 0%    +0.00%  (p=0.003 n=98+58)
      EncodeNRGBA-4                  864kB ± 0%      864kB ± 0%    +0.00%  (p=0.021 n=100+99)
      EncodePaletted-4               849kB ± 0%      849kB ± 0%    +0.00%  (p=0.040 n=100+100)
      EncodeRGBOpaque-4              860kB ± 0%      860kB ± 0%      ~     (p=0.062 n=66+98)
      EncodeRGBA-4                  3.32MB ± 0%     3.32MB ± 0%    -0.00%  (p=0.044 n=99+99)
      
      name                        old allocs/op  new allocs/op   delta
      EncodeGray-4                    32.0 ± 0%       32.0 ± 0%      ~     (all equal)
      EncodeGrayWithBufferPool-4      3.00 ± 0%       3.00 ± 0%      ~     (all equal)
      EncodeNRGBOpaque-4              32.0 ± 0%       32.0 ± 0%      ~     (all equal)
      EncodeNRGBA-4                   32.0 ± 0%       32.0 ± 0%      ~     (all equal)
      EncodePaletted-4                36.0 ± 0%       36.0 ± 0%      ~     (all equal)
      EncodeRGBOpaque-4               32.0 ± 0%       32.0 ± 0%      ~     (all equal)
      EncodeRGBA-4                    614k ± 0%       614k ± 0%      ~     (all equal)
      
      Change-Id: I716bde2dc80d8111d75d3d765fc09223f770d5a5
      Reviewed-on: https://go-review.googlesource.com/c/go/+/187417Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarNigel Tao <nigeltao@golang.org>
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f04f594a
    • Agniva De Sarker's avatar
      cmd/compile: apply optimization for readonly globals on wasm · 7be97af2
      Agniva De Sarker authored
      Extend the optimization introduced in CL 141118 to the wasm architecture.
      
      And for reference, the rules trigger 212 times while building std and cmd
      
      $GOOS=js GOARCH=wasm gotip build std cmd
      $grep -E "Wasm.rules:44(1|2|3|4)" rulelog | wc -l
      212
      
      Updates #26498
      
      Change-Id: I153684a2b98589ae812b42268da08b65679e09d1
      Reviewed-on: https://go-review.googlesource.com/c/go/+/185477
      Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
      7be97af2
    • Agniva De Sarker's avatar
      runtime,syscall/js: reuse wasm memory DataView · 07f04607
      Agniva De Sarker authored
      Currently, every call to mem() incurs a new DataView object. This was necessary
      because the wasm linear memory could grow at any time.
      
      Now, whenever the memory grows, we make a call to the front-end. This allows us to
      reuse the existing DataView object and create a new one only when the memory actually grows.
      
      This gives us a boost in performance during DOM operations, while incurring an extra
      trip to front-end when memory grows. However, since the GrowMemory calls are meant to decrease
      over the runtime of an application, this is a good tradeoff in the long run.
      
      The benchmarks have been tested inside a browser (Google Chrome 75.0.3770.90 (Official Build) (64-bit)).
      It is hard to get stable nos. for DOM operations since the jumps make the timing very unreliable.
      But overall, it shows a clear gain.
      
      name  old time/op  new time/op  delta
      DOM    135µs ±26%    84µs ±10%  -37.22%  (p=0.000 n=10+9)
      
      Go1 benchmarks do not show any noticeable degradation:
      name                   old time/op    new time/op    delta
      BinaryTree17              22.5s ± 0%     22.5s ± 0%     ~     (p=0.743 n=8+9)
      Fannkuch11                15.1s ± 0%     15.1s ± 0%   +0.17%  (p=0.000 n=9+9)
      FmtFprintfEmpty           324ns ± 1%     303ns ± 0%   -6.64%  (p=0.000 n=9+10)
      FmtFprintfString          535ns ± 1%     515ns ± 0%   -3.85%  (p=0.000 n=10+10)
      FmtFprintfInt             609ns ± 0%     589ns ± 0%   -3.28%  (p=0.000 n=10+10)
      FmtFprintfIntInt          938ns ± 0%     920ns ± 0%   -1.92%  (p=0.000 n=9+10)
      FmtFprintfPrefixedInt     950ns ± 0%     924ns ± 0%   -2.72%  (p=0.000 n=10+9)
      FmtFprintfFloat          1.41µs ± 1%    1.43µs ± 0%   +1.01%  (p=0.000 n=10+10)
      FmtManyArgs              3.66µs ± 1%    3.46µs ± 0%   -5.43%  (p=0.000 n=9+10)
      GobDecode                38.8ms ± 1%    37.8ms ± 0%   -2.50%  (p=0.000 n=10+8)
      GobEncode                26.3ms ± 1%    26.3ms ± 0%     ~     (p=0.853 n=10+10)
      Gzip                      1.16s ± 1%     1.16s ± 0%   -0.37%  (p=0.008 n=10+9)
      Gunzip                    210ms ± 0%     208ms ± 1%   -1.01%  (p=0.000 n=10+10)
      JSONEncode               48.0ms ± 0%    48.1ms ± 1%   +0.29%  (p=0.019 n=9+9)
      JSONDecode                348ms ± 1%     326ms ± 1%   -6.34%  (p=0.000 n=10+10)
      Mandelbrot200            6.62ms ± 0%    6.64ms ± 0%   +0.37%  (p=0.000 n=7+9)
      GoParse                  23.9ms ± 1%    24.7ms ± 1%   +2.98%  (p=0.000 n=9+9)
      RegexpMatchEasy0_32       555ns ± 0%     561ns ± 0%   +1.10%  (p=0.000 n=8+10)
      RegexpMatchEasy0_1K      3.94µs ± 1%    3.94µs ± 0%     ~     (p=0.906 n=9+8)
      RegexpMatchEasy1_32       516ns ± 0%     524ns ± 0%   +1.51%  (p=0.000 n=9+10)
      RegexpMatchEasy1_1K      4.39µs ± 1%    4.40µs ± 1%     ~     (p=0.171 n=10+10)
      RegexpMatchMedium_32     25.1ns ± 0%    25.5ns ± 0%   +1.51%  (p=0.000 n=9+8)
      RegexpMatchMedium_1K      196µs ± 0%     203µs ± 1%   +3.23%  (p=0.000 n=9+10)
      RegexpMatchHard_32       11.2µs ± 1%    11.6µs ± 1%   +3.62%  (p=0.000 n=10+10)
      RegexpMatchHard_1K        334µs ± 1%     348µs ± 1%   +4.21%  (p=0.000 n=9+10)
      Revcomp                   2.39s ± 0%     2.41s ± 0%   +0.78%  (p=0.000 n=8+9)
      Template                  385ms ± 1%     336ms ± 0%  -12.61%  (p=0.000 n=10+9)
      TimeParse                2.18µs ± 1%    2.18µs ± 1%     ~     (p=0.424 n=10+10)
      TimeFormat               2.28µs ± 1%    2.22µs ± 1%   -2.30%  (p=0.000 n=10+10)
      
      name                   old speed      new speed      delta
      GobDecode              19.8MB/s ± 1%  20.3MB/s ± 0%   +2.56%  (p=0.000 n=10+8)
      GobEncode              29.1MB/s ± 1%  29.2MB/s ± 0%     ~     (p=0.810 n=10+10)
      Gzip                   16.7MB/s ± 1%  16.8MB/s ± 0%   +0.37%  (p=0.007 n=10+9)
      Gunzip                 92.2MB/s ± 0%  93.2MB/s ± 1%   +1.03%  (p=0.000 n=10+10)
      JSONEncode             40.4MB/s ± 0%  40.3MB/s ± 1%   -0.28%  (p=0.025 n=9+9)
      JSONDecode             5.58MB/s ± 1%  5.96MB/s ± 1%   +6.80%  (p=0.000 n=10+10)
      GoParse                2.42MB/s ± 0%  2.35MB/s ± 1%   -2.83%  (p=0.000 n=8+9)
      RegexpMatchEasy0_32    57.7MB/s ± 0%  57.0MB/s ± 0%   -1.09%  (p=0.000 n=8+10)
      RegexpMatchEasy0_1K     260MB/s ± 1%   260MB/s ± 0%     ~     (p=0.963 n=9+8)
      RegexpMatchEasy1_32    62.1MB/s ± 0%  61.1MB/s ± 0%   -1.53%  (p=0.000 n=10+10)
      RegexpMatchEasy1_1K     233MB/s ± 1%   233MB/s ± 1%     ~     (p=0.190 n=10+10)
      RegexpMatchMedium_32   39.8MB/s ± 0%  39.1MB/s ± 1%   -1.74%  (p=0.000 n=9+10)
      RegexpMatchMedium_1K   5.21MB/s ± 0%  5.05MB/s ± 1%   -3.09%  (p=0.000 n=9+10)
      RegexpMatchHard_32     2.86MB/s ± 1%  2.76MB/s ± 1%   -3.43%  (p=0.000 n=10+10)
      RegexpMatchHard_1K     3.06MB/s ± 1%  2.94MB/s ± 1%   -4.06%  (p=0.000 n=9+10)
      Revcomp                 106MB/s ± 0%   105MB/s ± 0%   -0.77%  (p=0.000 n=8+9)
      Template               5.04MB/s ± 1%  5.77MB/s ± 0%  +14.48%  (p=0.000 n=10+9)
      
      Updates #32591
      
      Change-Id: Id567e14a788e359248b2129ef1cf0adc8cc4ab7f
      Reviewed-on: https://go-review.googlesource.com/c/go/+/183457
      Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
      07f04607
    • Agniva De Sarker's avatar
      net/http/httputil: fix goroutine leak for DumpRequestOut · e7a4ab42
      Agniva De Sarker authored
      When an invalid URL was passed to DumpRequestOut, it would directly return
      without gracefully shutting down the reader goroutine.
      
      So we create a channel and signal the reader goroutine to exit
      if an error occurs during roundtrip.
      
      Fixes #32571
      
      Change-Id: I8c2970f1601e599f3d1ebfed298faf5f5716fc2c
      Reviewed-on: https://go-review.googlesource.com/c/go/+/182037
      Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      e7a4ab42
    • Agniva De Sarker's avatar
      cmd/compile: optimize bounded shifts on wasm · 8fedb2d3
      Agniva De Sarker authored
      Use the shiftIsBounded function to generate more efficient
      Shift instructions.
      
      Updates #25167
      
      Change-Id: Id350f8462dc3a7ed3bfed0bcbea2860b8f40048a
      Reviewed-on: https://go-review.googlesource.com/c/go/+/182558
      Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
      8fedb2d3
    • Agniva De Sarker's avatar
      cmd/compile: coalesce a few shift rules for wasm · b9ef4c0f
      Agniva De Sarker authored
      Change-Id: I1b76daba90afd474390db8d9c238445abaac7ca6
      Reviewed-on: https://go-review.googlesource.com/c/go/+/182557
      Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      b9ef4c0f
    • Sam Arnold's avatar
      strconv: Speed improvement to number parsing · 3d48ae35
      Sam Arnold authored
      Run underscore validation only if we have seen underscores.
      
      Some performance results on my laptop:
      name                   old time/op  new time/op  delta
      Atof64Decimal-12       30.5ns ± 0%  23.8ns ± 0%  -22.02%  (p=0.016 n=5+4)
      Atof64Float-12         39.0ns ± 0%  28.7ns ± 0%  -26.39%  (p=0.002 n=6+6)
      Atof64FloatExp-12      64.4ns ± 1%  54.4ns ± 1%  -15.65%  (p=0.002 n=6+6)
      Atof64Big-12            115ns ± 1%    87ns ± 1%  -24.45%  (p=0.002 n=6+6)
      Atof64RandomBits-12     187ns ±14%   156ns ±19%  -16.46%  (p=0.032 n=6+6)
      Atof64RandomFloats-12   126ns ± 0%   105ns ± 1%  -16.65%  (p=0.000 n=6+5)
      Atof32Decimal-12       32.0ns ± 1%  24.0ns ± 1%  -24.97%  (p=0.002 n=6+6)
      Atof32Float-12         37.1ns ± 1%  27.0ns ± 1%  -27.42%  (p=0.002 n=6+6)
      Atof32FloatExp-12      68.4ns ± 1%  54.2ns ± 1%  -20.77%  (p=0.002 n=6+6)
      Atof32Random-12        92.0ns ± 1%  77.4ns ± 0%  -15.81%  (p=0.000 n=6+5)
      ParseInt/Pos/7bit-12   19.4ns ± 1%  13.8ns ±10%  -28.94%  (p=0.002 n=6+6)
      ParseInt/Pos/26bit-12  29.1ns ± 1%  19.8ns ± 2%  -31.92%  (p=0.002 n=6+6)
      ParseInt/Pos/31bit-12  33.1ns ± 0%  22.3ns ± 3%  -32.62%  (p=0.004 n=5+6)
      ParseInt/Pos/56bit-12  47.8ns ± 1%  30.7ns ± 1%  -35.78%  (p=0.004 n=6+5)
      ParseInt/Pos/63bit-12  51.9ns ± 1%  33.4ns ± 2%  -35.49%  (p=0.002 n=6+6)
      ParseInt/Neg/7bit-12   18.5ns ± 4%  13.4ns ± 3%  -27.88%  (p=0.002 n=6+6)
      ParseInt/Neg/26bit-12  28.4ns ± 3%  19.7ns ± 3%  -30.38%  (p=0.002 n=6+6)
      ParseInt/Neg/31bit-12  31.9ns ± 1%  21.8ns ± 2%  -31.56%  (p=0.002 n=6+6)
      ParseInt/Neg/56bit-12  46.2ns ± 0%  30.6ns ± 1%  -33.73%  (p=0.004 n=5+6)
      ParseInt/Neg/63bit-12  50.2ns ± 1%  33.2ns ± 1%  -33.96%  (p=0.002 n=6+6)
      
      Fixes #33330
      
      Change-Id: I119da66457c2fbaf6e88bb90cf56417a16df8f0e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/187957
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      3d48ae35
    • Ben Shi's avatar
      cmd/compile: optimize 386's math.bits.TrailingZeros16 · 22355d6c
      Ben Shi authored
      This CL optimizes math.bits.TrailingZeros16 on 386 with
      a pair of BSFL and ORL instrcutions.
      
      The case TrailingZeros16-4 of the benchmark test in
      math/bits shows big improvement.
      name               old time/op  new time/op  delta
      TrailingZeros16-4  1.55ns ± 1%  0.87ns ± 1%  -43.87%  (p=0.000 n=50+49)
      
      Change-Id: Ia899975b0e46f45dcd20223b713ed632bc32740b
      Reviewed-on: https://go-review.googlesource.com/c/go/+/189277
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      22355d6c
    • Ben Shi's avatar
      test/fixedbugs: add more test cases to issue #27718 · e1e4c499
      Ben Shi authored
      This CL add test cases for the unary FP negative
      operation.
      
      Change-Id: I54e7292ca9df05da0c2b113adefc97ee1e94c6e2
      Reviewed-on: https://go-review.googlesource.com/c/go/+/190937
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      e1e4c499
    • Ben Shi's avatar
      cmd/compile: generate Select on WASM · 731e6fc3
      Ben Shi authored
      This CL performs the branchelim optimization on WASM with its
      select instruction. And the total size of pkg/js_wasm decreased
      about 80KB by this optimization.
      
      Change-Id: I868eb146120a1cac5c4609c8e9ddb07e4da8a1d9
      Reviewed-on: https://go-review.googlesource.com/c/go/+/190957
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRichard Musiol <neelance@gmail.com>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      731e6fc3
    • fanzha02's avatar
      cmd/internal/obj/arm64: add support for most system registers · 9c67516e
      fanzha02 authored
      This patch supports the EL0 and EL1 system registers used in MRS/MSR
      instructions. This patch refactors the assembler code, allowing the
      assembler to read system register information from the automatically
      generated sysRegEnc.go file and move existing declared system registers
      to the sysRegEnc.go file.
      
      This patch adds 431 system registers, it is worth noting that the number
      of special registers is initialized to less than 1024 in the list7.go file.
      
      This CL also adds some test cases to test the newly added system registers.
      
      The test cases are contributed by Dianhong Xu <Dianhong.Xu@arm.com>
      
      Change-Id: Ic09a937eaaeefe82bd08b5dd726808f8ff6cebf6
      Reviewed-on: https://go-review.googlesource.com/c/go/+/189577Reviewed-by: default avatarBen Shi <powerman1st@163.com>
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      9c67516e
    • Keith Randall's avatar
      cmd/compile: remove auxSymInt32 · b91b3d9c
      Keith Randall authored
      We never used it, might as well get rid of it.
      
      Change-Id: I5c23c93e90173bff9ac1fc1b8ae1e2025215d6eb
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191938
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      b91b3d9c
  2. 27 Aug, 2019 5 commits
    • Filippo Valsorda's avatar
      crypto/tls: remove TLS 1.3 opt-out · a8c2e5c6
      Filippo Valsorda authored
      Fixes #30055
      
      Change-Id: If757c43b52fc7bf62b0afb1c720615329fb5569d
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191999
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      a8c2e5c6
    • Filippo Valsorda's avatar
      crypto/tls: remove SSLv3 support · ffcb678f
      Filippo Valsorda authored
      SSLv3 has been irreparably broken since the POODLE attack 5 years ago
      and RFC 7568 (f.k.a. draft-ietf-tls-sslv3-diediedie) prohibits its use
      in no uncertain terms.
      
      As announced in the Go 1.13 release notes, remove support for it
      entirely in Go 1.14.
      
      Updates #32716
      
      Change-Id: Id653557961d8f75f484a01e6afd2e104a4ccceaf
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191976
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ffcb678f
    • Josh Bleecher Snyder's avatar
      cmd/compile: improve shortcircuit pass · 52ae04fd
      Josh Bleecher Snyder authored
      While working on #30645, I noticed that many instances
      in which the walkinrange optimization could apply
      were not even being considered.
      
      This was because of extraneous blocks in the CFG,
      of the type that shortcircuit normally removes.
      
      The change improves the shortcircuit pass to handle
      most of those cases. (There are a few that can only be
      reasonably detected later in compilation, after other
      optimizations have been run, but not enough to be worth chasing.)
      
      Notable changes:
      
      * Instead of calculating live-across-blocks values, use v.Uses == 1.
        This is cheaper and more straightforward.
        v.Uses did not exist when this pass was initially written.
      * Incorporate a fusePlain and loop until stable.
        This is necessary to find many of the instances.
      * Allow Copy and Not wrappers around Phi values.
        This significantly increases effectiveness.
      * Allow removal of all preds, creating a dead block.
        The previous pass stopped unnecessarily at one pred.
      * Use phielimValue during cleanup instead of manually
        setting the op to OpCopy.
      
      The result is marginally faster compilation and smaller code.
      
      name        old time/op       new time/op       delta
      Template          213ms ± 2%        212ms ± 2%  -0.63%  (p=0.002 n=49+48)
      Unicode          90.0ms ± 2%       89.8ms ± 2%    ~     (p=0.122 n=48+48)
      GoTypes           710ms ± 3%        711ms ± 2%    ~     (p=0.433 n=45+49)
      Compiler          3.23s ± 2%        3.22s ± 2%    ~     (p=0.124 n=47+49)
      SSA               10.0s ± 1%        10.0s ± 1%  -0.43%  (p=0.000 n=48+50)
      Flate             135ms ± 3%        135ms ± 2%    ~     (p=0.311 n=49+49)
      GoParser          158ms ± 2%        158ms ± 2%    ~     (p=0.757 n=48+48)
      Reflect           447ms ± 2%        447ms ± 2%    ~     (p=0.815 n=49+48)
      Tar               189ms ± 2%        189ms ± 3%    ~     (p=0.530 n=47+49)
      XML               251ms ± 3%        250ms ± 1%  -0.75%  (p=0.002 n=49+48)
      [Geo mean]        427ms             426ms       -0.25%
      
      name        old user-time/op  new user-time/op  delta
      Template          265ms ± 2%        265ms ± 2%    ~     (p=0.969 n=48+50)
      Unicode           119ms ± 6%        119ms ± 6%    ~     (p=0.738 n=50+50)
      GoTypes           923ms ± 2%        925ms ± 2%    ~     (p=0.057 n=43+47)
      Compiler          4.37s ± 2%        4.37s ± 2%    ~     (p=0.691 n=50+46)
      SSA               13.4s ± 1%        13.4s ± 1%    ~     (p=0.282 n=42+49)
      Flate             162ms ± 2%        162ms ± 2%    ~     (p=0.774 n=48+50)
      GoParser          186ms ± 2%        186ms ± 3%    ~     (p=0.213 n=47+47)
      Reflect           572ms ± 2%        573ms ± 3%    ~     (p=0.303 n=50+49)
      Tar               240ms ± 3%        240ms ± 2%    ~     (p=0.939 n=46+44)
      XML               302ms ± 2%        302ms ± 2%    ~     (p=0.399 n=47+47)
      [Geo mean]        540ms             541ms       +0.07%
      
      name        old alloc/op      new alloc/op      delta
      Template         36.8MB ± 0%       36.7MB ± 0%  -0.42%  (p=0.008 n=5+5)
      Unicode          28.1MB ± 0%       28.1MB ± 0%    ~     (p=0.151 n=5+5)
      GoTypes           124MB ± 0%        124MB ± 0%  -0.26%  (p=0.008 n=5+5)
      Compiler          571MB ± 0%        566MB ± 0%  -0.84%  (p=0.008 n=5+5)
      SSA              1.86GB ± 0%       1.85GB ± 0%  -0.58%  (p=0.008 n=5+5)
      Flate            22.8MB ± 0%       22.8MB ± 0%  -0.17%  (p=0.008 n=5+5)
      GoParser         27.3MB ± 0%       27.3MB ± 0%  -0.20%  (p=0.008 n=5+5)
      Reflect          79.5MB ± 0%       79.3MB ± 0%  -0.20%  (p=0.008 n=5+5)
      Tar              34.7MB ± 0%       34.6MB ± 0%  -0.42%  (p=0.008 n=5+5)
      XML              45.4MB ± 0%       45.3MB ± 0%  -0.29%  (p=0.008 n=5+5)
      [Geo mean]       80.0MB            79.7MB       -0.34%
      
      name        old allocs/op     new allocs/op     delta
      Template           378k ± 0%         377k ± 0%  -0.22%  (p=0.008 n=5+5)
      Unicode            339k ± 0%         339k ± 0%    ~     (p=0.643 n=5+5)
      GoTypes           1.36M ± 0%        1.36M ± 0%  -0.10%  (p=0.008 n=5+5)
      Compiler          5.51M ± 0%        5.50M ± 0%  -0.13%  (p=0.008 n=5+5)
      SSA               17.5M ± 0%        17.5M ± 0%  -0.14%  (p=0.008 n=5+5)
      Flate              234k ± 0%         234k ± 0%  -0.04%  (p=0.008 n=5+5)
      GoParser           299k ± 0%         299k ± 0%  -0.05%  (p=0.008 n=5+5)
      Reflect            978k ± 0%         979k ± 0%  +0.02%  (p=0.016 n=5+5)
      Tar                351k ± 0%         351k ± 0%  -0.04%  (p=0.008 n=5+5)
      XML                435k ± 0%         435k ± 0%  -0.11%  (p=0.008 n=5+5)
      [Geo mean]         840k              840k       -0.08%
      
      file      before    after     Δ       %
      go        14794788  14770212  -24576  -0.166%
      addr2line 4203688   4199592   -4096   -0.097%
      api       5954056   5941768   -12288  -0.206%
      asm       4862704   4846320   -16384  -0.337%
      cgo       4778920   4770728   -8192   -0.171%
      compile   24001568  23923792  -77776  -0.324%
      cover     5198440   5190248   -8192   -0.158%
      dist      3595248   3587056   -8192   -0.228%
      doc       4618504   4610312   -8192   -0.177%
      fix       3337416   3333320   -4096   -0.123%
      link      6120408   6116312   -4096   -0.067%
      nm        4149064   4140872   -8192   -0.197%
      objdump   4555608   4547416   -8192   -0.180%
      pprof     14616324  14595844  -20480  -0.140%
      test2json 2766328   2762232   -4096   -0.148%
      trace     11638844  11622460  -16384  -0.141%
      vet       8274936   8258552   -16384  -0.198%
      total     132520780 132270972 -249808 -0.189%
      
      Change-Id: Ifcd235a2a6e5f13ed5c93e62523e2ef61321fccf
      Reviewed-on: https://go-review.googlesource.com/c/go/+/178197
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      52ae04fd
    • Bryan C. Mills's avatar
      cmd/go/internal/get: remove '--' separator from 'git ls-remote' command · 0a778cf5
      Bryan C. Mills authored
      'git ls-remote' started recognizing the '--' separator at some point
      after 2.7.4, but git defaults to version 2.7.4 on Ubuntu 16.04 LTS,
      which remains supported by Ubuntu until April 2021.
      
      We added '--' tokens to most VCS commands as a defensive measure in
      CL 181237, but it isn't strictly necessary here because the 'scheme'
      argument to our template is chosen from a predefined list: we can
      safely drop it to retain compatibility.
      
      Fixes #33836
      Updates #26746
      
      Change-Id: Ibb53366b95f8029b587e0b7646a439330d759ac7
      Reviewed-on: https://go-review.googlesource.com/c/go/+/191978
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDmitri Shuralyov <dmitshur@golang.org>
      0a778cf5
    • Josh Bleecher Snyder's avatar
      cmd/compile: run deadcode before lowered CSE · 260e3d08
      Josh Bleecher Snyder authored
      CSE can make dead values live again.
      Running deadcode first avoids that;
      it also makes CSE more efficient.
      
      file    before    after     Δ       %       
      api     5970616   5966520   -4096   -0.069% 
      asm     4867088   4846608   -20480  -0.421% 
      compile 23988320  23935072  -53248  -0.222% 
      link    6084376   6080280   -4096   -0.067% 
      nm      4165736   4161640   -4096   -0.098% 
      objdump 4572216   4568120   -4096   -0.090% 
      pprof   14452996  14457092  +4096   +0.028% 
      trace   11467292  11471388  +4096   +0.036% 
      total   132181100 132099180 -81920  -0.062% 
      
      Compiler performance impact is negligible:
      
      name        old alloc/op      new alloc/op      delta
      Template         38.8MB ± 0%       38.8MB ± 0%  -0.04%  (p=0.008 n=5+5)
      Unicode          28.2MB ± 0%       28.2MB ± 0%    ~     (p=1.000 n=5+5)
      GoTypes           131MB ± 0%        131MB ± 0%  -0.14%  (p=0.008 n=5+5)
      Compiler          606MB ± 0%        606MB ± 0%  -0.05%  (p=0.008 n=5+5)
      SSA              2.14GB ± 0%       2.13GB ± 0%  -0.26%  (p=0.008 n=5+5)
      Flate            24.0MB ± 0%       24.0MB ± 0%  -0.18%  (p=0.008 n=5+5)
      GoParser         28.8MB ± 0%       28.8MB ± 0%  -0.15%  (p=0.008 n=5+5)
      Reflect          83.8MB ± 0%       83.7MB ± 0%  -0.11%  (p=0.008 n=5+5)
      Tar              36.4MB ± 0%       36.4MB ± 0%  -0.09%  (p=0.008 n=5+5)
      XML              47.9MB ± 0%       47.8MB ± 0%  -0.15%  (p=0.008 n=5+5)
      [Geo mean]       84.6MB            84.5MB       -0.12%
      
      name        old allocs/op     new allocs/op     delta
      Template           379k ± 0%         380k ± 0%  +0.15%  (p=0.008 n=5+5)
      Unicode            340k ± 0%         340k ± 0%    ~     (p=0.738 n=5+5)
      GoTypes           1.36M ± 0%        1.36M ± 0%  +0.05%  (p=0.008 n=5+5)
      Compiler          5.49M ± 0%        5.49M ± 0%  +0.12%  (p=0.008 n=5+5)
      SSA               17.5M ± 0%        17.5M ± 0%  -0.18%  (p=0.008 n=5+5)
      Flate              235k ± 0%         235k ± 0%    ~     (p=0.079 n=5+5)
      GoParser           302k ± 0%         302k ± 0%    ~     (p=0.310 n=5+5)
      Reflect            976k ± 0%         977k ± 0%  +0.08%  (p=0.008 n=5+5)
      Tar                352k ± 0%         352k ± 0%  +0.12%  (p=0.008 n=5+5)
      XML                436k ± 0%         436k ± 0%  -0.05%  (p=0.008 n=5+5)
      [Geo mean]         842k              842k       +0.03%
      
      
      Change-Id: I53e8faed1859885ca5c4a5d45067a50984f3eff1
      Reviewed-on: https://go-review.googlesource.com/c/go/+/175879
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      260e3d08