1. 16 Apr, 2018 14 commits
    • Michael Munday's avatar
      cmd/compile: generate constants for NeqPtr, EqPtr and IsNonNil ops · 58cdecb9
      Michael Munday authored
      If both inputs are constant offsets from the same pointer then we
      can evaluate NeqPtr and EqPtr at compile time. Triggers a few times
      during all.bash. Removes a conditional branch in the following
      code:
      
      copy(x[1:], x[:])
      
      This branch was recently added as an optimization in CL 94596. We
      now skip the memmove if the pointers are equal. However, in the
      above code we know at compile time that they are never equal.
      
      Also, when the offset is variable, check if the offset is zero
      rather than if the pointers are equal. For example:
      
      copy(x[a:], x[:])
      
      This would now skip the copy if a == 0, rather than if x + a == x.
      
      Finally I've also added a rule to make IsNonNil true for pointers
      to values on the stack. The nil check elimination pass will catch
      these anyway, but eliminating them here might eliminate branches
      earlier.
      
      Change-Id: If72f436fef0a96ad0f4e296d3a1f8b6c3e712085
      Reviewed-on: https://go-review.googlesource.com/106635
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      58cdecb9
    • Felix Kollmann's avatar
      doc: clarify package uninstall/clean command · 89d576c9
      Felix Kollmann authored
      Fixes #24864
      
      Change-Id: Iaffd23b368aff663bfc09a4e6277c01e7b5ea48d
      GitHub-Last-Rev: 98e39b7bff6e646d48c0bf961aee0075a9034ab2
      GitHub-Pull-Request: golang/go#24865
      Reviewed-on: https://go-review.googlesource.com/106986Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      89d576c9
    • Brad Fitzpatrick's avatar
      cmd/dist, os/user: test os/user in osusergo mode as well, fix plan9 & windows · f613a7bf
      Brad Fitzpatrick authored
      Would've caught two regressions so far, and found two more.
      
      Updates #24841
      Updates #24845 (package net remains)
      
      Change-Id: I57ad06eb54e04b8c99b5d2e7f24c77ad865224e8
      Reviewed-on: https://go-review.googlesource.com/107300Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      f613a7bf
    • Kir Kolyshkin's avatar
      os/user: fix build on darwin with "osusergo" build tag · 04a27bef
      Kir Kolyshkin authored
      Fixes #24841
      Updates #24845
      
      Change-Id: Ia7e2deefe64c12ee8a76ce6ed9f9e003e912b161
      Reviewed-on: https://go-review.googlesource.com/107299Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      04a27bef
    • David Url's avatar
      net/http: omit forbidden Trailer headers from response · ea3f3296
      David Url authored
      Use the vendored ValidTrailerHeader function from x/net/http/httpguts to
      check Trailer headers according to RFC 7230. The previous implementation
      only omitted illegal Trailer headers defined in RFC 2616.
      
      This CL adds x/net/http/httpguts from CL 104042 (git rev a35a21de97)
      
      Fixes #23908
      
      Change-Id: Ib2329a384040494093c18e209db9b62aaf86e921
      Reviewed-on: https://go-review.googlesource.com/104075Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ea3f3296
    • Alberto Donizetti's avatar
      doc: use past releases in Release Policy explanation · 7b7affa5
      Alberto Donizetti authored
      As suggested by Ian on the issue, just use past releases to avoid any
      confusion regarding current and future releases.
      
      Fixes #23891
      
      Change-Id: Ie513cd3e15aa04822898be57f71976e6fe6bd816
      Reviewed-on: https://go-review.googlesource.com/107078Reviewed-by: 's avatarAndrew Bonventre <andybons@golang.org>
      7b7affa5
    • Kunpei Sakai's avatar
      time: go fmt · 0164ada3
      Kunpei Sakai authored
      Change-Id: I0e6b308333b84409bb0bb034c17fef9b63ad44c4
      Reviewed-on: https://go-review.googlesource.com/107377Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      0164ada3
    • Alberto Donizetti's avatar
      cmd/compile: move Issue 16214 test, delete asm_test file · 93f95a30
      Alberto Donizetti authored
      Move the Issue16214 test in the fixedbugs_test.go file, and delete the
      now empty asm_test.go file.
      
      Change-Id: I2a0c72bd36f0359b7baf75b5d1ba647cc84feb46
      Reviewed-on: https://go-review.googlesource.com/106836
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      93f95a30
    • mbj36's avatar
      doc: improve commit messages · 1898fce1
      mbj36 authored
      Fixes #24852
      
      Change-Id: I71d0d7f75108bf4ad606733a45bb71baa66a4e91
      Reviewed-on: https://go-review.googlesource.com/107197Reviewed-by: 's avatarAlberto Donizetti <alb.donizetti@gmail.com>
      Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      1898fce1
    • bontequero's avatar
      cmd/internal/obj/x86: fix doc-comment and clarify output parameters · a5085f82
      bontequero authored
      Fixes comment style.
      Added names to return parameters to clarify what they are.
      
      Change-Id: Ib6f7f58b36981e08b63de1a4cd582ce99cfb4519
      Reviewed-on: https://go-review.googlesource.com/107235Reviewed-by: 's avatarIskander Sharipov <iskander.sharipov@intel.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a5085f82
    • quasilyte's avatar
      C: add Iskander Sharipov's individual CLA mail · 080c25c1
      quasilyte authored
      Change-Id: I2e58e20e26674175b3e35b6c8a05998a93db4646
      Reviewed-on: https://go-review.googlesource.com/107215Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      080c25c1
    • Ben Shi's avatar
      cmd/compile/internal/ssa: optimize 386's subtraction · cd65bbc0
      Ben Shi authored
      The SUBL instruction can take a memory operand, and this CL
      implements this optimization.
      
      The go1 benchmark shows a little improvement.
      
      name                     old time/op    new time/op    delta
      BinaryTree17-4              3.27s ± 2%     3.29s ± 3%    ~     (p=0.322 n=37+40)
      Fannkuch11-4                3.49s ± 0%     3.53s ± 1%  +1.21%  (p=0.000 n=31+40)
      FmtFprintfEmpty-4          46.2ns ± 3%    46.3ns ± 2%    ~     (p=0.351 n=40+28)
      FmtFprintfString-4         82.0ns ± 3%    81.5ns ± 2%  -0.69%  (p=0.002 n=40+30)
      FmtFprintfInt-4            94.6ns ± 3%    94.6ns ± 6%    ~     (p=0.913 n=39+37)
      FmtFprintfIntInt-4          147ns ± 3%     150ns ± 2%  +1.72%  (p=0.000 n=40+25)
      FmtFprintfPrefixedInt-4     186ns ± 3%     186ns ± 0%  -0.33%  (p=0.006 n=40+25)
      FmtFprintfFloat-4           388ns ± 4%     388ns ± 4%    ~     (p=0.162 n=40+40)
      FmtManyArgs-4               612ns ± 3%     616ns ± 4%    ~     (p=0.223 n=40+40)
      GobDecode-4                7.35ms ± 5%    7.42ms ± 5%    ~     (p=0.095 n=40+40)
      GobEncode-4                7.21ms ± 8%    7.23ms ± 4%    ~     (p=0.294 n=40+40)
      Gzip-4                      360ms ± 4%     359ms ± 4%    ~     (p=0.097 n=40+40)
      Gunzip-4                   46.1ms ± 3%    45.6ms ± 3%  -1.20%  (p=0.000 n=40+40)
      HTTPClientServer-4         64.0µs ± 2%    64.1µs ± 2%    ~     (p=0.648 n=39+40)
      JSONEncode-4               21.9ms ± 4%    22.1ms ± 5%    ~     (p=0.086 n=40+40)
      JSONDecode-4               67.9ms ± 4%    66.7ms ± 4%  -1.63%  (p=0.000 n=40+40)
      Mandelbrot200-4            5.19ms ± 3%    5.17ms ± 3%    ~     (p=0.881 n=40+40)
      GoParse-4                  3.34ms ± 3%    3.28ms ± 2%  -1.78%  (p=0.000 n=40+40)
      RegexpMatchEasy0_32-4       101ns ± 5%      99ns ± 3%  -2.40%  (p=0.000 n=40+40)
      RegexpMatchEasy0_1K-4       851ns ± 1%     848ns ± 3%  -0.36%  (p=0.004 n=33+40)
      RegexpMatchEasy1_32-4       109ns ± 5%     105ns ± 3%  -3.53%  (p=0.000 n=39+40)
      RegexpMatchEasy1_1K-4      1.03µs ± 4%    1.03µs ± 3%    ~     (p=0.638 n=40+38)
      RegexpMatchMedium_32-4      131ns ± 5%     127ns ± 4%  -3.36%  (p=0.000 n=38+40)
      RegexpMatchMedium_1K-4     43.4µs ± 4%    43.2µs ± 3%  -0.46%  (p=0.008 n=40+40)
      RegexpMatchHard_32-4       2.21µs ± 4%    2.23µs ± 1%  +0.77%  (p=0.014 n=40+28)
      RegexpMatchHard_1K-4       67.6µs ± 4%    67.7µs ± 3%  +0.11%  (p=0.016 n=40+40)
      Revcomp-4                   1.86s ± 3%     1.77s ± 2%  -4.81%  (p=0.000 n=40+40)
      Template-4                 71.7ms ± 3%    71.6ms ± 4%    ~     (p=0.200 n=40+40)
      TimeParse-4                 436ns ± 4%     433ns ± 3%    ~     (p=0.358 n=40+40)
      TimeFormat-4                413ns ± 4%     412ns ± 3%    ~     (p=0.415 n=40+40)
      [Geo mean]                 63.9µs         63.6µs       -0.49%
      
      name                     old speed      new speed      delta
      GobDecode-4               105MB/s ± 5%   104MB/s ± 5%    ~     (p=0.096 n=40+40)
      GobEncode-4               106MB/s ± 7%   106MB/s ± 3%    ~     (p=0.385 n=39+40)
      Gzip-4                   54.0MB/s ± 4%  54.0MB/s ± 4%    ~     (p=0.100 n=40+40)
      Gunzip-4                  421MB/s ± 3%   426MB/s ± 3%  +1.21%  (p=0.000 n=40+40)
      JSONEncode-4             88.5MB/s ± 5%  88.0MB/s ± 5%    ~     (p=0.083 n=40+40)
      JSONDecode-4             28.6MB/s ± 4%  29.1MB/s ± 4%  +1.65%  (p=0.000 n=40+40)
      GoParse-4                17.3MB/s ± 3%  17.7MB/s ± 2%  +1.82%  (p=0.000 n=40+40)
      RegexpMatchEasy0_32-4     316MB/s ± 5%   323MB/s ± 4%  +2.44%  (p=0.000 n=40+40)
      RegexpMatchEasy0_1K-4    1.20GB/s ± 1%  1.21GB/s ± 3%  +0.40%  (p=0.004 n=33+40)
      RegexpMatchEasy1_32-4     291MB/s ± 7%   302MB/s ± 4%  +3.82%  (p=0.000 n=40+40)
      RegexpMatchEasy1_1K-4     993MB/s ± 4%   990MB/s ± 3%    ~     (p=0.623 n=40+38)
      RegexpMatchMedium_32-4   7.61MB/s ± 5%  7.87MB/s ± 4%  +3.36%  (p=0.000 n=38+40)
      RegexpMatchMedium_1K-4   23.6MB/s ± 4%  23.7MB/s ± 4%  +0.46%  (p=0.007 n=40+40)
      RegexpMatchHard_32-4     14.5MB/s ± 4%  14.3MB/s ± 1%  -0.79%  (p=0.017 n=40+28)
      RegexpMatchHard_1K-4     15.1MB/s ± 4%  15.1MB/s ± 3%  -0.11%  (p=0.015 n=40+40)
      Revcomp-4                 137MB/s ± 3%   144MB/s ± 3%  +5.06%  (p=0.000 n=40+40)
      Template-4               27.1MB/s ± 3%  27.1MB/s ± 4%    ~     (p=0.211 n=40+40)
      [Geo mean]               78.9MB/s       79.7MB/s       +1.01%
      
      Change-Id: I638fa4fef85833e8605919d693f9570cc3cf7334
      Reviewed-on: https://go-review.googlesource.com/107275
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      cd65bbc0
    • Daniel Martí's avatar
      cmd/compile/internal/gc: add some Node methods · 2b2348ab
      Daniel Martí authored
      Focus on "isfoo" funcs that take a *Node, and conver them to isFoo
      methods instead. This makes for more idiomatic Go code, and also more
      readable func names.
      
      Found candidates with grep, and applied most changes with sed. The funcs
      chosen were isgoconst, isnil, and isblank. All had the same signature,
      func(*Node) bool.
      
      While at it, camelCase the isliteral and iszero function names. Don't
      move these to methods, as they are only used in the backend part of gc,
      which might one day be split into a separate package.
      
      Passes toolstash -cmp on std cmd.
      
      Change-Id: I4df081b12d36c46c253167c8841c5a841f1c5a16
      Reviewed-on: https://go-review.googlesource.com/105555
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      2b2348ab
    • Mike Samuel's avatar
      net/http: remove some stderr log spam · d6976006
      Mike Samuel authored
      This changes rawResponse to install a logger before
      Serve()ing and makes the log output available to
      tests.
      
      Updates #24831
      Updates CL 89275
      
      Change-Id: I0fb636a35b05959ca9978d5d8552f38b7cf8e8b5
      Reviewed-on: https://go-review.googlesource.com/106756Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      d6976006
  2. 15 Apr, 2018 10 commits
  3. 14 Apr, 2018 7 commits
    • Daniel Martí's avatar
      cmd/doc: skip directories like other go tools · 49e3e436
      Daniel Martí authored
      It was skipping dirs starting with ".", but it was missing the "_"
      prefix and the "testdata" name. From "go help packages":
      
      	Directory and file names that begin with "." or "_" are ignored
      	by the go tool, as are directories named "testdata".
      
      Before the change:
      
      	$ go doc z # using src/cmd/go/testdata/testvendor/src/q/z
      	package z // import "."
      
      After the fix, it falls back to the current directory, as expected when
      a single argument isn't found as a package in $GOPATH.
      
      TestMain needs a small adjustment to keep the tests working, as now
      their use of cmd/doc/testdata would normally not work.
      
      Fixes #24462.
      
      Change-Id: I1f5d6d1eba0fb59aff55db33b3b1147e300284ef
      Reviewed-on: https://go-review.googlesource.com/106935
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      49e3e436
    • Emil Hessman's avatar
      A+C: update email address · a55f9d2d
      Emil Hessman authored
      Change-Id: I67b8b501290f6e321030967a19e3cb3bb9d678c6
      Reviewed-on: https://go-review.googlesource.com/107016Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      a55f9d2d
    • Josh Bleecher Snyder's avatar
      text/tabwriter: reduce allocations from tracking cells · 9ee7662c
      Josh Bleecher Snyder authored
      The tabwriter tracks cells on a line-by-line basis.
      This can be memory-hungry when working with large input.
      
      This change adds two optimizations.
      
      First, when there's an existing cell slice for a line,
      don't overwrite it by appending.
      This helps when re-using a Writer,
      or when the output is broken into groups,
      e.g. by a blank line.
      We now re-use that existing cell slice.
      
      Second, we predict that the number of cells in a line
      will probably match those of the previous line,
      since tabwriter is most often used to format tables.
      
      This has a noticeable impact on cmd/objdump (#24725).
      It reduces allocated space by about 55%.
      It also speeds it up some.
      Using "benchcmd -n 10 Objdump go tool objdump `which go`":
      
      name            old time/op       new time/op       delta
      ObjdumpCompile        9.03s ± 1%        8.51s ± 1%  -5.81%  (p=0.000 n=10+10)
      
      It might also imaginably speed up gofmt on some
      large machine-generated code.
      
      name                old time/op    new time/op    delta
      Table/1x10/new-8            2.89µs ± 1%    2.39µs ± 1%   -17.39%  (p=0.000 n=13+14)
      Table/1x10/reuse-8          2.13µs ± 1%    1.29µs ± 2%   -39.58%  (p=0.000 n=14+15)
      Table/1x1000/new-8           203µs ± 0%     147µs ± 1%   -27.45%  (p=0.000 n=13+14)
      Table/1x1000/reuse-8         194µs ± 1%     113µs ± 2%   -42.01%  (p=0.000 n=14+15)
      Table/1x100000/new-8        33.1ms ± 1%    27.5ms ± 2%   -17.08%  (p=0.000 n=15+15)
      Table/1x100000/reuse-8      22.0ms ± 3%    11.8ms ± 1%   -46.23%  (p=0.000 n=14+12)
      Table/10x10/new-8           8.51µs ± 0%    6.52µs ± 1%   -23.48%  (p=0.000 n=13+15)
      Table/10x10/reuse-8         7.41µs ± 0%    4.59µs ± 3%   -38.03%  (p=0.000 n=14+15)
      Table/10x1000/new-8          749µs ± 0%     521µs ± 1%   -30.39%  (p=0.000 n=12+15)
      Table/10x1000/reuse-8        732µs ± 1%     448µs ± 2%   -38.79%  (p=0.000 n=15+14)
      Table/10x100000/new-8        102ms ± 2%      74ms ± 2%   -28.05%  (p=0.000 n=14+15)
      Table/10x100000/reuse-8     96.2ms ± 4%    55.4ms ± 3%   -42.36%  (p=0.000 n=15+15)
      Table/100x10/new-8          50.3µs ± 1%    43.3µs ± 1%   -13.87%  (p=0.000 n=14+15)
      Table/100x10/reuse-8        47.6µs ± 1%    36.1µs ± 1%   -24.09%  (p=0.000 n=14+14)
      Table/100x1000/new-8        5.17ms ± 1%    4.11ms ± 1%   -20.40%  (p=0.000 n=14+13)
      Table/100x1000/reuse-8      5.00ms ± 1%    3.73ms ± 1%   -25.46%  (p=0.000 n=14+14)
      Table/100x100000/new-8       654ms ± 2%     531ms ± 2%   -18.86%  (p=0.000 n=13+14)
      Table/100x100000/reuse-8     709ms ± 1%     505ms ± 2%   -28.77%  (p=0.000 n=12+15)
      Pyramid/10-8                4.22µs ± 1%    4.21µs ± 1%      ~     (p=0.067 n=14+14)
      Pyramid/100-8                378µs ± 0%     378µs ± 0%    +0.17%  (p=0.022 n=13+13)
      Pyramid/1000-8               133ms ± 3%     132ms ± 3%      ~     (p=0.148 n=15+15)
      Ragged/10-8                 6.10µs ± 0%    5.16µs ± 0%   -15.38%  (p=0.000 n=14+15)
      Ragged/100-8                54.5µs ± 0%    43.8µs ± 0%   -19.59%  (p=0.000 n=14+15)
      Ragged/1000-8                532µs ± 0%     424µs ± 0%   -20.25%  (p=0.000 n=14+14)
      
      name                old alloc/op   new alloc/op   delta
      Table/1x10/new-8            1.76kB ± 0%    1.52kB ± 0%   -13.64%  (p=0.000 n=15+15)
      Table/1x10/reuse-8            800B ± 0%        0B       -100.00%  (p=0.000 n=15+15)
      Table/1x1000/new-8           131kB ± 0%      99kB ± 0%   -24.30%  (p=0.000 n=15+15)
      Table/1x1000/reuse-8        80.0kB ± 0%     0.0kB ± 0%   -99.99%  (p=0.000 n=15+15)
      Table/1x100000/new-8        23.1MB ± 0%    19.9MB ± 0%   -13.85%  (p=0.000 n=15+15)
      Table/1x100000/reuse-8      8.30MB ± 0%    0.20MB ± 0%   -97.60%  (p=0.000 n=13+12)
      Table/10x10/new-8           8.94kB ± 0%    5.06kB ± 0%   -43.47%  (p=0.000 n=15+15)
      Table/10x10/reuse-8         7.52kB ± 0%    0.00kB       -100.00%  (p=0.000 n=15+15)
      Table/10x1000/new-8          850kB ± 0%     387kB ± 0%   -54.50%  (p=0.000 n=13+15)
      Table/10x1000/reuse-8        752kB ± 0%       0kB ± 0%   -99.98%  (p=0.000 n=13+15)
      Table/10x100000/new-8       95.7MB ± 0%    49.3MB ± 0%   -48.50%  (p=0.000 n=14+15)
      Table/10x100000/reuse-8     76.2MB ± 0%     2.5MB ± 0%   -96.77%  (p=0.000 n=13+15)
      Table/100x10/new-8          66.3kB ± 0%    38.0kB ± 0%   -42.65%  (p=0.000 n=15+15)
      Table/100x10/reuse-8        61.3kB ± 0%     0.0kB       -100.00%  (p=0.000 n=15+15)
      Table/100x1000/new-8        6.69MB ± 0%    3.25MB ± 0%   -51.37%  (p=0.000 n=15+15)
      Table/100x1000/reuse-8      6.13MB ± 0%    0.01MB ± 0%   -99.89%  (p=0.000 n=15+15)
      Table/100x100000/new-8       684MB ± 0%     340MB ± 0%   -50.29%  (p=0.000 n=14+15)
      Table/100x100000/reuse-8     648MB ± 0%     170MB ± 0%   -73.78%  (p=0.000 n=14+13)
      Pyramid/10-8                4.40kB ± 0%    4.40kB ± 0%      ~     (all equal)
      Pyramid/100-8                652kB ± 0%     652kB ± 0%      ~     (p=0.715 n=15+15)
      Pyramid/1000-8              96.7MB ± 0%    96.7MB ± 0%      ~     (p=0.084 n=15+14)
      Ragged/10-8                 5.17kB ± 0%    4.51kB ± 0%   -12.69%  (p=0.000 n=15+15)
      Ragged/100-8                50.2kB ± 0%    41.1kB ± 0%   -18.04%  (p=0.000 n=15+15)
      Ragged/1000-8                492kB ± 0%     401kB ± 0%   -18.61%  (p=0.000 n=15+15)
      
      name                old allocs/op  new allocs/op  delta
      Table/1x10/new-8              29.0 ± 0%      21.0 ± 0%   -27.59%  (p=0.000 n=15+15)
      Table/1x10/reuse-8            20.0 ± 0%       0.0       -100.00%  (p=0.000 n=15+15)
      Table/1x1000/new-8           2.02k ± 0%     1.02k ± 0%   -49.38%  (p=0.000 n=15+15)
      Table/1x1000/reuse-8         2.00k ± 0%     0.00k       -100.00%  (p=0.000 n=15+15)
      Table/1x100000/new-8          200k ± 0%      100k ± 0%   -49.98%  (p=0.000 n=15+15)
      Table/1x100000/reuse-8        200k ± 0%        1k ± 0%   -99.50%  (p=0.000 n=14+15)
      Table/10x10/new-8             66.0 ± 0%      31.0 ± 0%   -53.03%  (p=0.000 n=15+15)
      Table/10x10/reuse-8           50.0 ± 0%       0.0       -100.00%  (p=0.000 n=15+15)
      Table/10x1000/new-8          5.03k ± 0%     1.04k ± 0%   -79.36%  (p=0.000 n=15+15)
      Table/10x1000/reuse-8        5.00k ± 0%     0.00k       -100.00%  (p=0.000 n=15+15)
      Table/10x100000/new-8         500k ± 0%      100k ± 0%   -79.99%  (p=0.000 n=15+15)
      Table/10x100000/reuse-8       500k ± 0%        5k ± 0%   -99.00%  (p=0.000 n=15+15)
      Table/100x10/new-8             102 ± 0%        40 ± 0%   -60.78%  (p=0.000 n=15+15)
      Table/100x10/reuse-8          80.0 ± 0%       0.0       -100.00%  (p=0.000 n=15+15)
      Table/100x1000/new-8         8.04k ± 0%     1.05k ± 0%   -86.91%  (p=0.000 n=15+15)
      Table/100x1000/reuse-8       8.00k ± 0%     0.00k ± 0%   -99.98%  (p=0.000 n=15+15)
      Table/100x100000/new-8        800k ± 0%      100k ± 0%   -87.49%  (p=0.000 n=15+12)
      Table/100x100000/reuse-8      800k ± 0%       50k ± 0%   -93.74%  (p=0.000 n=14+13)
      Pyramid/10-8                  20.0 ± 0%      20.0 ± 0%      ~     (all equal)
      Pyramid/100-8                 50.0 ± 0%      50.0 ± 0%      ~     (all equal)
      Pyramid/1000-8                 109 ± 0%       109 ± 0%      ~     (all equal)
      Ragged/10-8                   54.0 ± 0%      34.0 ± 0%   -37.04%  (p=0.000 n=15+15)
      Ragged/100-8                   422 ± 0%       188 ± 0%   -55.45%  (p=0.000 n=15+15)
      Ragged/1000-8                4.03k ± 0%     1.66k ± 0%   -58.80%  (p=0.000 n=15+15)
      
      Change-Id: I0c0a392b02d5148a0a4b8ad4eaf98fa343980962
      Reviewed-on: https://go-review.googlesource.com/106979
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9ee7662c
    • Josh Bleecher Snyder's avatar
      net: use retry in TestLookupGmailNS · 77faa652
      Josh Bleecher Snyder authored
      There are two flakes present on the dashboard for this test.
      
      Change-Id: I4abec972586314fbafe7db5760b91afd7ae47fd3
      Reviewed-on: https://go-review.googlesource.com/106980
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      77faa652
    • Aman Gupta's avatar
      net: implement (*syscall.RawConn).Read/Write on Windows · d2c7dec1
      Aman Gupta authored
      RawRead assumes the callback will perform either (a) a blocking read
      and always return true, (b) a blocking read with a SO_RCVTIMEO set
      returning false on WSAETIMEDOUT, or (c) a non-blocking read
      returning false on WSAEWOULDBLOCK. In the latter two cases, it uses
      a 0-byte overlapped read for notifications from the IOCP runtime
      when the socket becomes readable before trying again.
      
      RawWrite assumes the callback will perform blocking write and will
      always return true, and makes no effort to tie into the runtime loop.
      
      Change-Id: Ib10074e9d502c040294f41a260e561e84208652f
      Reviewed-on: https://go-review.googlesource.com/76391
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlex Brainman <alex.brainman@gmail.com>
      d2c7dec1
    • Alex Brainman's avatar
      cmd/internal/obj/arm64: do not clear environment in TestLarge and TestNoRet · 11309ba0
      Alex Brainman authored
      Windows process cannot run properly, if it only has
      GOOS and GOARCH environment variables set. It needs
      other environment variables. So adjust TestLarge and
      TestNoRet to add GOOS and GOARCH to the existing
      variables set instead of clearing environment.
      
      Fixes #24855
      
      Change-Id: I9fd9430d89031c3bacdbc6283450efaa4819e616
      Reviewed-on: https://go-review.googlesource.com/107035
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      11309ba0
    • Alex Brainman's avatar
      syscall: remove WSAEMSGSIZE · 73ab594c
      Alex Brainman authored
      CL 92475 added WSAEMSGSIZE const to syscall package. But there
      is already copy of WSAEMSGSIZE in internal/syscall/windows.
      So delete syscall.WSAEMSGSIZE
      
      Change-Id: I0b81fa5dcf846887a0cb27d8bbd7e250860627b5
      Reviewed-on: https://go-review.googlesource.com/106956
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      73ab594c
  4. 13 Apr, 2018 9 commits
    • Josh Bleecher Snyder's avatar
      cmd/internal/objfile: reuse tabwriter across symbols when disassembling · 9137edc9
      Josh Bleecher Snyder authored
      Since the tabwriter is flushed at every symbol,
      it can be re-used with no impact on the output.
      
      This cuts allocated space when objdump-ing
      the compiler by almost 40%,
      and enables further upcoming improvements.
      
      It also speeds up objdump.
      
      name            old time/op       new time/op       delta
      ObjdumpCompile        9.22s ± 3%        8.77s ± 3%   -4.79%  (p=0.000 n=10+9)
      
      Change-Id: Ief114d6c2680a4e762b5f439d3ca8dc7a89b9b27
      Reviewed-on: https://go-review.googlesource.com/106978
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9137edc9
    • Ilya Tocar's avatar
      cmd/compile/internal/ssa: prefer non-indexed stores on amd64 · 983fca55
      Ilya Tocar authored
      We sometimes generate code like this:
      
      v473 = MOVQconst <uintptr> // constant..
      v580 = MOVBstoreidx1 <mem> v1056 v473 v819 v491 // ..only used as an index
      
      Rewrite indexed stores to non-indexed version, where possible.
      This allows to eliminate  const->register move, reducing codesize and lowering register pressure.
      
      Change-Id: Id5fed801dffe3f1a80876b8d8bd43775a7c942b2
      Reviewed-on: https://go-review.googlesource.com/105295
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      983fca55
    • Ilya Tocar's avatar
      runtime: avoid division in growslice · e53cc7ae
      Ilya Tocar authored
      Add a special case for power-of-2 sized elements.
      We can replace div/mul with left/right shift and avoid expensive operation.
      growslice is hotter for short slices of small elements, such as int16, so
      add an int16 version for GrowSlice benchmark.
      
      name                   old time/op  new time/op  delta
      GrowSlice/Byte-6       61.3ns ± 3%  60.5ns ± 4%  -1.33%  (p=0.002 n=30+30)
      GrowSlice/Int16-6      94.0ns ± 4%  84.7ns ± 2%  -9.82%  (p=0.000 n=30+30)
      GrowSlice/Int-6         100ns ± 1%    99ns ± 1%  -0.25%  (p=0.032 n=29+28)
      GrowSlice/Ptr-6         197ns ± 2%   195ns ± 2%  -0.94%  (p=0.001 n=30+29)
      GrowSlice/Struct/24-6   168ns ± 1%   166ns ± 2%  -1.09%  (p=0.000 n=25+30)
      GrowSlice/Struct/32-6   187ns ± 2%   180ns ± 1%  -3.59%  (p=0.000 n=30+30)
      GrowSlice/Struct/40-6   241ns ± 2%   238ns ± 2%  -1.41%  (p=0.000 n=30+30)
      
      Change-Id: I31e8388d73fd9356e2dcc091d8d92eef3e3ccdbc
      Reviewed-on: https://go-review.googlesource.com/102279
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      e53cc7ae
    • Richard Musiol's avatar
      time: add wasm architecture · 70d83eda
      Richard Musiol authored
      This commit adds the wasm architecture to the time package.
      
      Updates #18892
      
      Change-Id: I86841e096894eacf7f972add9a532491e4d00014
      Reviewed-on: https://go-review.googlesource.com/106997
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      70d83eda
    • Eric Daniels's avatar
      runtime/traceback: support tracking goroutine ancestor tracebacks with… · d9b006a7
      Eric Daniels authored
      runtime/traceback: support tracking goroutine ancestor tracebacks with GODEBUG="tracebackancestors=N"
      
      Currently, collecting a stack trace via runtime.Stack captures the stack for the
      immediately running goroutines. This change extends those tracebacks to include
      the tracebacks of their ancestors. This is done with a low memory cost and only
      utilized when debug option tracebackancestors is set to a value greater than 0.
      
      Resolves #22289
      
      Change-Id: I7edacc62b2ee3bd278600c4a21052c351f313f3a
      Reviewed-on: https://go-review.googlesource.com/70993
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      d9b006a7
    • Richard Musiol's avatar
      mime: add wasm architecture · 115b1cd1
      Richard Musiol authored
      This commit adds the wasm architecture to the mime package.
      
      Updates #18892
      
      Change-Id: I0481057bd52e39d84b3d6f5140335e293eff38f3
      Reviewed-on: https://go-review.googlesource.com/106998Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      115b1cd1
    • Josh Bleecher Snyder's avatar
      debug/gosym: intern LineTable strings · e511f153
      Josh Bleecher Snyder authored
      This cuts the allocated space while executing
      
      go tool objdump -S `go tool -n compile`
      
      by over 10%.
      
      It also speeds it up slightly:
      
      name              old time/op       new time/op       delta
      ObjdumpSCompiler        9.03s ± 1%        8.88s ± 1%  -1.59%  (p=0.000 n=20+20)
      
      Updates #24725
      
      Change-Id: Ic6ef8e273ede589334ab6e07099ac2e5bdf990c9
      Reviewed-on: https://go-review.googlesource.com/106798
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      e511f153
    • Jeremy Jackins's avatar
      encoding/json: make use of encodeStatePool in Marshal · c0547476
      Jeremy Jackins authored
      On my system, this seems to be a significant win, with a major
      reduction in allocations and minor speed improvement.
      
      name           old time/op    new time/op    delta
      CodeMarshal      9.75ms ± 3%    9.24ms ± 1%   -5.21%  (p=0.001 n=5+10)
      CodeMarshal-4    4.98ms ± 1%    4.71ms ± 1%   -5.44%  (p=0.001 n=5+10)
      CodeMarshal-8    4.80ms ± 0%    4.77ms ± 1%   -0.70%  (p=0.012 n=5+9)
      
      name           old speed      new speed      delta
      CodeMarshal     199MB/s ± 3%   210MB/s ± 1%   +5.46%  (p=0.001 n=5+10)
      CodeMarshal-4   390MB/s ± 1%   412MB/s ± 1%   +5.76%  (p=0.001 n=5+10)
      CodeMarshal-8   404MB/s ± 0%   407MB/s ± 1%   +0.70%  (p=0.012 n=5+9)
      
      name           old alloc/op   new alloc/op   delta
      CodeMarshal      4.59MB ± 0%    1.96MB ± 0%  -57.22%  (p=0.000 n=5+9)
      CodeMarshal-4    4.59MB ± 0%    2.00MB ± 0%  -56.39%  (p=0.000 n=5+8)
      CodeMarshal-8    4.59MB ± 0%    2.06MB ± 0%  -55.05%  (p=0.001 n=5+9)
      
      name           old allocs/op  new allocs/op  delta
      CodeMarshal        16.0 ± 0%       1.0 ± 0%  -93.75%  (p=0.000 n=5+10)
      CodeMarshal-4      16.0 ± 0%       1.0 ± 0%  -93.75%  (p=0.000 n=5+10)
      CodeMarshal-8      16.0 ± 0%       1.0 ± 0%  -93.75%  (p=0.000 n=5+10)
      
      Change-Id: I9d09850d8227f523f861ae1b4ca248c4a4b16aaf
      Reviewed-on: https://go-review.googlesource.com/84897Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c0547476
    • Sebastien Binet's avatar
      os/user: fix build with "osusergo" build tag · 98dfd400
      Sebastien Binet authored
      Fixes #24841
      Updates #24845
      
      Change-Id: I4a5c05f4cbf9692bd6cab48baf3cc51fa43fe5a9
      Reviewed-on: https://go-review.googlesource.com/106837Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      98dfd400