1. 29 Apr, 2016 9 commits
    • Nigel Tao's avatar
      compress/flate: use a constant hash table size for Best Speed. · 1fb4e4de
      Nigel Tao authored
      This makes compress/flate's version of Snappy diverge from the upstream
      golang/snappy version, but the latter has a goal of matching C++ snappy
      output byte-for-byte. Both C++ and the asm version of golang/snappy can
      use a smaller N for the O(N) zero-initialization of the hash table when
      the input is small, even if the pure Go golang/snappy algorithm cannot:
      "var table [tableSize]uint16" zeroes all tableSize elements.
      
      For this package, we don't have the match-C++-snappy goal, so we can use
      a different (constant) hash table size.
      
      This is a small win, in terms of throughput and output size, but it also
      enables us to re-use the (constant size) hash table between
      encodeBestSpeed calls, avoiding the cost of zero-initializing the hash
      table altogether. This will be implemented in follow-up commits.
      
      This package's benchmarks:
      name                    old speed      new speed      delta
      EncodeDigitsSpeed1e4-8  72.8MB/s ± 1%  73.5MB/s ± 1%  +0.86%  (p=0.000 n=10+10)
      EncodeDigitsSpeed1e5-8  77.5MB/s ± 1%  78.0MB/s ± 0%  +0.69%  (p=0.000 n=10+10)
      EncodeDigitsSpeed1e6-8  82.0MB/s ± 1%  82.7MB/s ± 1%  +0.85%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e4-8   65.1MB/s ± 1%  65.6MB/s ± 0%  +0.78%   (p=0.000 n=10+9)
      EncodeTwainSpeed1e5-8   80.0MB/s ± 0%  80.6MB/s ± 1%  +0.66%   (p=0.000 n=9+10)
      EncodeTwainSpeed1e6-8   81.6MB/s ± 1%  82.1MB/s ± 1%  +0.55%  (p=0.017 n=10+10)
      
      Input size in bytes, output size (and time taken) before and after on
      some larger files:
      1073741824   57269781 (  3183ms)   57269781 (  3177ms) adresser.001
      1000000000  391052000 ( 11071ms)  391051996 ( 11067ms) enwik9
      1911399616  378679516 ( 13450ms)  378679514 ( 13079ms) gob-stream
      8558382592 3972329193 ( 99962ms) 3972329193 ( 91290ms) rawstudio-mint14.tar
       200000000  200015265 (   776ms)  200015265 (   774ms) sharnd.out
      
      Thanks to Klaus Post for the original suggestion on cl/21021.
      
      Change-Id: Ia4c63a8d1b92c67e1765ec5c3c8c69d289d9a6ce
      Reviewed-on: https://go-review.googlesource.com/22604Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      1fb4e4de
    • Dave Cheney's avatar
      cmd/compile/internal/gc: bv.go cleanup · 5edcff01
      Dave Cheney authored
      Drive by gardening of bv.go.
      
      - Unexport the Bvec type, it is not used outside internal/gc.
        (machine translated with gofmt -r)
      - Removed unused constants and functions.
        (driven by cmd/unused)
      
      Change-Id: I3433758ad4e62439f802f4b0ed306e67336d9aba
      Reviewed-on: https://go-review.googlesource.com/22602
      Run-TryBot: Dave Cheney <dave@cheney.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      5edcff01
    • Cherry Zhang's avatar
      misc/cgo/testcarchive: fix C include path for darwin/arm · 94e523cb
      Cherry Zhang authored
      After CL 22461, c-archive build on darwin/arm is by default compiled
      with -shared and installed in pkg/darwin_arm_shared.
      
      Fix build (2nd time...)
      
      Change-Id: Ia2bb09bb6e1ebc9bc74f7570dd80c81d05eaf744
      Reviewed-on: https://go-review.googlesource.com/22534Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      94e523cb
    • Nigel Tao's avatar
      compress/flate: replace "Best Speed" with specialized version · d8b7bd6a
      Nigel Tao authored
      This encoding algorithm, which prioritizes speed over output size, is
      based on Snappy's LZ77-style encoder: github.com/golang/snappy
      
      This commit keeps the diff between this package's encodeBestSpeed
      function and and Snappy's encodeBlock function as small as possible (see
      the diff below). Follow-up commits will improve this package's
      performance and output size.
      
      This package's speed benchmarks:
      
      name                    old speed      new speed      delta
      EncodeDigitsSpeed1e4-8  40.7MB/s ± 0%  73.0MB/s ± 0%   +79.18%  (p=0.008 n=5+5)
      EncodeDigitsSpeed1e5-8  33.0MB/s ± 0%  77.3MB/s ± 1%  +134.04%  (p=0.008 n=5+5)
      EncodeDigitsSpeed1e6-8  32.1MB/s ± 0%  82.1MB/s ± 0%  +156.18%  (p=0.008 n=5+5)
      EncodeTwainSpeed1e4-8   42.1MB/s ± 0%  65.0MB/s ± 0%   +54.61%  (p=0.008 n=5+5)
      EncodeTwainSpeed1e5-8   46.3MB/s ± 0%  80.0MB/s ± 0%   +72.81%  (p=0.008 n=5+5)
      EncodeTwainSpeed1e6-8   47.3MB/s ± 0%  81.7MB/s ± 0%   +72.86%  (p=0.008 n=5+5)
      
      Here's the milliseconds taken, before and after this commit, to compress
      a number of test files:
      
      Go's src/compress/testdata files:
      
           4          1 e.txt
           8          4 Mark.Twain-Tom.Sawyer.txt
      
      github.com/golang/snappy's benchmark files:
      
           3          1 alice29.txt
          12          3 asyoulik.txt
           6          1 fireworks.jpeg
           1          1 geo.protodata
           1          0 html
           2          2 html_x_4
           6          3 kppkn.gtb
          11          4 lcet10.txt
           5          1 paper-100k.pdf
          14          6 plrabn12.txt
          17          6 urls.10K
      
      Larger files linked to from
      https://docs.google.com/spreadsheets/d/1VLxi-ac0BAtf735HyH3c1xRulbkYYUkFecKdLPH7NIQ/edit#gid=166102500
      
        2409       3182 adresser.001
       16757      11027 enwik9
       13764      12946 gob-stream
      153978      74317 rawstudio-mint14.tar
        4371        770 sharnd.out
      
      Output size is larger. In the table below, the first column is the input
      size, the second column is the output size prior to this commit, the
      third column is the output size after this commit.
      
          100003      47707      50006 e.txt
          387851     172707     182930 Mark.Twain-Tom.Sawyer.txt
          152089      62457      66705 alice29.txt
          125179      54503      57274 asyoulik.txt
          123093     122827     123108 fireworks.jpeg
          118588      18574      20558 geo.protodata
          102400      16601      17305 html
          409600      65506      70313 html_x_4
          184320      49007      50944 kppkn.gtb
          426754     166957     179355 lcet10.txt
          102400      82126      84937 paper-100k.pdf
          481861     218617     231988 plrabn12.txt
          702087     241774     258020 urls.10K
      1073741824   43074110   57269781 adresser.001
      1000000000  365772256  391052000 enwik9
      1911399616  340364558  378679516 gob-stream
      8558382592 3807229562 3972329193 rawstudio-mint14.tar
       200000000  200061040  200015265 sharnd.out
      
      The diff between github.com/golang/snappy's encodeBlock function and
      this commit's encodeBestSpeed function:
      
      1c1,7
      < func encodeBlock(dst, src []byte) (d int) {
      ---
      > func encodeBestSpeed(dst []token, src []byte) []token {
      > 	// This check isn't in the Snappy implementation, but there, the caller
      > 	// instead of the callee handles this case.
      > 	if len(src) < minNonLiteralBlockSize {
      > 		return emitLiteral(dst, src)
      > 	}
      >
      4c10
      < 	// and len(src) <= maxBlockSize and maxBlockSize == 65536.
      ---
      > 	// and len(src) <= maxStoreBlockSize and maxStoreBlockSize == 65535.
      65c71
      < 			if load32(src, s) == load32(src, candidate) {
      ---
      > 			if s-candidate < maxOffset && load32(src, s) == load32(src, candidate) {
      73c79
      < 		d += emitLiteral(dst[d:], src[nextEmit:s])
      ---
      > 		dst = emitLiteral(dst, src[nextEmit:s])
      90c96
      < 			// This is an inlined version of:
      ---
      > 			// This is an inlined version of Snappy's:
      93c99,103
      < 			for i := candidate + 4; s < len(src) && src[i] == src[s]; i, s = i+1, s+1 {
      ---
      > 			s1 := base + maxMatchLength
      > 			if s1 > len(src) {
      > 				s1 = len(src)
      > 			}
      > 			for i := candidate + 4; s < s1 && src[i] == src[s]; i, s = i+1, s+1 {
      96c106,107
      < 			d += emitCopy(dst[d:], base-candidate, s-base)
      ---
      > 			// matchToken is flate's equivalent of Snappy's emitCopy.
      > 			dst = append(dst, matchToken(uint32(s-base-3), uint32(base-candidate-minOffsetSize)))
      114c125
      < 			if uint32(x>>8) != load32(src, candidate) {
      ---
      > 			if s-candidate >= maxOffset || uint32(x>>8) != load32(src, candidate) {
      124c135
      < 		d += emitLiteral(dst[d:], src[nextEmit:])
      ---
      > 		dst = emitLiteral(dst, src[nextEmit:])
      126c137
      < 	return d
      ---
      > 	return dst
      
      This change is based on https://go-review.googlesource.com/#/c/21021/ by
      Klaus Post, but it is a separate changelist as cl/21021 seems to have
      stalled in code review, and the Go 1.7 feature freeze approaches.
      
      Golang-dev discussion:
      https://groups.google.com/d/topic/golang-dev/XYgHX9p8IOk/discussion and
      of course cl/21021.
      
      Change-Id: Ib662439417b3bd0b61c2977c12c658db3e44d164
      Reviewed-on: https://go-review.googlesource.com/22370Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      d8b7bd6a
    • Brad Fitzpatrick's avatar
      context: produce a nicer panic message for a nil WithValue key · c884f659
      Brad Fitzpatrick authored
      Change-Id: I2e8ae403622ba7131cadaba506100d79613183f1
      Reviewed-on: https://go-review.googlesource.com/22601Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      c884f659
    • Alex Brainman's avatar
      debug/pe: .bss section must contain only zeros · 694846a5
      Alex Brainman authored
      .bss section has no data stored in PE file. But when .bss section data
      is used by the linker it is assumed that its every byte is set to zero.
      (*Section).Data returns garbage at this moment. Change (*Section).Data
      so it returns slice filled with 0s.
      
      Updates #15345
      
      Change-Id: I1fa5138244a9447e1d59dec24178b1dd0fd4c5d7
      Reviewed-on: https://go-review.googlesource.com/22544Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      694846a5
    • Robert Griesemer's avatar
      test: added test case for (fixed) issue 15470 · d954f9c4
      Robert Griesemer authored
      Follow-up to https://golang.org/cl/22543.
      
      Change-Id: I873b4fa6616ac2aea8faada2fccd126233bbc07f
      Reviewed-on: https://go-review.googlesource.com/22583
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d954f9c4
    • Russ Cox's avatar
      cmd/go, go/build: add support for binary-only packages · af6aa0fd
      Russ Cox authored
      See https://golang.org/design/2775-binary-only-packages for design.
      
      Fixes #2775.
      
      Change-Id: I33e74eebffadc14d3340bba96083af0dec5172d5
      Reviewed-on: https://go-review.googlesource.com/22433Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      af6aa0fd
    • Nigel Tao's avatar
      image/gif: accept an out-of-bounds transparent color index. · 4618dd87
      Nigel Tao authored
      This is an error according to the spec, but Firefox and Google Chrome
      seem OK with this.
      
      Fixes #15059.
      
      Change-Id: I841cf44e96655e91a2481555f38fbd7055a32202
      Reviewed-on: https://go-review.googlesource.com/22546Reviewed-by: 's avatarRob Pike <r@golang.org>
      4618dd87
  2. 28 Apr, 2016 25 commits
    • Nigel Tao's avatar
      image/gif: be stricter on parsing graphic control extensions. · ac0ee77d
      Nigel Tao authored
      See Section 23. Graphic Control Extension of the spec:
      https://www.w3.org/Graphics/GIF/spec-gif89a.txt
      
      Change-Id: Ie78b4ff4aa97e1b332ade67ae4fa25f7c0770610
      Reviewed-on: https://go-review.googlesource.com/22547Reviewed-by: 's avatarRob Pike <r@golang.org>
      ac0ee77d
    • Michael Hudson-Doyle's avatar
      cmd/link: fix -no-pie / -race check · cb97fd77
      Michael Hudson-Doyle authored
      golang.org/cl/22453 was supposed to pass -no-pie to the linker when linking a
      race-enabled binary if the host toolchain supports it. But I bungled the
      supported check as I forgot to pass -c to the host compiler so it tried to
      compile a 0 byte .c file into an executable, which will never work. Fix it to
      pass -c as it should have all along.
      
      Change-Id: I4801345c7a29cb18d5f22cec5337ce535f92135d
      Reviewed-on: https://go-review.googlesource.com/22587
      Run-TryBot: Michael Hudson-Doyle <michael.hudson@canonical.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMinux Ma <minux@golang.org>
      cb97fd77
    • Keith Randall's avatar
      cmd/compile: remove BlockDead state · 6ed79fbd
      Keith Randall authored
      It is unused, remove the clutter.
      
      Change-Id: I51a44326b125ef79241459c463441f76a289cc08
      Reviewed-on: https://go-review.googlesource.com/22586Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      6ed79fbd
    • David Symonds's avatar
      lib/time: update to IANA release 2016d (Apr 2016). · 3cb090f9
      David Symonds authored
      Change-Id: I46d9ea31cf5836d054a9ce22af4dd1742a418a07
      Reviewed-on: https://go-review.googlesource.com/22588
      Run-TryBot: David Symonds <dsymonds@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      3cb090f9
    • Mikio Hara's avatar
      runtime: drop _SigUnblock for SIGSYS on Linux · be730b49
      Mikio Hara authored
      The _SigUnblock flag was appended to SIGSYS slot of runtime signal table
      for Linux in https://go-review.googlesource.com/22202, but there is
      still no concrete opinion on whether SIGSYS must be an unblocked signal
      for runtime.
      
      This change removes _SigUnblock flag from SIGSYS on Linux for
      consistency in runtime signal handling and adds a reference to #15204 to
      runtime signal table for FreeBSD.
      
      Updates #15204.
      
      Change-Id: I42992b1d852c2ab5dd37d6dbb481dba46929f665
      Reviewed-on: https://go-review.googlesource.com/22537Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      be730b49
    • Matthew Dempsky's avatar
      net: remove unneeded tags from dnsRR structs · bec0863b
      Matthew Dempsky authored
      DNS packing and unpacking uses hand-coded struct walking functions
      rather than reflection, so these tags are unneeded and just contribute
      to their runtime reflect metadata size.
      
      Change-Id: I2db09d5159912bcbc3b482cbf23a50fa8fa807fa
      Reviewed-on: https://go-review.googlesource.com/22594
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      bec0863b
    • Matthew Dempsky's avatar
      net: remove internal support for obsolete DNS record types · c231dd21
      Matthew Dempsky authored
      There are no real world use cases for HINFO, MINFO, MB, MG, or MR
      records, and package net's exposed APIs don't provide any way to
      access them even if there were. If a use ever does show up, we can
      revive them. In the mean time, this is just effectively-dead code that
      sticks around because of rr_mk.
      
      Change-Id: I6c188b5ee32f3b3a04588b79a0ee9c2e3e725ccc
      Reviewed-on: https://go-review.googlesource.com/22593
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c231dd21
    • Brad Fitzpatrick's avatar
      net/http, net/http/httptrace: new package for tracing HTTP client requests · 1518d431
      Brad Fitzpatrick authored
      Updates #12580
      
      Change-Id: I9f9578148ef2b48dffede1007317032d39f6af55
      Reviewed-on: https://go-review.googlesource.com/22191Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarTom Bergan <tombergan@google.com>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      1518d431
    • Brad Fitzpatrick's avatar
      os/exec: fix variable shadow, don't leak goroutine · 1b591dfb
      Brad Fitzpatrick authored
      Goroutine leak checking is still too tedious, so untested.
      
      See #6705 which is my fault for forgetting to mail out.
      
      Change-Id: I899fb311c9d4229ff1dbd3f54fe307805e17efee
      Reviewed-on: https://go-review.googlesource.com/22581Reviewed-by: 's avatarAhmed W. <oneofone@gmail.com>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      1b591dfb
    • Robert Griesemer's avatar
      cmd/compile: use delta encoding for filenames in export data position info · 6c11e271
      Robert Griesemer authored
      This reduces the export data size significantly (15%-25%) for some packages,
      especially where the paths are very long or if there are many files involved.
      Slight (2%) reduction on average, with virtually no increases in export data
      size.
      
      Selected export data sizes for packages with |delta %| > 3%:
      
                           package   before    after   delta     %
      
              cmd/asm/internal/arch   11647    11088    -559   -4%
         cmd/compile/internal/amd64     838      600    -238  -27%
           cmd/compile/internal/arm    7323     6793    -530   -6%
         cmd/compile/internal/arm64   19948    18971    -977   -4%
           cmd/compile/internal/big    9043     8548    -495   -4%
        cmd/compile/internal/mips64     645      482    -163  -24%
         cmd/compile/internal/ppc64     695      497    -198  -27%
         cmd/compile/internal/s390x     553      433    -120  -21%
           cmd/compile/internal/x86     744      555    -189  -24%
                           cmd/dist     145      121     -24  -16%
               cmd/internal/objfile   17359    16474    -885   -4%
         cmd/internal/pprof/symbolz    8346     7941    -405   -4%
            cmd/link/internal/amd64   11178    10604    -574   -4%
              cmd/link/internal/arm     204      171     -33  -15%
            cmd/link/internal/arm64     210      175     -35  -16%
           cmd/link/internal/mips64     213      177     -36  -16%
            cmd/link/internal/ppc64     211      176     -35  -16%
            cmd/link/internal/s390x     210      175     -35  -16%
              cmd/link/internal/x86     203      170     -33  -15%
                          cmd/trace     782      744     -38   -4%
                       compress/lzw     402      383     -19   -4%
                         crypto/aes     311      262     -49  -15%
                      crypto/cipher    1138      959    -179  -15%
                         crypto/des     315      288     -27   -8%
                    crypto/elliptic    6063     5746    -317   -4%
                         crypto/rc4     317      295     -22   -6%
                      crypto/sha256     348      312     -36   -9%
                      crypto/sha512     487      451     -36   -6%
                             go/doc    3871     3649    -222   -5%
          go/internal/gccgoimporter    2063     1949    -114   -5%
             go/internal/gcimporter    3253     3096    -157   -4%
                               math    4343     3572    -771  -17%
                         math/cmplx    1580     1274    -306  -18%
                          math/rand     982      926     -56   -5%
              net/internal/socktest    2159     2049    -110   -4%
                            os/exec    7928     7492    -436   -4%
                          os/signal     237      208     -29  -11%
                            os/user     717      682     -35   -4%
            runtime/internal/atomic     728      693     -35   -4%
               runtime/internal/sys    2287     2107    -180   -7%
                               sync    1306     1214     -92   -6%
      
                       all packages 1509255  1465507  -43748   -2%
      
      Change-Id: I98a11521b552166b7f47f2039a29f106748bf5d4
      Reviewed-on: https://go-review.googlesource.com/22580Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      6c11e271
    • Matthew Dempsky's avatar
      cmd/compile: remove unused Bputname function · f04eb356
      Matthew Dempsky authored
      Change-Id: Icecbf9bae8c39670d1ceef62dd94b36e90b27b04
      Reviewed-on: https://go-review.googlesource.com/22570
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f04eb356
    • Michael Munday's avatar
      cmd/compile: allow 64-bit multiplication with immediates on s390x · 3c8ef0e0
      Michael Munday authored
      MGHI (16-bit signed immediate) is now used where possible for both
      MULLW and MULLD. MGHI is 2-bytes shorter than MSGFI.
      
      Change-Id: I5d0648934f28b3403b1126913fd703d8f62b9e9f
      Reviewed-on: https://go-review.googlesource.com/22398
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBill O'Farrell <billotosyr@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3c8ef0e0
    • Matthew Dempsky's avatar
      net: ensure dnsConfig search list is rooted · 5fe1b35e
      Matthew Dempsky authored
      Avoids some extra work and string concatenation at query time.
      
      benchmark                                      old allocs     new allocs     delta
      BenchmarkGoLookupIP-32                         154            150            -2.60%
      BenchmarkGoLookupIPNoSuchHost-32               446            442            -0.90%
      BenchmarkGoLookupIPWithBrokenNameServer-32     564            568            +0.71%
      
      benchmark                                      old bytes     new bytes     delta
      BenchmarkGoLookupIP-32                         10824         10704         -1.11%
      BenchmarkGoLookupIPNoSuchHost-32               43140         42992         -0.34%
      BenchmarkGoLookupIPWithBrokenNameServer-32     46616         46680         +0.14%
      
      BenchmarkGoLookupIPWithBrokenNameServer's regression appears to be
      because it's actually only performing 1 LookupIP call, so the extra
      work done parsing the DNS config file doesn't amortize as well as for
      BenchmarkGoLookupIP or BenchmarkGoLOokupIPNoSuchHost, which perform
      2000+ LookupIP calls per run.
      
      Update #15473.
      
      Change-Id: I98c8072f2f39e2f2ccd6c55e9e9bd309f5ad68f8
      Reviewed-on: https://go-review.googlesource.com/22571Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      5fe1b35e
    • Matthew Dempsky's avatar
      net: append ":53" to DNS servers when reading resolv.conf · 4d9bda51
      Matthew Dempsky authored
      Avoids generating some redundant garbage from re-concatenating the
      same string for every DNS query.
      
      benchmark                                      old allocs     new allocs     delta
      BenchmarkGoLookupIP-32                         156            154            -1.28%
      BenchmarkGoLookupIPNoSuchHost-32               456            446            -2.19%
      BenchmarkGoLookupIPWithBrokenNameServer-32     577            564            -2.25%
      
      benchmark                                      old bytes     new bytes     delta
      BenchmarkGoLookupIP-32                         10873         10824         -0.45%
      BenchmarkGoLookupIPNoSuchHost-32               43303         43140         -0.38%
      BenchmarkGoLookupIPWithBrokenNameServer-32     46824         46616         -0.44%
      
      Update #15473.
      
      Change-Id: I3b0173dfedf31bd08eaea1069968b416850864a1
      Reviewed-on: https://go-review.googlesource.com/22556Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4d9bda51
    • Brad Fitzpatrick's avatar
      os/exec: add Cmd.RunContext and Cmd.WaitContext · 2cc27a7d
      Brad Fitzpatrick authored
      Updates #14660
      
      Change-Id: Ifa5c97ba327ad7ceea0a9a252e3dbd9d079dae54
      Reviewed-on: https://go-review.googlesource.com/22529Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2cc27a7d
    • Adam Langley's avatar
      crypto/tls: allow renegotiation to be handled by a client. · af125a51
      Adam Langley authored
      This change adds Config.Renegotiation which controls whether a TLS
      client will accept renegotiation requests from a server. This is used,
      for example, by some web servers that wish to “add” a client certificate
      to an HTTPS connection.
      
      This is disabled by default because it significantly complicates the
      state machine.
      
      Originally, handshakeMutex was taken before locking either Conn.in or
      Conn.out. However, if renegotiation is permitted then a handshake may
      be triggered during a Read() call. If Conn.in were unlocked before
      taking handshakeMutex then a concurrent Read() call could see an
      intermediate state and trigger an error. Thus handshakeMutex is now
      locked after Conn.in and the handshake functions assume that Conn.in is
      locked for the duration of the handshake.
      
      Additionally, handshakeMutex used to protect Conn.out also. With the
      possibility of renegotiation that's no longer viable and so
      writeRecordLocked has been split off.
      
      Fixes #5742.
      
      Change-Id: I935914db1f185d507ff39bba8274c148d756a1c8
      Reviewed-on: https://go-review.googlesource.com/22475
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      af125a51
    • Keith Randall's avatar
      cmd/compile: reorg copyelim to avoid O(n^2) problem · d610d304
      Keith Randall authored
      Make sure we don't do O(n^2) work to eliminate a chain
      of n copies.
      
      benchmark                     old ns/op       new ns/op     delta
      BenchmarkCopyElim1-8          1418            1406          -0.85%
      BenchmarkCopyElim10-8         5289            5162          -2.40%
      BenchmarkCopyElim100-8        52618           41684         -20.78%
      BenchmarkCopyElim1000-8       2473878         424339        -82.85%
      BenchmarkCopyElim10000-8      269373954       6367971       -97.64%
      BenchmarkCopyElim100000-8     31272781165     104357244     -99.67%
      
      Change-Id: I680f906f70f2ee1a8615cb1046bc510c77d59284
      Reviewed-on: https://go-review.googlesource.com/22535Reviewed-by: 's avatarAlexandru Moșoi <alexandru@mosoi.ro>
      d610d304
    • David Chase's avatar
      cmd/compile: fix.gc.Type.cmp for map.notBucket cmp map.Bucket · 5ec87ba5
      David Chase authored
      Comparison of certain map types could fail to be antisymmetric.
      This corrects that.
      
      Change-Id: I88c6256053ce29950ced4ba4d538e241ee8591fe
      Reviewed-on: https://go-review.googlesource.com/22552
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarjcd . <jcd@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      5ec87ba5
    • Dan Peterson's avatar
      net: change type of dnsConfig.timeout from int to time.Duration · 9faf5cdf
      Dan Peterson authored
      Instead of keeping the desired number of seconds and converting to
      time.Duration for every query, convert to time.Duration when
      building the config.
      
      Updates #15473
      
      Change-Id: Ib24c050b593b3109011e359f4ed837a3fb45dc65
      Reviewed-on: https://go-review.googlesource.com/22548Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9faf5cdf
    • Aliaksandr Valialkin's avatar
      cmd/vet: improve checking unkeyed fields in composite literals · 22db3c5a
      Aliaksandr Valialkin authored
      - Simplified the code.
      
      - Removed types for slice aliases from composite literals' whitelist, since they
      are properly handled by vet.
      
      Fixes #15408
      Updates #9171
      Updates #11041
      
      Change-Id: Ia1806c9eb3f327c09d2e28da4ffdb233b5a159b0
      Reviewed-on: https://go-review.googlesource.com/22318
      Run-TryBot: Rob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      22db3c5a
    • Robert Griesemer's avatar
      cmd/compile: have all or no parameter named in exported signatures · 80e9a7f0
      Robert Griesemer authored
      Binary export format only.
      
      Make sure we don't accidentally export an unnamed parameter
      in signatures which expect all named parameters; otherwise
      we crash during import. Appears to happen for _ (blank)
      parameter names, as observed in method signatures such as
      the one at: x/tools/godoc/analysis/analysis.go:76.
      
      Fixes #15470.
      
      TBR=mdempsky
      
      Change-Id: I1b1184bf08c4c09d8a46946539c4b8c341acdb84
      Reviewed-on: https://go-review.googlesource.com/22543Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      80e9a7f0
    • Robert Griesemer's avatar
      cmd/compile: use correct (field/method) node for position info · e8d4ffb7
      Robert Griesemer authored
      Position info for fields and methods was based on the wrong node
      in the new export format, leading to position info for empty
      file names and 0 line numbers. Use correct node now.
      
      Due to compact delta encoding, there is no difference in export
      format size. In fact, because encoding of "no line changed" is
      uncommon and thus a bit more expensive, in many cases the data
      is now slightly shorter.
      
      Stats for export data size (pachage, before, after, delta%):
      
                                               archive/tar     5128     5025  -1%
                                               archive/zip     7672     7515  -1%
                                                     bufio     3486     3377  -2%
                                                     bytes     4879     4821   0%
                                             cmd/addr2line       66       66   0%
                                                   cmd/api    14033    13970   0%
                                                   cmd/asm       60       60   0%
                                     cmd/asm/internal/arch    11659    11647   0%
                                      cmd/asm/internal/asm    13858    13766   0%
                                    cmd/asm/internal/flags      306      300  -1%
                                      cmd/asm/internal/lex    15684    15623   0%
                                                   cmd/cgo    15383    15298   0%
                                               cmd/compile       63       63   0%
                                cmd/compile/internal/amd64      838      838   0%
                                  cmd/compile/internal/arm     7333     7323   0%
                                cmd/compile/internal/arm64    19953    19951   0%
                                  cmd/compile/internal/big     8943     9043   1%
                                   cmd/compile/internal/gc    57465    56801   0%
                               cmd/compile/internal/mips64      645      645   0%
                                cmd/compile/internal/ppc64      695      695   0%
                                cmd/compile/internal/s390x      553      553   0%
                                  cmd/compile/internal/ssa    34883    34559   0%
                                  cmd/compile/internal/x86      744      744   0%
                                                 cmd/cover     4961     4892   0%
                                                  cmd/dist      145      145   0%
                                                   cmd/doc     8891     8853   0%
                                               cmd/expdump       67       67   0%
                                                   cmd/fix      422      406  -3%
                                                    cmd/go     9951     9747  -1%
                                                 cmd/gofmt       66       66   0%
                                          cmd/internal/bio     6378     6340   0%
                                       cmd/internal/gcprog      684      644  -5%
                                        cmd/internal/goobj     1276     1193  -6%
                                          cmd/internal/obj    12908    12551  -2%
                                      cmd/internal/obj/arm    10074    10053   0%
                                    cmd/internal/obj/arm64    17723    17699   0%
                                     cmd/internal/obj/mips    12573    12530   0%
                                    cmd/internal/obj/ppc64    15352    15330   0%
                                    cmd/internal/obj/s390x    18785    18769   0%
                                      cmd/internal/obj/x86    23586    23551   0%
                                      cmd/internal/objfile    17148    17359   1%
                               cmd/internal/pprof/commands     1948     1930   0%
                                 cmd/internal/pprof/driver    11123    11095   0%
                                  cmd/internal/pprof/fetch     8931     8907   0%
                                 cmd/internal/pprof/plugin    15335    15221   0%
                                cmd/internal/pprof/profile     8493     8370   0%
                                 cmd/internal/pprof/report     9273     9214   0%
                                    cmd/internal/pprof/svg     1589     1589   0%
                             cmd/internal/pprof/symbolizer     8737     8727   0%
                                cmd/internal/pprof/symbolz     8277     8346   1%
                               cmd/internal/pprof/tempfile     4319     4317   0%
                                          cmd/internal/sys      622      603  -2%
        cmd/internal/unvendor/golang.org/x/arch/arm/armasm    79231    79148   0%
        cmd/internal/unvendor/golang.org/x/arch/x86/x86asm    11761    11726   0%
                                                  cmd/link       60       60   0%
                                   cmd/link/internal/amd64    11190    11178   0%
                                     cmd/link/internal/arm      204      204   0%
                                   cmd/link/internal/arm64      210      210   0%
                                      cmd/link/internal/ld    60670    59758  -1%
                                  cmd/link/internal/mips64      213      213   0%
                                   cmd/link/internal/ppc64      211      211   0%
                                   cmd/link/internal/s390x      210      210   0%
                                     cmd/link/internal/x86      203      203   0%
                                                    cmd/nm       57       57   0%
                                               cmd/objdump       64       64   0%
                                                  cmd/pack     4968     4908   0%
                                                 cmd/pprof       63       63   0%
                                                 cmd/trace      828      782  -5%
                                                   cmd/vet    13485    13503   0%
                                cmd/vet/internal/whitelist      109      109   0%
                                                  cmd/yacc     1315     1269  -2%
                                            compress/bzip2     2561     2506  -1%
                                            compress/flate     4906     4748  -2%
                                             compress/gzip     7788     7717   0%
                                              compress/lzw      406      402   0%
                                             compress/zlib     4739     4712   0%
                                            container/heap      265      257  -2%
                                            container/list     1506     1450  -3%
                                            container/ring      556      536  -3%
                                                   context     3552     3527   0%
                                                    crypto      864      834  -2%
                                                crypto/aes      313      311   0%
                                             crypto/cipher     1139     1138   0%
                                                crypto/des      317      315   0%
                                                crypto/dsa     5326     5304   0%
                                              crypto/ecdsa     6383     6364   0%
                                           crypto/elliptic     5983     6063   1%
                                               crypto/hmac      258      256   0%
                                                crypto/md5      722      700  -2%
                                               crypto/rand     4996     4993   0%
                                                crypto/rc4      327      317  -2%
                                                crypto/rsa     6763     6722   0%
                                               crypto/sha1      767      744  -2%
                                             crypto/sha256      348      348   0%
                                             crypto/sha512      487      487   0%
                                             crypto/subtle      620      620   0%
                                                crypto/tls    24344    24083   0%
                                               crypto/x509    17473    17524   0%
                                          crypto/x509/pkix     9682     9596   0%
                                              database/sql     8099     7831  -2%
                                       database/sql/driver     1556     1500  -3%
                                               debug/dwarf     9358     9010  -3%
                                                 debug/elf    28226    27882   0%
                                               debug/gosym     2472     2333  -5%
                                               debug/macho     9032     8830  -1%
                                                  debug/pe     8561     8328  -2%
                                            debug/plan9obj     1347     1295  -3%
                                                  encoding      275      261  -4%
                                          encoding/ascii85      775      738  -4%
                                             encoding/asn1     1280     1246  -2%
                                           encoding/base32     1207     1146  -4%
                                           encoding/base64     1471     1407  -3%
                                           encoding/binary     2430     2386  -1%
                                              encoding/csv     4347     4280  -1%
                                              encoding/gob    13488    13387   0%
                                              encoding/hex      665      646  -2%
                                             encoding/json    11763    11592   0%
                                              encoding/pem      283      273  -3%
                                              encoding/xml    13804    13631   0%
                                                    errors      166      162  -1%
                                                    expvar     1193     1139  -4%
                                                      flag     6896     6964   1%
                                                       fmt     1247     1213  -2%
                                                    go/ast    15797    15473  -1%
                                                  go/build     6497     6336  -1%
                                               go/constant     1846     1820   0%
                                                    go/doc     3942     3871  -1%
                                                 go/format     1854     1850   0%
                                               go/importer     1702     1695   0%
                                 go/internal/gccgoimporter     2084     2063   0%
                                    go/internal/gcimporter     3236     3253   1%
                                                 go/parser     7377     7371   0%
                                                go/printer     2480     2469   0%
                                                go/scanner     3806     3733  -1%
                                                  go/token     3579     3523  -1%
                                                  go/types    26514    26117   0%
                                                      hash      323      295  -8%
                                              hash/adler32      568      554  -1%
                                                hash/crc32      843      825  -1%
                                                hash/crc64      758      739  -2%
                                                  hash/fnv     1583     1530  -2%
                                                      html      113      113   0%
                                             html/template    16957    16937   0%
                                                     image    11470    11045  -3%
                                               image/color     2566     2503  -1%
                                       image/color/palette      165      163   0%
                                                image/draw     2543     2522   0%
                                                 image/gif     3467     3439   0%
                                  image/internal/imageutil     3481     3479   0%
                                                image/jpeg     2725     2717   0%
                                                 image/png     2702     2689   0%
                                         index/suffixarray     5802     5777   0%
                                             internal/race      274      274   0%
                                     internal/singleflight      756      718  -4%
                           internal/syscall/windows/sysdll      162      162   0%
                                          internal/testenv     5288     5276   0%
                                            internal/trace     1853     1768  -4%
                                                        io     3425     3349  -1%
                                                 io/ioutil     4768     4756   0%
                                                       log     4173     4224   1%
                                                log/syslog     5049     4996   0%
                                                      math     4343     4343   0%
                                                  math/big     8779     8817   0%
                                                math/cmplx     1580     1580   0%
                                                 math/rand      944      982   4%
                                                      mime     2313     2298   0%
                                            mime/multipart     5021     4922  -1%
                                      mime/quotedprintable     2049     2008  -1%
                                                       net    19332    19090   0%
                                                  net/http    50404    49542  -1%
                                              net/http/cgi    22533    22637   0%
                                        net/http/cookiejar     5488     5431   0%
                                             net/http/fcgi    20557    20512   0%
                                         net/http/httptest    30350    30255   0%
                                         net/http/httputil    24045    23964   0%
                                         net/http/internal     2579     2550   0%
                                            net/http/pprof    20307    20258   0%
                                     net/internal/socktest     2227     2159  -2%
                                                  net/mail     5086     5054   0%
                                                   net/rpc    28365    28208   0%
                                           net/rpc/jsonrpc    12805    12722   0%
                                                  net/smtp    19975    19887   0%
                                             net/textproto     4558     4466  -1%
                                                   net/url     1391     1326  -4%
                                                        os    10372    10195  -1%
                                                   os/exec     7814     7928   1%
                                                 os/signal      239      237   0%
                                                   os/user      735      717  -1%
                                                      path      391      391   0%
                                             path/filepath     4136     4136   0%
                                                   reflect     6258     5893  -5%
                                                    regexp     5808     5623  -2%
                                             regexp/syntax     3118     3077   0%
                                                   runtime    11685    10912  -6%
                                               runtime/cgo       18       18   0%
                                             runtime/debug     3320     3304   0%
                                   runtime/internal/atomic      728      728   0%
                                      runtime/internal/sys     2287     2287   0%
                                             runtime/pprof      611      587  -3%
                                              runtime/race       19       19   0%
                                             runtime/trace      145      143   0%
                                                      sort     1229     1206  -1%
                                                   strconv     1752     1744   0%
                                                   strings     3809     3775   0%
                                                      sync     1331     1306  -1%
                                               sync/atomic     1135     1130   0%
                                                   syscall    46280    45722   0%
                                                   testing     7558     7284  -3%
                                            testing/iotest     1122     1071  -4%
                                             testing/quick     5656     5609   0%
                                              text/scanner     3367     3312  -1%
                                            text/tabwriter     2810     2755  -1%
                                             text/template    15613    15595   0%
                                       text/template/parse     9499     9040  -4%
                                                      time     5515     5395  -1%
                                                   unicode     4357     4344   0%
                                             unicode/utf16      583      583   0%
                                              unicode/utf8      970      970   0%
                       vendor/golang.org/x/net/http2/hpack     4105     4012  -1%
                                                   average  1524284  1509610   0%
      
      Change-Id: Ibe1ce098c7c575965389c1cad368c62c2cea256a
      Reviewed-on: https://go-review.googlesource.com/22536
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      e8d4ffb7
    • Mikio Hara's avatar
      net: fix misrecongnization of IPv6 zone on Windows · c04bc70c
      Mikio Hara authored
      Fixes #15463.
      
      Change-Id: Ic85886861c650ffcb71240d847941534152b92bc
      Reviewed-on: https://go-review.googlesource.com/22540
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      c04bc70c
    • David du Colombier's avatar
      net/http: skip TestTransportRemovesDeadIdleConnections on Plan 9 · cad04e7e
      David du Colombier authored
      Updates #15464.
      
      Change-Id: If3221034bb10751c6fcf1fbeba401a879c18079f
      Reviewed-on: https://go-review.googlesource.com/22513
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      cad04e7e
    • Dave Cheney's avatar
      cmd/compile/internal/gc: unexport {J,S,F,H,B,V}conv · 2da642a9
      Dave Cheney authored
      Updates #15462
      
      Unexport Jconv, Sconv, Fconv, Hconv, Bconv, and VConv as they are
      not referenced outside internal/gc.
      
      Econv was only called by EType.String, so merge it into that method.
      
      Change-Id: Iad9b06078eb513b85a03a43cd9eb9366477643d1
      Reviewed-on: https://go-review.googlesource.com/22531Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Dave Cheney <dave@cheney.net>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      2da642a9
  3. 27 Apr, 2016 6 commits