1. 19 Apr, 2016 3 commits
  2. 18 Apr, 2016 17 commits
    • Robert Griesemer's avatar
      cmd/compile: fix internal consistency check with binary exporter · a5386f3c
      Robert Griesemer authored
      Per feedback from mdempsky from https://go-review.googlesource.com/22096.
      
      Also fix emitted position info.
      
      Change-Id: I7ff1967430867d922be8784832042c75d81df28b
      Reviewed-on: https://go-review.googlesource.com/22198
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a5386f3c
    • David du Colombier's avatar
      net: handle hangup in read on Plan 9 · 26281446
      David du Colombier authored
      On Plan 9, when closing a TCP connection, we
      write the "hangup" string to the TCP ctl file.
      
      The next read on the TCP data file will return
      an error like "/net/tcp/18/data: Hangup", while
      in Go, we expect to return io.EOF.
      
      This change makes Read to return io.EOF when
      an error string containing "Hangup" is returned.
      
      Change-Id: I3f71ed543704190b441cac4787488a77f46d88a1
      Reviewed-on: https://go-review.googlesource.com/22149Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      26281446
    • David Crawshaw's avatar
      cmd/link: shorter type symbol names · f81ae3b2
      David Crawshaw authored
      Use (part of) a SHA-1 checksum to replace type symbol names.
      
      In typical programs this has no effect because types are not included
      in the symbol table. But when dynamically linking, types are in the
      table to make sure there is only one *rtype per Go type.
      
      Eventually we may be able to get rid of all pointers to rtype values in
      the binary, but probably not by 1.7. And this has a nice effect on
      binary size today:
      
      libstd.so:
      	before 27.4MB
      	after  26.2MB
      
      For #6853.
      
      Change-Id: I603d7f3e5baad84f59f2fd37eeb1e4ae5acfe44a
      Reviewed-on: https://go-review.googlesource.com/21583Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f81ae3b2
    • Keith Randall's avatar
      cmd/compile: logical operation identities · 4d5adf1e
      Keith Randall authored
      Some rewrites to simplify logical operations.
      
      Fixes #14363
      
      Change-Id: I45a1e8f227267cbcca0778101125f7bab776a5dd
      Reviewed-on: https://go-review.googlesource.com/22188Reviewed-by: 's avatarAlexandru Moșoi <alexandru@mosoi.ro>
      Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4d5adf1e
    • David Crawshaw's avatar
      cmd/link, cmd/compile: typelink sorting in linker · 4140da7b
      David Crawshaw authored
      Instead of writing out the type almost twice in the symbol name,
      teach the linker how to sort typelink symbols by their contents.
      
      This ~halves the size of typelink symbol names, which helps very
      large (6KB) names like those mentioned in #15104.
      
      This does not increase the total sorting work done by the linker,
      and makes it possible to use shorter symbol names for types. See
      the follow-on CL 21583.
      
      Change-Id: Ie5807565ed07d31bc477d20f60e4c0b47144f337
      Reviewed-on: https://go-review.googlesource.com/21457Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      4140da7b
    • David Crawshaw's avatar
      reflect: test that method name offset is valid · 2e2df78a
      David Crawshaw authored
      Bug fix went in CL 21396, this is a matching test.
      
      Fixes #15343
      
      Change-Id: I3670145c7cac45cb4fb3121ffc039cfb7fa7c87a
      Reviewed-on: https://go-review.googlesource.com/22171Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      2e2df78a
    • Josh Bleecher Snyder's avatar
      runtime: add benchmarks for in-place append · 411a0adc
      Josh Bleecher Snyder authored
      Change-Id: I2b43cc976d2efbf8b41170be536fdd10364b65e5
      Reviewed-on: https://go-review.googlesource.com/22190Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      411a0adc
    • Keith Randall's avatar
      cmd/compile: eliminate copy for static literals · b024ed0d
      Keith Randall authored
      *p = [5]byte{1,2,3,4,5}
      
      First we allocate a global containing the RHS.  Then we copy
      that global to a local stack variable, and then copy that local
      stack variable to *p.  The intermediate copy is unnecessary.
      
      Note that this only works if the RHS is completely constant.
      If the code was:
      *p = [5]byte{1,2,x,4,5}
      this optimization doesn't apply as we have to construct the
      RHS on the stack before copying it to *p.
      
      Fixes #12841
      
      Change-Id: I7cd0404ecc7a2d1750cbd8fe1222dba0fa44611f
      Reviewed-on: https://go-review.googlesource.com/22192Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      b024ed0d
    • Brad Fitzpatrick's avatar
      net: fix plan9 after context change, propagate contexts more · f60fcca5
      Brad Fitzpatrick authored
      My previous https://golang.org/cl/22101 to add context throughout the
      net package broke Plan 9, which isn't currently tested (#15251).
      
      It also broke some old unsupported version of Windows (Windows 2000?)
      which doesn't have the ConnectEx function, but that was only found
      visually, since our minimum supported Windows version has ConnectEx.
      This change simplifies the Windows and deletes the non-ConnectEx code
      path.  Windows 2000 will work even less now, if it even worked
      before. Windows XP remains our minimum supported version.
      
      Specifically, the previous CL stopped using the "dial" function, which
      0intro noted:
      https://github.com/golang/go/issues/15333#issuecomment-210842761
      
      This CL removes the dial function instead and makes plan9's net
      implementation respect contexts, which likely fixes a number of
      t.Skipped tests. I'm leaving that to 0intro to investigate.
      
      In the process of propagating and respecting contexts for plan9, I had
      to change some signatures to add contexts to more places and ended up
      pushing contexts down into the Go-based DNS resolution as well,
      replacing the pure-Go DNS implementation's use of "timeout
      time.Duration" with a context instead.
      
      Updates #11932
      Updates #15328
      
      Fixes #15333
      
      Change-Id: I6ad1e62f38271cdd86b3f40921f2d0f23374936a
      Reviewed-on: https://go-review.googlesource.com/22144Reviewed-by: 's avatarDavid du Colombier <0intro@gmail.com>
      Reviewed-by: 's avatarMikio Hara <mikioh.mikioh@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f60fcca5
    • David Crawshaw's avatar
      cmd/link: use gold when dynamic linking on arm64 · a3c92c9d
      David Crawshaw authored
      The GNU linker follows the letter of -znocopyreloc by refusing to
      generate COPY relocations on arm64. Unfortunately it generates an
      error instead of finding another way. The gold linker works, so
      switch to it.
      
      Fixes linux/arm64 build.
      
      Change-Id: I1f7119d999c8f9f1f2d0c1e06b6462cea9c02a71
      Reviewed-on: https://go-review.googlesource.com/22185
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      a3c92c9d
    • Brad Fitzpatrick's avatar
      net/http: document Hijacker and Flusher more · 0db2bf23
      Brad Fitzpatrick authored
      Fixes #15312
      
      Change-Id: I4fabef3f21081bc4b020069851b5c2504bc6b4d8
      Reviewed-on: https://go-review.googlesource.com/22122Reviewed-by: 's avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      0db2bf23
    • Ian Lance Taylor's avatar
      cmd/compile: a dot expression can not be a struct literal key · f5423a63
      Ian Lance Taylor authored
      Passes toolstash -cmp.
      
      Fixes #15311.
      
      Change-Id: I1d67f5c9de38e899ab2d6c8986fabd6f197df23a
      Reviewed-on: https://go-review.googlesource.com/22162Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      f5423a63
    • David Crawshaw's avatar
      cmd/compile, etc: use name offset in method tables · 95df0c6a
      David Crawshaw authored
      Introduce and start using nameOff for two encoded names. This pair
      of changes is best done together because the linker's method decoder
      expects the method layouts to match.
      
      Precursor to converting all existing name and *string fields to
      nameOff.
      
      linux/amd64:
      	cmd/go:  -45KB (0.5%)
      	jujud:  -389KB (0.6%)
      
      linux/amd64 PIE:
      	cmd/go: -170KB (1.4%)
      	jujud:  -1.5MB (1.8%)
      
      For #6853.
      
      Change-Id: Ia044423f010fb987ce070b94c46a16fc78666ff6
      Reviewed-on: https://go-review.googlesource.com/21396Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      95df0c6a
    • David Crawshaw's avatar
      cmd/link: use -znocopyreloc when dynamic linking · 3c8d6af8
      David Crawshaw authored
      On ARM, use the gold linker to avoid copy relocations.
      https://sourceware.org/bugzilla/show_bug.cgi?id=19962
      
      Change-Id: Icf82a38d39495d4518812713b957a03a6652c728
      Reviewed-on: https://go-review.googlesource.com/22141
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3c8d6af8
    • Andrew Gerrand's avatar
      cmd/go: mention that _test.go files are ignored when building · 135572eb
      Andrew Gerrand authored
      Fixes #15315
      
      Change-Id: I8fea31507a5f83df8a86fb067f1b11d90133dc09
      Reviewed-on: https://go-review.googlesource.com/22180Reviewed-by: 's avatarChris Broadfoot <cbro@golang.org>
      135572eb
    • Klaus Post's avatar
      compress/flate: use uncompressed if dynamic encoding is larger · 6ec481b0
      Klaus Post authored
      This adds size calculation to "dynamic" writes.
      This ensures that if dynamic Huffman encoding is bigger,
      or only slightly smaller than raw data, the block is written
      uncompressed.
      
      To minimize the code duplication of this function, the
      size calculation has been moved to separate functions.
      
      Since I was modifying these calculations, I changed "int64"
      size calculations to "int". Blocks are of very limited size,
      so there is not any risk of overflows.
      This should mainly improve 32 bit performance, but amd64 also
      gets a slight boost:
      
      name                       old time/op    new time/op    delta
      EncodeDigitsHuffman1e4-8     49.9µs ± 1%    49.3µs ± 1%  -1.21%  (p=0.000 n=10+10)
      EncodeDigitsHuffman1e5-8      476µs ± 1%     471µs ± 3%    ~     (p=0.218 n=10+10)
      EncodeDigitsHuffman1e6-8     4.80ms ± 2%    4.75ms ± 2%    ~      (p=0.243 n=10+9)
      EncodeDigitsSpeed1e4-8        305µs ± 3%     300µs ± 1%  -1.86%  (p=0.005 n=10+10)
      EncodeDigitsSpeed1e5-8       3.67ms ± 2%    3.58ms ± 1%  -2.29%    (p=0.000 n=9+8)
      EncodeDigitsSpeed1e6-8       38.3ms ± 2%    37.0ms ± 1%  -3.45%    (p=0.000 n=9+9)
      EncodeDigitsDefault1e4-8      361µs ± 2%     353µs ± 1%  -2.21%  (p=0.000 n=10+10)
      EncodeDigitsDefault1e5-8     5.24ms ± 2%    5.19ms ± 2%    ~     (p=0.105 n=10+10)
      EncodeDigitsDefault1e6-8     56.5ms ± 3%    55.1ms ± 1%  -2.42%  (p=0.001 n=10+10)
      EncodeDigitsCompress1e4-8     362µs ± 2%     358µs ± 2%    ~     (p=0.123 n=10+10)
      EncodeDigitsCompress1e5-8    5.26ms ± 3%    5.20ms ± 1%    ~     (p=0.089 n=10+10)
      EncodeDigitsCompress1e6-8    56.0ms ± 4%    55.0ms ± 1%    ~      (p=0.065 n=10+9)
      EncodeTwainHuffman1e4-8      70.9µs ± 3%    67.6µs ± 2%  -4.59%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e5-8       556µs ± 2%     533µs ± 1%  -4.20%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e6-8      5.54ms ± 3%    5.29ms ± 1%  -4.37%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e4-8         294µs ± 3%     293µs ± 1%    ~      (p=0.965 n=10+8)
      EncodeTwainSpeed1e5-8        2.59ms ± 2%    2.56ms ± 1%    ~     (p=0.353 n=10+10)
      EncodeTwainSpeed1e6-8        25.6ms ± 1%    24.9ms ± 1%  -2.62%   (p=0.000 n=9+10)
      EncodeTwainDefault1e4-8       419µs ± 2%     417µs ± 1%    ~      (p=0.780 n=10+9)
      EncodeTwainDefault1e5-8      6.23ms ± 4%    6.16ms ± 1%    ~     (p=0.218 n=10+10)
      EncodeTwainDefault1e6-8      66.2ms ± 2%    65.7ms ± 1%    ~     (p=0.529 n=10+10)
      EncodeTwainCompress1e4-8      426µs ± 1%     428µs ± 2%    ~      (p=0.549 n=9+10)
      EncodeTwainCompress1e5-8     6.80ms ± 1%    6.85ms ± 3%    ~      (p=0.156 n=9+10)
      EncodeTwainCompress1e6-8     74.6ms ± 3%    73.8ms ± 2%    ~     (p=0.280 n=10+10)
      
      name                       old speed      new speed      delta
      EncodeDigitsHuffman1e4-8    200MB/s ± 1%   203MB/s ± 1%  +1.23%  (p=0.000 n=10+10)
      EncodeDigitsHuffman1e5-8    210MB/s ± 1%   212MB/s ± 3%    ~      (p=0.356 n=10+9)
      EncodeDigitsHuffman1e6-8    208MB/s ± 2%   210MB/s ± 2%    ~      (p=0.243 n=10+9)
      EncodeDigitsSpeed1e4-8     32.8MB/s ± 3%  33.4MB/s ± 1%  +1.88%  (p=0.005 n=10+10)
      EncodeDigitsSpeed1e5-8     27.2MB/s ± 2%  27.9MB/s ± 1%  +2.60%   (p=0.000 n=10+8)
      EncodeDigitsSpeed1e6-8     26.1MB/s ± 2%  27.0MB/s ± 1%  +3.56%    (p=0.000 n=9+9)
      EncodeDigitsDefault1e4-8   27.7MB/s ± 2%  28.4MB/s ± 1%  +2.24%  (p=0.000 n=10+10)
      EncodeDigitsDefault1e5-8   19.1MB/s ± 2%  19.3MB/s ± 2%    ~     (p=0.101 n=10+10)
      EncodeDigitsDefault1e6-8   17.7MB/s ± 3%  18.1MB/s ± 1%  +2.46%  (p=0.001 n=10+10)
      EncodeDigitsCompress1e4-8  27.6MB/s ± 2%  27.9MB/s ± 2%    ~     (p=0.119 n=10+10)
      EncodeDigitsCompress1e5-8  19.0MB/s ± 3%  19.2MB/s ± 1%    ~     (p=0.085 n=10+10)
      EncodeDigitsCompress1e6-8  17.9MB/s ± 4%  18.1MB/s ± 3%    ~     (p=0.110 n=10+10)
      EncodeTwainHuffman1e4-8     141MB/s ± 3%   148MB/s ± 2%  +4.79%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e5-8     180MB/s ± 2%   188MB/s ± 1%  +4.38%  (p=0.000 n=10+10)
      EncodeTwainHuffman1e6-8     181MB/s ± 3%   189MB/s ± 1%  +4.54%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e4-8      34.0MB/s ± 3%  34.1MB/s ± 1%    ~      (p=0.948 n=10+8)
      EncodeTwainSpeed1e5-8      38.7MB/s ± 2%  39.0MB/s ± 1%    ~     (p=0.353 n=10+10)
      EncodeTwainSpeed1e6-8      39.1MB/s ± 1%  40.1MB/s ± 1%  +2.68%   (p=0.000 n=9+10)
      EncodeTwainDefault1e4-8    23.9MB/s ± 2%  24.0MB/s ± 1%    ~      (p=0.734 n=10+9)
      EncodeTwainDefault1e5-8    16.0MB/s ± 4%  16.2MB/s ± 1%    ~     (p=0.210 n=10+10)
      EncodeTwainDefault1e6-8    15.1MB/s ± 2%  15.2MB/s ± 1%    ~     (p=0.515 n=10+10)
      EncodeTwainCompress1e4-8   23.5MB/s ± 1%  23.4MB/s ± 2%    ~      (p=0.536 n=9+10)
      EncodeTwainCompress1e5-8   14.7MB/s ± 1%  14.6MB/s ± 3%    ~      (p=0.138 n=9+10)
      EncodeTwainCompress1e6-8   13.4MB/s ± 3%  13.5MB/s ± 2%    ~     (p=0.239 n=10+10)
      
      This improves "random input" to the dynamic writer, which is why the test data is
      updated. The output size goes from 1051 to 1005 bytes.
      
      Change-Id: I3ee11d2d2511b277d2dd16734aeea07c98bca450
      Reviewed-on: https://go-review.googlesource.com/21757Reviewed-by: 's avatarJoe Tsai <joetsai@digital-static.net>
      Run-TryBot: Joe Tsai <joetsai@digital-static.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarNigel Tao <nigeltao@golang.org>
      6ec481b0
    • David Symonds's avatar
      doc: link to iant's generics proposal from the FAQ. · 3629814c
      David Symonds authored
      Updates #15292.
      
      Change-Id: I229f66c2a41ae0738225f2ba7a574478f5d6d620
      Reviewed-on: https://go-review.googlesource.com/22163Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      3629814c
  3. 17 Apr, 2016 6 commits
  4. 16 Apr, 2016 10 commits
  5. 15 Apr, 2016 4 commits