1. 17 Apr, 2018 1 commit
  2. 16 Apr, 2018 19 commits
  3. 15 Apr, 2018 10 commits
  4. 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: default 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: default 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: default 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: default 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: default 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: default 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: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      73ab594c
  5. 13 Apr, 2018 3 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: default 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: default 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: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      e53cc7ae