1. 25 Apr, 2017 19 commits
    • Josh Bleecher Snyder's avatar
      go/internal/gcimporter: add test object files for go1.8 versions 4 and 5 · b692e749
      Josh Bleecher Snyder authored
      Version 4 generated with toolchain at commit 51012314.
      Version 5 generated with toolchain at commit a6b16e00.
      
      Change-Id: If11ec8b3357f0f71776c15665e4d5228b3842ff7
      Reviewed-on: https://go-review.googlesource.com/41710
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b692e749
    • Josh Bleecher Snyder's avatar
      cmd/compile: improve efficiency of binary export position encoding · a6b16e00
      Josh Bleecher Snyder authored
      Use -64 instead of 0 as the magic "new file"
      line delta, since it is much less common.
      
      Use a new path encoding that breaks up paths
      into /-separated components, allowing
      reuse of the component strings, and making
      many re-used paths a single byte to encode.
      
      Bump the export version to 5.
      
      Fixes #20080
      
      name        old export-bytes  new export-bytes  delta
      Template          19.1k ± 0%        17.4k ± 0%  -8.74%  (p=0.008 n=5+5)
      Unicode           4.47k ± 0%        4.42k ± 0%  -0.96%  (p=0.008 n=5+5)
      GoTypes           29.9k ± 0%        27.6k ± 0%  -7.41%  (p=0.008 n=5+5)
      Compiler          71.4k ± 0%        65.4k ± 0%  -8.45%  (p=0.008 n=5+5)
      SSA               67.8k ± 0%        65.6k ± 0%  -3.38%  (p=0.008 n=5+5)
      Flate             4.99k ± 0%        4.79k ± 0%  -3.91%  (p=0.008 n=5+5)
      GoParser          8.77k ± 0%        7.97k ± 0%  -9.14%  (p=0.008 n=5+5)
      Reflect           6.27k ± 0%        6.13k ± 0%  -2.22%  (p=0.008 n=5+5)
      Tar               9.46k ± 0%        8.82k ± 0%  -6.69%  (p=0.008 n=5+5)
      XML               16.0k ± 0%        14.9k ± 0%  -6.69%  (p=0.008 n=5+5)
      [Geo mean]        14.8k             14.0k       -5.80%
      
      Change-Id: Iea0c8c62e61dbab3cfd14ee121e34845c85f00d2
      Reviewed-on: https://go-review.googlesource.com/41619
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      a6b16e00
    • griesemer's avatar
      cmd/compile: factor out access to thisT · 51012314
      griesemer authored
      isifacemethod accessed thisT without checking if it was initialized,
      opening the possibility for a bug during type checking. Give better
      name, move it to package types, and provide accessor instead.
      
      Change-Id: I29ffc408252a4ba4ef1de218fa154397786c9be6
      Reviewed-on: https://go-review.googlesource.com/41673Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      51012314
    • Damien Lespiau's avatar
      cmd/internal/obj/x86: port the doasm comment to go · 4e5593dd
      Damien Lespiau authored
      This comment is very useful but still refers to the C implementation.
      Adapting it for Go is fairly straightforward though.
      
      Change-Id: Ib6dde25f3a18acbce76bb3cffdc29f5ccf43c1f7
      Reviewed-on: https://go-review.googlesource.com/41696Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      4e5593dd
    • Michael Munday's avatar
      cmd: fix the order that s390x operands are printed in · db6f3bbc
      Michael Munday authored
      The assembler reordered the operands of some instructions to put the
      first operand into From3. Unfortunately this meant that when the
      instructions were printed the operands were in a different order than
      the assembler would expect as input. For example, 'MVC $8, (R1), (R2)'
      would be printed as 'MVC (R1), $8, (R2)'.
      
      Originally this was done to ensure that From contained the source
      memory operand. The current compiler no longer requires this and so
      this CL simply makes all instructions use the standard order for
      operands: From, Reg, From3 and finally To.
      
      Fixes #18295
      
      Change-Id: Ib2b5ec29c647ca7a995eb03dc78f82d99618b092
      Reviewed-on: https://go-review.googlesource.com/40299
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      db6f3bbc
    • Daniel Martí's avatar
      regexp: remove redundant break · 7d547b64
      Daniel Martí authored
      Breaks are implicit, and since there is no outer loop this one could not
      mean a loop break that was missing a label.
      
      Change-Id: Ie91018db1825aa8285c1aa55c9d28fc7ec7148af
      Reviewed-on: https://go-review.googlesource.com/39691
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      7d547b64
    • Daniel Martí's avatar
      all: remove some unused parameters in test code · 516e6f6d
      Daniel Martí authored
      Mostly unnecessary *testing.T arguments.
      
      Found with github.com/mvdan/unparam.
      
      Change-Id: Ifb955cb88f2ce8784ee4172f4f94d860fa36ae9a
      Reviewed-on: https://go-review.googlesource.com/41691
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      516e6f6d
    • Ian Lance Taylor's avatar
      os: fix race between file I/O and Close · 11c7b449
      Ian Lance Taylor authored
      Now that the os package uses internal/poll on Unix and Windows systems,
      it can rely on internal/poll reference counting to ensure that the
      file descriptor is not closed until all I/O is complete.
      
      That was already working. This CL completes the job by not trying to
      modify the Sysfd field when it might still be used by the I/O routines.
      
      Fixes #7970
      
      Change-Id: I7a3daa1a6b07b7345bdce6f0cd7164bd4eaee952
      Reviewed-on: https://go-review.googlesource.com/41674Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      11c7b449
    • Carlos Eduardo Seo's avatar
      math/big: improve performance for addVV/subVV for ppc64x · 9459c03b
      Carlos Eduardo Seo authored
      This change adds a better asm implementation of addVV for ppc64x, with speedups
      up to nearly 3x in the best cases.
      
      benchmark                   old ns/op     new ns/op     delta
      BenchmarkAddVV/1-8          7.33          5.81          -20.74%
      BenchmarkAddVV/2-8          8.72          6.49          -25.57%
      BenchmarkAddVV/3-8          10.5          7.08          -32.57%
      BenchmarkAddVV/4-8          12.7          7.57          -40.39%
      BenchmarkAddVV/5-8          14.3          8.06          -43.64%
      BenchmarkAddVV/10-8         27.6          11.1          -59.78%
      BenchmarkAddVV/100-8        218           82.4          -62.20%
      BenchmarkAddVV/1000-8       2064          718           -65.21%
      BenchmarkAddVV/10000-8      20536         7153          -65.17%
      BenchmarkAddVV/100000-8     211004        72403         -65.69%
      
      benchmark                   old MB/s     new MB/s     speedup
      BenchmarkAddVV/1-8          8729.74      11006.26     1.26x
      BenchmarkAddVV/2-8          14683.65     19707.55     1.34x
      BenchmarkAddVV/3-8          18226.96     27103.63     1.49x
      BenchmarkAddVV/4-8          20204.50     33805.81     1.67x
      BenchmarkAddVV/5-8          22348.64     39694.06     1.78x
      BenchmarkAddVV/10-8         23212.74     57631.08     2.48x
      BenchmarkAddVV/100-8        29300.07     77629.53     2.65x
      BenchmarkAddVV/1000-8       31000.56     89094.54     2.87x
      BenchmarkAddVV/10000-8      31163.61     89469.16     2.87x
      BenchmarkAddVV/100000-8     30331.16     88393.73     2.91x
      
      It also adds the use of CTR for the loop counter in subVV, instead of
      manually updating the loop counter. This is slightly faster.
      
      Change-Id: Ic4b05cad384fd057972d46a5618ed5c3039d7460
      Reviewed-on: https://go-review.googlesource.com/41010
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarLynn Boger <laboger@linux.vnet.ibm.com>
      9459c03b
    • Ben Shi's avatar
      cmd/internal/obj/arm: use new form of MOVW introduced in ARMv7 · a0418063
      Ben Shi authored
      As discussion in issue #18293, "MOVW $Imm-16, Reg" was introduced in
      ARMv7. It directly encoded the 16-bit immediate into the instruction
      instead of put it in the constant pool.
      
      This patch makes the arm assembler choose this form of MOVW if available.
      
      Besides 4 bytes are saved in the constant pool, the go1 benchmark test
      also shows a slight improvement.
      
      name                     old time/op    new time/op    delta
      BinaryTree17-4              42.7s ± 1%     42.7s ± 1%    ~     (p=0.304 n=50+50)
      Fannkuch11-4                24.8s ± 1%     24.8s ± 0%    ~     (p=0.757 n=50+49)
      FmtFprintfEmpty-4           875ns ± 1%     873ns ± 2%    ~     (p=0.066 n=44+46)
      FmtFprintfString-4         1.43µs ± 1%    1.45µs ± 1%  +1.68%  (p=0.000 n=44+44)
      FmtFprintfInt-4            1.52µs ± 1%    1.52µs ± 1%  +0.26%  (p=0.009 n=41+45)
      FmtFprintfIntInt-4         2.19µs ± 1%    2.20µs ± 1%  +0.76%  (p=0.000 n=43+46)
      FmtFprintfPrefixedInt-4    2.56µs ± 2%    2.53µs ± 1%  -1.03%  (p=0.000 n=45+44)
      FmtFprintfFloat-4          4.41µs ± 1%    4.39µs ± 1%  -0.52%  (p=0.000 n=44+44)
      FmtManyArgs-4              9.02µs ± 2%    9.04µs ± 1%  +0.27%  (p=0.000 n=46+44)
      GobDecode-4                 106ms ± 1%     106ms ± 1%    ~     (p=0.310 n=45+43)
      GobEncode-4                88.1ms ± 2%    88.0ms ± 2%    ~     (p=0.648 n=49+50)
      Gzip-4                      4.31s ± 1%     4.27s ± 1%  -1.01%  (p=0.000 n=50+50)
      Gunzip-4                    618ms ± 1%     608ms ± 1%  -1.65%  (p=0.000 n=45+47)
      HTTPClientServer-4          689µs ± 6%     692µs ± 4%  +0.52%  (p=0.038 n=50+47)
      JSONEncode-4                282ms ± 2%     280ms ± 1%  -0.75%  (p=0.000 n=46+43)
      JSONDecode-4                945ms ± 2%     940ms ± 1%  -0.47%  (p=0.000 n=47+47)
      Mandelbrot200-4            49.4ms ± 1%    49.3ms ± 1%    ~     (p=0.163 n=45+45)
      GoParse-4                  46.0ms ± 3%    45.5ms ± 2%  -0.95%  (p=0.000 n=49+40)
      RegexpMatchEasy0_32-4      1.29µs ± 1%    1.28µs ± 1%  -0.14%  (p=0.005 n=38+45)
      RegexpMatchEasy0_1K-4      7.92µs ± 8%    7.75µs ± 6%  -2.12%  (p=0.000 n=47+50)
      RegexpMatchEasy1_32-4      1.31µs ± 1%    1.31µs ± 0%    ~     (p=0.282 n=45+48)
      RegexpMatchEasy1_1K-4      10.4µs ± 5%    10.4µs ± 3%    ~     (p=0.771 n=50+49)
      RegexpMatchMedium_32-4     2.06µs ± 1%    2.07µs ± 1%  +0.35%  (p=0.001 n=44+49)
      RegexpMatchMedium_1K-4      533µs ± 1%     532µs ± 1%    ~     (p=0.710 n=43+47)
      RegexpMatchHard_32-4       29.7µs ± 1%    29.6µs ± 1%  -0.34%  (p=0.002 n=43+46)
      RegexpMatchHard_1K-4        893µs ± 2%     885µs ± 1%  -0.85%  (p=0.000 n=50+45)
      Revcomp-4                  85.6ms ± 4%    85.5ms ± 2%    ~     (p=0.683 n=50+50)
      Template-4                  1.05s ± 3%     1.04s ± 1%  -1.06%  (p=0.000 n=50+44)
      TimeParse-4                7.19µs ± 2%    7.11µs ± 2%  -1.10%  (p=0.000 n=48+46)
      TimeFormat-4               13.4µs ± 1%    13.5µs ± 1%    ~     (p=0.056 n=46+49)
      [Geo mean]                  747µs          745µs       -0.28%
      
      name                     old speed      new speed      delta
      GobDecode-4              7.23MB/s ± 1%  7.22MB/s ± 1%    ~     (p=0.062 n=45+39)
      GobEncode-4              8.71MB/s ± 2%  8.72MB/s ± 2%    ~     (p=0.656 n=49+50)
      Gzip-4                   4.50MB/s ± 1%  4.55MB/s ± 1%  +1.03%  (p=0.000 n=50+50)
      Gunzip-4                 31.4MB/s ± 1%  31.9MB/s ± 1%  +1.67%  (p=0.000 n=45+47)
      JSONEncode-4             6.89MB/s ± 2%  6.94MB/s ± 1%  +0.76%  (p=0.000 n=46+43)
      JSONDecode-4             2.05MB/s ± 2%  2.06MB/s ± 2%  +0.32%  (p=0.017 n=47+50)
      GoParse-4                1.26MB/s ± 3%  1.27MB/s ± 1%  +0.68%  (p=0.000 n=50+48)
      RegexpMatchEasy0_32-4    24.9MB/s ± 1%  24.9MB/s ± 1%  +0.13%  (p=0.004 n=38+45)
      RegexpMatchEasy0_1K-4     129MB/s ± 7%   132MB/s ± 6%  +2.34%  (p=0.000 n=46+50)
      RegexpMatchEasy1_32-4    24.5MB/s ± 1%  24.4MB/s ± 1%    ~     (p=0.252 n=45+48)
      RegexpMatchEasy1_1K-4    98.8MB/s ± 4%  98.7MB/s ± 3%    ~     (p=0.771 n=50+49)
      RegexpMatchMedium_32-4    485kB/s ± 3%   480kB/s ± 0%  -0.95%  (p=0.000 n=50+38)
      RegexpMatchMedium_1K-4   1.92MB/s ± 1%  1.92MB/s ± 1%    ~     (p=0.129 n=43+47)
      RegexpMatchHard_32-4     1.08MB/s ± 2%  1.08MB/s ± 1%  +0.38%  (p=0.017 n=46+46)
      RegexpMatchHard_1K-4     1.15MB/s ± 2%  1.16MB/s ± 1%  +0.67%  (p=0.001 n=50+49)
      Revcomp-4                29.7MB/s ± 4%  29.7MB/s ± 2%    ~     (p=0.682 n=50+50)
      Template-4               1.85MB/s ± 3%  1.87MB/s ± 1%  +1.04%  (p=0.000 n=50+44)
      [Geo mean]               6.56MB/s       6.60MB/s       +0.47%
      
      
      Change-Id: Ic2cca90133c27a08d9f1a23c65b0eed5fbd02684
      Reviewed-on: https://go-review.googlesource.com/41190
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      a0418063
    • Brad Fitzpatrick's avatar
      runtime: ignore TestCgoPprofPIE test failures on Alpine (take 2) · 34ee8ec1
      Brad Fitzpatrick authored
      s/arm64/amd64/ in previous typo CL 41628
      
      Updates #19938
      Updates #18243
      
      Change-Id: I282244ee3c94535f229a87b6246382385ff64428
      Reviewed-on: https://go-review.googlesource.com/41675Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      34ee8ec1
    • Martin Möhrmann's avatar
      runtime: simplify detection of preference to use AVX memmove · b64e8178
      Martin Möhrmann authored
      Reduces cmd/go by 4464 bytes on amd64.
      
      Removes the duplicate detection of AVX support and
      presence of Intel processors.
      
      Change-Id: I4670189951a63760fae217708f68d65e94a30dc5
      Reviewed-on: https://go-review.googlesource.com/41570Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      b64e8178
    • Brad Fitzpatrick's avatar
      runtime: ignore TestCgoPprofPIE test failures on Alpine · 16271b8b
      Brad Fitzpatrick authored
      Updates #19938
      Updates #18243
      
      Change-Id: Ib6e704c0a5d596bdfaa6493902d2528bec55bf16
      Reviewed-on: https://go-review.googlesource.com/41628Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      16271b8b
    • Evgeniy Polyakov's avatar
      runtime: make time correctly update on Wine · 9f98e498
      Evgeniy Polyakov authored
      Implemented low-level time system for windows on hardware (software),
      which does not support memory mapped _KSYSTEM_TIME page update.
      
      In particular this problem exists on Wine where _KSYSTEM_TIME
      only contains time at the start, and is never modified.
      
      On start we try to detect Wine and if it's so we fallback to
      GetSystemTimeAsFileTime() for current time and a monotonic
      timer based on QueryPerformanceCounter family of syscalls:
      https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx
      
      Fixes #18537
      
      Change-Id: I269d22467ed9b0afb62056974d23e731b80c83ed
      Reviewed-on: https://go-review.googlesource.com/35710Reviewed-by: default avatarAlex Brainman <alex.brainman@gmail.com>
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      9f98e498
    • Ian Lance Taylor's avatar
      internal/poll: don't use r/w lock for Pread/Pwrite · b0472e22
      Ian Lance Taylor authored
      Since Pread/Pwrite specify a file offset, using incref is sufficient.
      This permits multiple Pread/Pwrite calls in parallel.
      
      Since Pread/Pwrite specify a file offset, it doesn't seem to make
      sense to use the poller for them, so don't.
      
      Updates #19586
      
      Change-Id: I676be16bf519b9a45f8e6b1d991c44f10848bc11
      Reviewed-on: https://go-review.googlesource.com/41670
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b0472e22
    • Brad Fitzpatrick's avatar
      cmd/go: fix TestCgoConsistentResults when using clang instead of gcc · 8ae60dc1
      Brad Fitzpatrick authored
      As Ian said at:
      https://github.com/golang/go/issues/19964#issuecomment-296347750
      
      > the -fdebug-prefix-map option is being applied to the debug info but
      > not to the initial .file pseudo-op.
      >
      > My only current thought for how to fix this is that instead of
      > compiling $WORK/a/b/foo.c, we should change the command to (cd
      > $WORK/a/b && clang -g -c foo.c). We'll still want
      > -fdebug-prefix-map, I think, but that should fix the .file
      > pseudo-op.
      
      This CL does that.
      
      Fixes #19964
      
      Change-Id: I442b1201cab9e0448fc520ab243ad364d59cd7c3
      Reviewed-on: https://go-review.googlesource.com/41629
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      8ae60dc1
    • Hiroshi Ioka's avatar
      os: don't use a symlink's target path for FileInfo#Name on windows · 94dd0f02
      Hiroshi Ioka authored
      Use an original name instead of a symlink's target path.
      
      Fixes #20064
      
      Change-Id: I9be3837a156bdcda0e9e065abbb425d535b27be3
      Reviewed-on: https://go-review.googlesource.com/41310Reviewed-by: default avatarAlex Brainman <alex.brainman@gmail.com>
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      94dd0f02
    • Ronald G. Minnich's avatar
      syscall: fix ordering of Unshare and chroot on Linux · 67399c62
      Ronald G. Minnich authored
      When unshare specifies a new namespace, the syscall
      package changes / to make namespace changes private.
      
      If a chroot is specified, the unshare must be done first.
      If the chroot is done first then the unshare will
      not specify the correct /.
      
      A new test is included which test combining chroot
      and CLONE_NEWNS; it fails without the patch and works with
      it.
      
      Fixes #20103
      
      Change-Id: I86022803c784bd418a30383321f3d64103d95c62
      Reviewed-on: https://go-review.googlesource.com/41626Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      67399c62
    • Alex Brainman's avatar
      archive/tar: extend TestFileInfoHeaderSymlink · cf3a2812
      Alex Brainman authored
      For #17541.
      
      Change-Id: I524ab194f32b8b061ce1c9c3e0cd34cc5539358e
      Reviewed-on: https://go-review.googlesource.com/39410
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      cf3a2812
  2. 24 Apr, 2017 18 commits
    • Josh Bleecher Snyder's avatar
      cmd/compile: remove references to *os.File from ssa package · 4ee934ad
      Josh Bleecher Snyder authored
      This reduces the size of the ssa export data
      by 10%, from 76154 to 67886.
      
      It doesn't appear that #20084, which would do this automatically,
      is going to be fixed soon. Do it manually for now.
      
      This speeds up compiling cmd/compile/internal/amd64
      and presumably its comrades as well:
      
      name          old time/op       new time/op       delta
      CompileAMD64       89.6ms ± 6%       86.7ms ± 5%  -3.29%  (p=0.000 n=49+47)
      
      name          old user-time/op  new user-time/op  delta
      CompileAMD64        116ms ± 5%        112ms ± 5%  -3.51%  (p=0.000 n=45+42)
      
      name          old alloc/op      new alloc/op      delta
      CompileAMD64       26.7MB ± 0%       25.8MB ± 0%  -3.26%  (p=0.008 n=5+5)
      
      name          old allocs/op     new allocs/op     delta
      CompileAMD64         223k ± 0%         213k ± 0%  -4.46%  (p=0.008 n=5+5)
      
      Updates #20084
      
      Change-Id: I49e8951c5bfce63ad2b7f4fc3bfa0868c53114f9
      Reviewed-on: https://go-review.googlesource.com/41493
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      4ee934ad
    • Robert Griesemer's avatar
      cmd/compile: move typepkg back to gc package (cleanup) · cdeda796
      Robert Griesemer authored
      Change-Id: I4d5c54d2dceabf4630e5e642835b20c8c6890524
      Reviewed-on: https://go-review.googlesource.com/41616
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      cdeda796
    • Josselin Costanzi's avatar
      encoding/base64: Optimize DecodeString · 31c96fc2
      Josselin Costanzi authored
      Optimize DecodeString for the common case where most of the input isn't
      a newline or a padding character.
      Also add some testcases found when fuzzing this implementation against
      upstream.
      Change Decode benchmark to run with different input sizes.
      
      name                 old time/op    new time/op    delta
      DecodeString/2-4       71.5ns ± 4%    70.0ns ± 6%     ~     (p=0.246 n=5+5)
      DecodeString/4-4        112ns ±25%      91ns ± 2%     ~     (p=0.056 n=5+5)
      DecodeString/8-4        136ns ± 5%     126ns ± 5%   -7.33%  (p=0.016 n=5+5)
      DecodeString/64-4       872ns ±29%     652ns ±21%  -25.23%  (p=0.032 n=5+5)
      DecodeString/8192-4    90.9µs ±21%    61.0µs ±13%  -32.87%  (p=0.008 n=5+5)
      
      name                 old speed      new speed      delta
      DecodeString/2-4     56.0MB/s ± 4%  57.2MB/s ± 6%     ~     (p=0.310 n=5+5)
      DecodeString/4-4     73.4MB/s ±23%  87.7MB/s ± 2%     ~     (p=0.056 n=5+5)
      DecodeString/8-4     87.8MB/s ± 5%  94.8MB/s ± 5%   +7.98%  (p=0.016 n=5+5)
      DecodeString/64-4     103MB/s ±24%   136MB/s ±19%  +32.63%  (p=0.032 n=5+5)
      DecodeString/8192-4   122MB/s ±19%   180MB/s ±11%  +47.75%  (p=0.008 n=5+5)
      
      Improves #19636
      
      Change-Id: I39667f4fb682a12b3137946d017ad999553c5780
      Reviewed-on: https://go-review.googlesource.com/34950Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      31c96fc2
    • Andrew Benton's avatar
      encoding/asn1: add NullBytes and NullRawValue for working with ASN.1 NULL · d9b1f9e8
      Andrew Benton authored
      There were a number of places in crypto/x509 that used hardcoded
      representations of the ASN.1 NULL type, in both byte slice and
      RawValue struct forms. This change adds two new exported vars to
      the asn1 package for working with ASN.1 NULL in both its forms, and
      converts all usages from the x509 package.
      
      In addition, tests were added to exercise Marshal and Unmarshal on
      both vars.
      
      See #19446 for discussion.
      
      Change-Id: I63dbd0835841ccbc810bd6ec794360a84e933f1e
      Reviewed-on: https://go-review.googlesource.com/38660
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      d9b1f9e8
    • Damien Lespiau's avatar
      cmd/go/internal/get: remove unused pkgImportPath · 8fcd69d3
      Damien Lespiau authored
      We can also remove the internal/load import as a result.
      
      Found with honnef.co/go/tools/cmd/unused.
      
      Change-Id: Ie70c5713e7a6f238158804acec07807c14f8e092
      Reviewed-on: https://go-review.googlesource.com/41473Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      8fcd69d3
    • Filippo Valsorda's avatar
      net/http: document Shutdown/Serve return behavior · 3fd976de
      Filippo Valsorda authored
      Change-Id: I9cdf6e7da0fb2d5194426eafa61812ea7a85f52f
      Reviewed-on: https://go-review.googlesource.com/37161Reviewed-by: default avatarDan Peterson <dpiddy@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      3fd976de
    • Keith Randall's avatar
      cmd/compile: rotate loops so conditional branch is at the end · 39ce5907
      Keith Randall authored
      Old loops look like this:
         loop:
           CMPQ ...
           JGE exit
           ...
           JMP loop
         exit:
      
      New loops look like this:
          JMP entry
        loop:
          ...
        entry:
          CMPQ ...
          JLT loop
      
      This removes one instruction (the unconditional jump) from
      the inner loop.
      Kinda surprisingly, it matters.
      
      This is a bit different than the peeling that the old obj
      library did in that we don't duplicate the loop exit test.
      We just jump to the test.  I'm not sure if it is better or
      worse to do that (peeling gets rid of the JMP but means more
      code duplication), but this CL is certainly a much simpler
      compiler change, so I'll try this way first.
      
      The obj library used to do peeling before
      CL https://go-review.googlesource.com/c/36205 turned it off.
      
      Fixes #15837 (remove obj instruction reordering)
      The reordering is already removed, this CL implements the only
      part of that reordering that we'd like to keep.
      
      Fixes #14758 (append loop)
      name    old time/op    new time/op    delta
      Foo-12     817ns ± 4%     538ns ± 0%  -34.08%   (p=0.000 n=10+9)
      Bar-12     850ns ±11%     570ns ±13%  -32.88%  (p=0.000 n=10+10)
      
      Update #19595 (BLAS slowdown)
      name                       old time/op  new time/op  delta
      DgemvMedMedNoTransIncN-12  13.2µs ± 9%  10.2µs ± 1%  -22.26%  (p=0.000 n=9+9)
      
      Fixes #19633 (append loop)
      name    old time/op    new time/op    delta
      Foo-12     810ns ± 1%     540ns ± 0%  -33.30%   (p=0.000 n=8+9)
      
      Update #18977 (Fannkuch11 regression)
      name         old time/op    new time/op    delta
      Fannkuch11-8                2.80s ± 0%     3.01s ± 0%  +7.47%   (p=0.000 n=9+10)
      This one makes no sense.  There's strictly 1 less instruction in the
      inner loop (17 instead of 18).  They are exactly the same instructions
      except for the JMP that has been elided.
      
      go1 benchmarks generally don't look very impressive.  But the gains for the
      specific issues above make this CL still probably worth it.
      name                      old time/op    new time/op    delta
      BinaryTree17-8              2.32s ± 0%     2.34s ± 0%  +1.14%    (p=0.000 n=9+7)
      Fannkuch11-8                2.80s ± 0%     3.01s ± 0%  +7.47%   (p=0.000 n=9+10)
      FmtFprintfEmpty-8          44.1ns ± 1%    46.1ns ± 1%  +4.53%  (p=0.000 n=10+10)
      FmtFprintfString-8         67.8ns ± 0%    74.4ns ± 1%  +9.80%   (p=0.000 n=10+9)
      FmtFprintfInt-8            74.9ns ± 0%    78.4ns ± 0%  +4.67%   (p=0.000 n=8+10)
      FmtFprintfIntInt-8          117ns ± 1%     123ns ± 1%  +4.69%   (p=0.000 n=9+10)
      FmtFprintfPrefixedInt-8     160ns ± 1%     146ns ± 0%  -8.22%   (p=0.000 n=8+10)
      FmtFprintfFloat-8           214ns ± 0%     206ns ± 0%  -3.91%    (p=0.000 n=8+8)
      FmtManyArgs-8               468ns ± 0%     497ns ± 1%  +6.09%   (p=0.000 n=8+10)
      GobDecode-8                6.16ms ± 0%    6.21ms ± 1%  +0.76%   (p=0.000 n=9+10)
      GobEncode-8                4.90ms ± 0%    4.92ms ± 1%  +0.37%   (p=0.028 n=9+10)
      Gzip-8                      209ms ± 0%     212ms ± 0%  +1.33%  (p=0.000 n=10+10)
      Gunzip-8                   36.6ms ± 0%    38.0ms ± 1%  +4.03%    (p=0.000 n=9+9)
      HTTPClientServer-8         84.2µs ± 0%    86.0µs ± 1%  +2.14%    (p=0.000 n=9+9)
      JSONEncode-8               13.6ms ± 3%    13.8ms ± 1%  +1.55%   (p=0.003 n=9+10)
      JSONDecode-8               53.2ms ± 5%    52.9ms ± 0%    ~     (p=0.280 n=10+10)
      Mandelbrot200-8            3.78ms ± 0%    3.78ms ± 1%    ~      (p=0.661 n=10+9)
      GoParse-8                  2.89ms ± 0%    2.94ms ± 2%  +1.50%  (p=0.000 n=10+10)
      RegexpMatchEasy0_32-8      68.5ns ± 2%    68.9ns ± 1%    ~     (p=0.136 n=10+10)
      RegexpMatchEasy0_1K-8       220ns ± 1%     225ns ± 1%  +2.41%  (p=0.000 n=10+10)
      RegexpMatchEasy1_32-8      64.7ns ± 0%    64.5ns ± 0%  -0.28%  (p=0.042 n=10+10)
      RegexpMatchEasy1_1K-8       348ns ± 1%     355ns ± 0%  +1.90%  (p=0.000 n=10+10)
      RegexpMatchMedium_32-8      102ns ± 1%     105ns ± 1%  +2.95%  (p=0.000 n=10+10)
      RegexpMatchMedium_1K-8     33.1µs ± 3%    32.5µs ± 0%  -1.75%  (p=0.000 n=10+10)
      RegexpMatchHard_32-8       1.71µs ± 1%    1.70µs ± 1%  -0.84%   (p=0.002 n=10+9)
      RegexpMatchHard_1K-8       51.1µs ± 0%    50.8µs ± 1%  -0.48%  (p=0.004 n=10+10)
      Revcomp-8                   411ms ± 1%     402ms ± 0%  -2.22%   (p=0.000 n=10+9)
      Template-8                 61.8ms ± 1%    59.7ms ± 0%  -3.44%    (p=0.000 n=9+9)
      TimeParse-8                 306ns ± 0%     318ns ± 0%  +3.83%  (p=0.000 n=10+10)
      TimeFormat-8                320ns ± 0%     318ns ± 1%  -0.53%   (p=0.012 n=7+10)
      
      Change-Id: Ifaf29abbe5874e437048e411ba8f7cfbc9e1c94b
      Reviewed-on: https://go-review.googlesource.com/38431
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      39ce5907
    • Brad Fitzpatrick's avatar
      runtime/debug: mark TestSetGCPercent as flaky · 6a48019e
      Brad Fitzpatrick authored
      Updates #20076
      
      Change-Id: I4eb98abbb49174cc6433e5da2c3660893ef88fd1
      Reviewed-on: https://go-review.googlesource.com/41615
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6a48019e
    • Josh Bleecher Snyder's avatar
      cmd/compile: add -c flag · 22f1b56d
      Josh Bleecher Snyder authored
      This will be used in the future to control backend concurrency.
      See CL 40693.
      
      In the meantime, make it a no-op.
      This should fix the linux-amd64-racecompile builders.
      
      Change-Id: Ibf3b2a7fff6f8f8c94f5fafb26e0500a51c8a4a6
      Reviewed-on: https://go-review.googlesource.com/41614
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      22f1b56d
    • Daniel Theophanes's avatar
      database/sql: allow using a single connection from the database · d234f9a7
      Daniel Theophanes authored
      Databases have the following concepts: Statement, Batch, and Session.
      
      A statement is often a single line like:
      SELECT Amount from Account where ID = 50;
      
      A batch is one or more statements submitted together for the query
      to process. It may be a DELETE, INSERT, two UPDATES and a SELECT in
      a single query text.
      
      A session is usually represented by a single database connection.
      This often is an issue when dealing with scopes in databases.
      Temporary tables and variables can have batch, session, or global
      scope depending on the syntax, database, and use.
      
      Furthermore, some databases (sybase and derivatives in perticular)
      that prevent certain statements from being in the same batch
      and may necessitate being in the same session.
      
      By allowing users to extract a Conn from the database they can manage
      session on their own without hacking around it by making connection
      pools of single connections (a real workaround presented in issue).
      It is tempting to just use a transaction, but this isn't always
      desirable or an option if running an interactive session or
      alter script set that itself starts transactions.
      
      Fixes #18081
      
      Change-Id: I9bdf0796632c48d4bcaef3624c629641984ffaf2
      Reviewed-on: https://go-review.googlesource.com/40694Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      d234f9a7
    • Mikio Hara's avatar
      runtime: gofmt -w -s · 42c5f399
      Mikio Hara authored
      Change-Id: I954b0300554786b7026996a21acfec3b6f205e75
      Reviewed-on: https://go-review.googlesource.com/41512
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      Reviewed-by: default avatarMarvin Stenger <marvin.stenger94@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      42c5f399
    • Hiroshi Ioka's avatar
      cmd/compile: fix comments in transformclosure · 3fa133f4
      Hiroshi Ioka authored
      Change-Id: I7a18798180405504dc064424d63dac49634168fb
      Reviewed-on: https://go-review.googlesource.com/41530Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      3fa133f4
    • Ilya Tocar's avatar
      math: remove asm version of sincos everywhere, except 386 · bc6459ac
      Ilya Tocar authored
      We have dedicated asm implementation of sincos only on 386 and amd64,
      on everything else we are just jumping to generic version.
      However amd64 version is actually slower than generic one:
      
      Sincos-6               34.4ns ± 0%   24.8ns ± 0%  -27.79%  (p=0.000 n=8+10)
      
      So remove all sincos*.s and keep only generic and 386.
      
      Updates #19819
      
      Change-Id: I7eefab35743729578264f52f6d23ee2c227c92a5
      Reviewed-on: https://go-review.googlesource.com/41200
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      bc6459ac
    • Alberto Donizetti's avatar
      cmd/compile: more error position tests for the typechecker · 1737aef2
      Alberto Donizetti authored
      This change adds line position tests for several yyerror calls in the
      typechecker that are currently not tested in any way.
      
      Untested yyerror calls were found by replacing them with
      
        yerrorl(src.NoXPos, ...)
      
      (thus destroying position information in the error), and then running
      the test suite. No failures means no test coverage for the relevant
      yyerror call.
      
      For #19683
      
      Change-Id: Iedb3d2f02141b332e9bfa76dbf5ae930ad2fddc3
      Reviewed-on: https://go-review.googlesource.com/41477
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      1737aef2
    • 张嵩's avatar
      test/chan: add missing flag.Parse in doubleselect.go · 26536b2f
      张嵩 authored
      doubleselect.go defines a flag to control the number of iterations,
      but never called flag.Parse so it was unusable.
      
      Change-Id: Ib5d0c7119e7f7c9a808dcc02d0d9cc6ba5bbc16e
      Reviewed-on: https://go-review.googlesource.com/41299Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      26536b2f
    • Josh Bleecher Snyder's avatar
      cmd/compile: count init functions from 0, not 1 · a73a330c
      Josh Bleecher Snyder authored
      While we're here, do minor style cleanup.
      Also, since we know exactly how many init
      functions there are, use that knowledge.
      
      This is cleanup prior to a more substantive CL.
      
      Change-Id: I2bba60b3c051c852590f798f45e8268f8bc54ca8
      Reviewed-on: https://go-review.googlesource.com/41499
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      a73a330c
    • Josh Bleecher Snyder's avatar
      cmd/compile: lazily create true and false Values in shortcircuit · 79e5ef29
      Josh Bleecher Snyder authored
      It is mildly wasteful to always create values
      that must sometimes then be dead code eliminated.
      Given that it is very easy to avoid, do so.
      
      Noticed when examining a package with thousands
      of generated wrappers, each of which uses
      only a handful of Values to compile.
      
      Change-Id: If02eb4aa786dfa20f7aa43e8d729dad8b3db2786
      Reviewed-on: https://go-review.googlesource.com/41502
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      79e5ef29
    • Josh Bleecher Snyder's avatar
      cmd/compile: break apart dumptypestructs · 976a5ce1
      Josh Bleecher Snyder authored
      dumptypestructs did several different jobs.
      Split them into separate functions
      and call them in turn.
      
      Hand dumptypestructs a list of dcls,
      rather than reading the global.
      
      Rename dumpptabs for (marginal) clarity.
      
      This is groundwork for compiling autogenerated
      functions concurrently.
      
      Passes toolstash-check.
      
      Change-Id: I627a1dffc70a7e4b7b4436ab19af1406267f01dc
      Reviewed-on: https://go-review.googlesource.com/41501
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      976a5ce1
  3. 23 Apr, 2017 3 commits