1. 26 Apr, 2017 6 commits
  2. 25 Apr, 2017 27 commits
  3. 24 Apr, 2017 7 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