1. 01 Mar, 2017 23 commits
    • Brad Fitzpatrick's avatar
      net/http: deflake TestClientRedirect308NoGetBody · ffe923f6
      Brad Fitzpatrick authored
      In an unrelated CL I found a way to increase the likelihood of latent
      flaky tests and found this one.
      
      This is just like yesterday's https://golang.org/cl/37624 and dozens
      before it (all remnants from the great net/http test parallelization
      of Nov 2016 in https://golang.org/cl/32684).
      
      Change-Id: I3fe61d1645062e5109206ff27d74f573ef6ebb2e
      Reviewed-on: https://go-review.googlesource.com/37627
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      ffe923f6
    • Lynn Boger's avatar
      cmd/compile: intrinsify atomics on ppc64x · 95c9583a
      Lynn Boger authored
      This adds the necessary changes so that atomics are treated as
      intrinsics on ppc64x.
      
      The implementations of And8 and Or8 require power8 for
      both ppc64 and ppc64le.  This is a new requirement
      for ppc64.
      
      Fixes #8739
      
      Change-Id: Icb85e2755a49166ee3652668279f6ed5ebbca901
      Reviewed-on: https://go-review.googlesource.com/36832Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      95c9583a
    • Andreas Auernhammer's avatar
      crypto: add BLAKE2b and BLAKE2s hash constants · a6a0b190
      Andreas Auernhammer authored
      Fixes golang/go#19060
      Change-Id: I1844edc3dcccc8d83a11d1145b60b2b92f2658ca
      Reviewed-on: https://go-review.googlesource.com/36876Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      a6a0b190
    • Joe Shaw's avatar
      encoding/pem: refuse extra data on ending line · d271576a
      Joe Shaw authored
      Previously the code didn't check for extra data after the final five
      dashes of the ending line of a PEM block.
      
      Fixes #19147
      Fixes #7042
      
      Change-Id: Idaab2390914a2bed8c2c12b14dfb6d68233fdfec
      Reviewed-on: https://go-review.googlesource.com/37147Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      d271576a
    • Robert Griesemer's avatar
      go/internal/srcimporter: report reimport of incomplete packages · b2a2a605
      Robert Griesemer authored
      See the issue below for details.
      
      For #19337.
      
      Change-Id: I7637dcd4408f1bc4a9b3050a107aadb4de6f950b
      Reviewed-on: https://go-review.googlesource.com/37620Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      b2a2a605
    • Lynn Boger's avatar
      runtime, cmd/go: roll back stale message, test detail · e54bc92a
      Lynn Boger authored
      Some debugging code was recently added to:
      1) provide more detail for the stale reason when it is
      determined that a package is stale
      2) provide file and package time and date information when
      it is determined that runtime.a is stale
      
      This backs out those those debugging messages.
      
      Fixes #19116
      
      Change-Id: I8dd0cbe29324820275b481d8bbb78ff2c5fbc362
      Reviewed-on: https://go-review.googlesource.com/37382
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      e54bc92a
    • David du Colombier's avatar
      cmd/vendor/github.com/google/pprof: refresh from upstream · 32bb13ab
      David du Colombier authored
      Updating to commit b1c91b9f8fa7647e4c43c96c50f245df551f7013
      from github.com/google/pprof
      
      Fixes #19342.
      
      Change-Id: Iaaa283cdce3f9bf3e5fe713be7d23c477b579092
      Reviewed-on: https://go-review.googlesource.com/37634
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      32bb13ab
    • Lynn Boger's avatar
      cmd/compile: use reg moves for int <-> float conversions on ppc64x · 44053de3
      Lynn Boger authored
      This makes a change in the SSA code generated for OpPPC64Xf2i64
      and OpPPC64Xi2f64 to use register based instructions to convert
      between float and integer.  This will require at least power8.
      Currently the conversion is done by storing to and loading
      from memory, which is more expensive.
      
      This improves some of the math functions:
      
      BenchmarkExp-128                     74.1          66.8          -9.85%
      BenchmarkExpGo-128                   87.4          66.3          -24.14%
      BenchmarkExp2-128                    72.2          64.3          -10.94%
      BenchmarkExp2Go-128                  74.3          65.9          -11.31%
      
      BenchmarkLgamma-128                  51.0          39.7          -22.16%
      BenchmarkLog-128                     42.9          40.6          -5.36%
      BenchmarkLogb-128                    11.5          9.16          -20.35%
      BenchmarkLog1p-128                   38.9          36.2          -6.94%
      
      BenchmarkSin-128                     29.5          23.7          -19.66%
      BenchmarkTan-128                     32.8          27.4          -16.46%
      
      Fixes #18922
      
      Change-Id: I8e1cf14d3880d7cd720dc5188dd174cba1f7fef7
      Reviewed-on: https://go-review.googlesource.com/36725Reviewed-by: 's avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      44053de3
    • Brad Fitzpatrick's avatar
      net/http: fix flaky TestClientRedirect308NoLocation · 3123df34
      Brad Fitzpatrick authored
      This was a t.Parallel test but it was using the global DefaultTransport
      via the global Get func.
      
      Use a private Transport that won't have its CloseIdleConnections etc
      methods called by other tests.
      
      (I hit this flake myself while testing a different change.)
      
      Change-Id: If0665e3e8580ee198f8e5f3079bfaea55f036eca
      Reviewed-on: https://go-review.googlesource.com/37624
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      3123df34
    • Kevin Burke's avatar
      os: add OpenFile example for appending data · 6d32b1a3
      Kevin Burke authored
      Fixes #19329.
      
      Change-Id: I6d8bb112a56d751a6d3ea9bd6021803cb9f59234
      Reviewed-on: https://go-review.googlesource.com/37619Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6d32b1a3
    • Josh Bleecher Snyder's avatar
      Revert "cmd/vet/all: remove pprof from the whitelist" · 9bd1cc3f
      Josh Bleecher Snyder authored
      This reverts commit 12b6c181.
      
      Reason for revert: Broke vet builder. #19322 was not fully fixed.
      
      Change-Id: Id85131d4d0b8915480d65e3532da62b769463d70
      Reviewed-on: https://go-review.googlesource.com/37625Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      9bd1cc3f
    • Heschi Kreinick's avatar
      testing: fix Benchmark() to start at 1 iteration, not 100 · 5e90bbcc
      Heschi Kreinick authored
      The run1 call removed in golang.org/cl/36990 was necessary to
      initialize the duration of the benchmark. With it gone, the math in
      launch() starts from 100. This doesn't work out well for second-long
      benchmark methods. Put it back.
      
      Updates #18815
      
      Change-Id: I461f3466c805d0c61124a2974662f7ad45335794
      Reviewed-on: https://go-review.googlesource.com/37530
      Run-TryBot: Heschi Kreinick <heschi@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMarcel van Lohuizen <mpvl@golang.org>
      5e90bbcc
    • Alex Brainman's avatar
      cmd/link: write dwarf sections · 29f06196
      Alex Brainman authored
      Also stop skipping TestExternalLinkerDWARF and
      TestDefaultLinkerDWARF.
      
      Fixes #10776.
      
      Change-Id: Ia596a684132e3cdee59ce5539293eedc1752fe5a
      Reviewed-on: https://go-review.googlesource.com/36983Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      29f06196
    • Alex Brainman's avatar
      cmd/link: write dwarf relocations · aada4903
      Alex Brainman authored
      For #10776.
      
      Change-Id: I11dd441d8e5d6316889ffa8418df8b58c57c677d
      Reviewed-on: https://go-review.googlesource.com/36982Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      aada4903
    • Ian Lance Taylor's avatar
      os: don't use waitid on Darwin · 15442178
      Ian Lance Taylor authored
      According to issue #19314 waitid on Darwin returns if the process is
      stopped, even though we specify WEXITED.
      
      Fixes #19314.
      
      Change-Id: I95faf196c11e43b7741efff79351bab45c811bc2
      Reviewed-on: https://go-review.googlesource.com/37610
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      15442178
    • Dave Cheney's avatar
      cmd/compile/internal/ssa: remove unused PrintFunc variable · d945b286
      Dave Cheney authored
      Change-Id: I8c581eec77beacaddc0aac29e7d380a4d5ca8acc
      Reviewed-on: https://go-review.googlesource.com/37551
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d945b286
    • Robert Griesemer's avatar
      go/internal/srcimporter: parse files concurrently (fixes TODO) · c861a4c7
      Robert Griesemer authored
      Passes go test -race.
      
      Change-Id: I14b5b1b1a8ad1e43d60013823d71d78a6519581f
      Reviewed-on: https://go-review.googlesource.com/37588
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c861a4c7
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: separate builtin and real runtime packages · b6c600fc
      Matthew Dempsky authored
      The builtin runtime package definitions intentionally diverge from the
      actual runtime package's, but this only works as long as they never
      overlap.
      
      To make it easier to expand the builtin runtime package, this CL now
      loads their definitions into a logically separate "go.runtime"
      package.  By resetting the package's Prefix field to "runtime", any
      references to builtin definitions will still resolve against the real
      package runtime.
      
      Fixes #14482.
      
      Passes toolstash -cmp.
      
      Change-Id: I539c0994deaed4506a331f38c5b4d6bc8c95433f
      Reviewed-on: https://go-review.googlesource.com/37538
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      b6c600fc
    • Brad Fitzpatrick's avatar
      cmd/vet/all: remove pprof from the whitelist · 12b6c181
      Brad Fitzpatrick authored
      Updates #19322
      
      Change-Id: I610f40d874f499e52db3356a3da54538dac55242
      Reviewed-on: https://go-review.googlesource.com/37618
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      12b6c181
    • Josh Bleecher Snyder's avatar
      cmd/compile: recognize bit test patterns on amd64 · 21831355
      Josh Bleecher Snyder authored
      Updates #18943
      
      Change-Id: If3080d6133bb6d2710b57294da24c90251ab4e08
      Reviewed-on: https://go-review.googlesource.com/36329
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      21831355
    • Heschi Kreinick's avatar
      cmd/compile, cmd/asm: remove Link.Plists · ac7761e1
      Heschi Kreinick authored
      Link.Plists never contained more than one Plist, and sometimes none.
      Passing around the Plist being worked on is straightforward and makes
      the data flow easier to follow.
      
      Change-Id: I79cb30cb2bd3d319fdbb1dfa5d35b27fcb748e5c
      Reviewed-on: https://go-review.googlesource.com/37169
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      ac7761e1
    • Raul Silvera's avatar
      cmd/vendor/github.com/google/pprof: refresh from upstream · ac4a8652
      Raul Silvera authored
      Updating to commit e41fb7133e7ebb84ba6af2f6443032c728db26d3
      from github.com/google/pprof
      
      This fixes #19322
      
      Change-Id: Ia1c008a09f46ed19ef176046e38868eacb715682
      Reviewed-on: https://go-review.googlesource.com/37617Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ac4a8652
    • Robert Griesemer's avatar
      compress/flate: use math/bits.Reverse8/16 instead of local implementation · bca03206
      Robert Griesemer authored
      No measurable impact on performance (specifically, no degradation).
      Reverse is used in Huffman en/de-coding. For completeness, here are
      all the speed-related benchmark results:
      
      name                             old time/op    new time/op    delta
      Decode/Digits/Huffman/1e4-8         181µs ± 0%     178µs ± 1%   ~             (p=0.100 n=3+3)
      Decode/Digits/Huffman/1e5-8        1.60ms ± 3%    1.56ms ± 3%   ~             (p=0.400 n=3+3)
      Decode/Digits/Huffman/1e6-8        15.7ms ± 1%    15.3ms ± 3%   ~             (p=0.700 n=3+3)
      Decode/Digits/Speed/1e4-8           179µs ± 0%     180µs ± 0%   ~             (p=0.200 n=3+3)
      Decode/Digits/Speed/1e5-8          1.68ms ± 0%    1.66ms ± 3%   ~             (p=0.700 n=3+3)
      Decode/Digits/Speed/1e6-8          16.6ms ± 2%    16.6ms ± 5%   ~             (p=0.700 n=3+3)
      Decode/Digits/Default/1e4-8         179µs ± 1%     178µs ± 1%   ~             (p=0.700 n=3+3)
      Decode/Digits/Default/1e5-8        1.62ms ± 3%    1.62ms ± 4%   ~             (p=1.000 n=3+3)
      Decode/Digits/Default/1e6-8        16.0ms ± 2%    16.0ms ± 3%   ~             (p=1.000 n=3+3)
      Decode/Digits/Compression/1e4-8     179µs ± 1%     179µs ± 0%   ~             (p=0.200 n=3+3)
      Decode/Digits/Compression/1e5-8    1.62ms ± 2%    1.62ms ± 3%   ~             (p=1.000 n=3+3)
      Decode/Digits/Compression/1e6-8    16.1ms ± 3%    16.0ms ± 3%   ~             (p=1.000 n=3+3)
      Decode/Twain/Huffman/1e4-8          205µs ± 2%     207µs ± 1%   ~             (p=1.000 n=3+3)
      Decode/Twain/Huffman/1e5-8         1.77ms ± 2%    1.77ms ± 4%   ~             (p=0.700 n=3+3)
      Decode/Twain/Huffman/1e6-8         17.4ms ± 2%    17.4ms ± 3%   ~             (p=1.000 n=3+3)
      Decode/Twain/Speed/1e4-8            186µs ± 1%     186µs ± 1%   ~             (p=0.400 n=3+3)
      Decode/Twain/Speed/1e5-8           1.53ms ± 2%    1.52ms ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Speed/1e6-8           14.9ms ± 1%    14.8ms ± 1%   ~             (p=1.000 n=3+3)
      Decode/Twain/Default/1e4-8          176µs ± 1%     174µs ± 0%   ~             (p=0.200 n=3+3)
      Decode/Twain/Default/1e5-8         1.30ms ± 2%    1.31ms ± 1%   ~             (p=0.700 n=3+3)
      Decode/Twain/Default/1e6-8         12.6ms ± 3%    12.5ms ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Compression/1e4-8      177µs ± 0%     174µs ± 1%   ~             (p=0.100 n=3+3)
      Decode/Twain/Compression/1e5-8     1.30ms ± 1%    1.31ms ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Compression/1e6-8     12.5ms ± 1%    12.5ms ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Huffman/1e4-8        47.4µs ± 1%    46.5µs ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Huffman/1e5-8         453µs ± 2%     446µs ± 1%   ~             (p=0.700 n=3+3)
      Encode/Digits/Huffman/1e6-8        4.44ms ± 3%    4.39ms ± 0%   ~             (p=1.000 n=3+3)
      Encode/Digits/Speed/1e4-8           190µs ± 4%     185µs ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Speed/1e5-8          1.78ms ± 5%    1.75ms ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Speed/1e6-8          17.9ms ± 7%    17.3ms ± 1%   ~             (p=0.400 n=3+3)
      Encode/Digits/Default/1e4-8         366µs ± 1%     361µs ± 0%   ~             (p=0.200 n=3+3)
      Encode/Digits/Default/1e5-8        5.58ms ± 5%    5.44ms ± 1%   ~             (p=0.400 n=3+3)
      Encode/Digits/Default/1e6-8        59.0ms ± 3%    58.2ms ± 1%   ~             (p=0.700 n=3+3)
      Encode/Digits/Compression/1e4-8     369µs ± 3%     362µs ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Compression/1e5-8    5.50ms ± 2%    5.47ms ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Compression/1e6-8    59.4ms ± 2%    58.5ms ± 1%   ~             (p=0.400 n=3+3)
      Encode/Twain/Huffman/1e4-8         64.4µs ± 3%    64.7µs ± 1%   ~             (p=0.700 n=3+3)
      Encode/Twain/Huffman/1e5-8          526µs ± 1%     526µs ± 2%   ~             (p=1.000 n=3+3)
      Encode/Twain/Huffman/1e6-8         5.18ms ± 2%    5.17ms ± 1%   ~             (p=0.700 n=3+3)
      Encode/Twain/Speed/1e4-8            206µs ± 1%     204µs ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Speed/1e5-8           1.73ms ± 2%    1.70ms ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Speed/1e6-8           16.7ms ± 0%    16.7ms ± 1%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e4-8          423µs ± 3%     418µs ± 1%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e5-8         6.34ms ± 4%    6.23ms ± 0%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e6-8         68.0ms ± 3%    67.5ms ± 0%   ~             (p=0.700 n=3+3)
      Encode/Twain/Compression/1e4-8      435µs ± 3%     424µs ± 0%   ~             (p=0.700 n=3+3)
      Encode/Twain/Compression/1e5-8     7.01ms ± 1%    6.92ms ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Compression/1e6-8     77.1ms ± 4%    75.5ms ± 1%   ~             (p=0.400 n=3+3)
      
      name                             old speed      new speed      delta
      Decode/Digits/Huffman/1e4-8      55.2MB/s ± 0%  56.2MB/s ± 1%   ~             (p=0.100 n=3+3)
      Decode/Digits/Huffman/1e5-8      62.4MB/s ± 3%  64.1MB/s ± 3%   ~             (p=0.400 n=3+3)
      Decode/Digits/Huffman/1e6-8      63.8MB/s ± 1%  65.3MB/s ± 3%   ~             (p=0.700 n=3+3)
      Decode/Digits/Speed/1e4-8        55.8MB/s ± 0%  55.4MB/s ± 0%   ~             (p=0.200 n=3+3)
      Decode/Digits/Speed/1e5-8        59.6MB/s ± 0%  60.3MB/s ± 3%   ~             (p=0.700 n=3+3)
      Decode/Digits/Speed/1e6-8        60.1MB/s ± 2%  60.3MB/s ± 4%   ~             (p=0.700 n=3+3)
      Decode/Digits/Default/1e4-8      55.8MB/s ± 1%  56.1MB/s ± 1%   ~             (p=0.700 n=3+3)
      Decode/Digits/Default/1e5-8      61.8MB/s ± 3%  61.7MB/s ± 4%   ~             (p=1.000 n=3+3)
      Decode/Digits/Default/1e6-8      62.4MB/s ± 2%  62.4MB/s ± 3%   ~             (p=1.000 n=3+3)
      Decode/Digits/Compression/1e4-8  55.7MB/s ± 1%  56.0MB/s ± 0%   ~             (p=0.300 n=3+3)
      Decode/Digits/Compression/1e5-8  61.7MB/s ± 2%  61.9MB/s ± 3%   ~             (p=1.000 n=3+3)
      Decode/Digits/Compression/1e6-8  62.2MB/s ± 3%  62.6MB/s ± 3%   ~             (p=1.000 n=3+3)
      Decode/Twain/Huffman/1e4-8       48.8MB/s ± 2%  48.4MB/s ± 1%   ~             (p=1.000 n=3+3)
      Decode/Twain/Huffman/1e5-8       56.4MB/s ± 2%  56.6MB/s ± 4%   ~             (p=0.700 n=3+3)
      Decode/Twain/Huffman/1e6-8       57.6MB/s ± 2%  57.5MB/s ± 3%   ~             (p=1.000 n=3+3)
      Decode/Twain/Speed/1e4-8         53.7MB/s ± 1%  53.9MB/s ± 1%   ~             (p=0.400 n=3+3)
      Decode/Twain/Speed/1e5-8         65.5MB/s ± 2%  65.6MB/s ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Speed/1e6-8         66.9MB/s ± 1%  67.4MB/s ± 1%   ~             (p=1.000 n=3+3)
      Decode/Twain/Default/1e4-8       56.9MB/s ± 1%  57.3MB/s ± 0%   ~             (p=0.200 n=3+3)
      Decode/Twain/Default/1e5-8       77.2MB/s ± 2%  76.6MB/s ± 1%   ~             (p=0.700 n=3+3)
      Decode/Twain/Default/1e6-8       79.3MB/s ± 3%  80.0MB/s ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Compression/1e4-8   56.4MB/s ± 0%  57.5MB/s ± 1%   ~             (p=0.100 n=3+3)
      Decode/Twain/Compression/1e5-8   76.8MB/s ± 1%  76.5MB/s ± 0%   ~             (p=0.700 n=3+3)
      Decode/Twain/Compression/1e6-8   80.1MB/s ± 1%  79.8MB/s ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Huffman/1e4-8       211MB/s ± 1%   215MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Huffman/1e5-8       221MB/s ± 2%   224MB/s ± 1%   ~             (p=0.700 n=3+3)
      Encode/Digits/Huffman/1e6-8       225MB/s ± 3%   228MB/s ± 0%   ~             (p=1.000 n=3+3)
      Encode/Digits/Speed/1e4-8        52.8MB/s ± 4%  54.1MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Speed/1e5-8        56.2MB/s ± 5%  57.0MB/s ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Speed/1e6-8        56.0MB/s ± 6%  57.7MB/s ± 1%   ~             (p=0.400 n=3+3)
      Encode/Digits/Default/1e4-8      27.3MB/s ± 1%  27.7MB/s ± 0%   ~             (p=0.200 n=3+3)
      Encode/Digits/Default/1e5-8      17.9MB/s ± 4%  18.4MB/s ± 1%   ~             (p=0.400 n=3+3)
      Encode/Digits/Default/1e6-8      17.0MB/s ± 3%  17.2MB/s ± 1%   ~             (p=0.500 n=3+3)
      Encode/Digits/Compression/1e4-8  27.1MB/s ± 3%  27.6MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Digits/Compression/1e5-8  18.2MB/s ± 2%  18.3MB/s ± 1%   ~             (p=1.000 n=3+3)
      Encode/Digits/Compression/1e6-8  16.9MB/s ± 2%  17.1MB/s ± 1%   ~             (p=0.400 n=3+3)
      Encode/Twain/Huffman/1e4-8        155MB/s ± 3%   155MB/s ± 1%   ~             (p=0.700 n=3+3)
      Encode/Twain/Huffman/1e5-8        190MB/s ± 1%   190MB/s ± 2%   ~             (p=1.000 n=3+3)
      Encode/Twain/Huffman/1e6-8        193MB/s ± 2%   193MB/s ± 1%   ~             (p=0.700 n=3+3)
      Encode/Twain/Speed/1e4-8         48.5MB/s ± 1%  49.1MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Speed/1e5-8         57.7MB/s ± 2%  59.0MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Speed/1e6-8         59.7MB/s ± 0%  59.7MB/s ± 1%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e4-8       23.6MB/s ± 3%  23.9MB/s ± 1%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e5-8       15.8MB/s ± 4%  16.1MB/s ± 0%   ~             (p=1.000 n=3+3)
      Encode/Twain/Default/1e6-8       14.7MB/s ± 3%  14.8MB/s ± 0%   ~             (p=0.700 n=3+3)
      Encode/Twain/Compression/1e4-8   23.0MB/s ± 3%  23.6MB/s ± 0%   ~             (p=0.700 n=3+3)
      Encode/Twain/Compression/1e5-8   14.3MB/s ± 1%  14.5MB/s ± 0%   ~             (p=0.100 n=3+3)
      Encode/Twain/Compression/1e6-8   13.0MB/s ± 4%  13.2MB/s ± 1%   ~             (p=0.400 n=3+3)
      
      Measured on a "quiet" (no browser running) 2.3 GHz Intel Core i7, running macOS 10.12.3.
      
      See also #19279.
      
      Change-Id: Ice759eb34eb37442b543957447c264e0aadc1fa9
      Reviewed-on: https://go-review.googlesource.com/37460
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      bca03206
  2. 28 Feb, 2017 17 commits
    • Robert Griesemer's avatar
      math/bits: move left-over functionality from bits_impl.go to bits.go · 32b41c8d
      Robert Griesemer authored
      Removes an extra function call for TrailingZeroes and thus may
      increase chances for inlining.
      
      Change-Id: Iefd8d4402dc89b64baf4e5c865eb3dadade623af
      Reviewed-on: https://go-review.googlesource.com/37613
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      32b41c8d
    • Josh Bleecher Snyder's avatar
      cmd/vet/all: disable cgo when running 'go install' · 09294ab7
      Josh Bleecher Snyder authored
      Change-Id: Iab1e84624c0288ebdd33fbe83bd60948b5d91fc4
      Reviewed-on: https://go-review.googlesource.com/37612Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      09294ab7
    • Brad Fitzpatrick's avatar
      os/exec: remove duplicate environment variables in Cmd.Start · e73f4894
      Brad Fitzpatrick authored
      Nobody intends to have duplicates anyway because it's so undefined
      and everything handles it so poorly.
      
      Removing duplicates automatically simplifies code and makes existing
      code do what people already expect.
      
      Fixes #12868
      
      Change-Id: I95eeba8c59ff94d0f018012a6f4e031aaabfd5d9
      Reviewed-on: https://go-review.googlesource.com/37586
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e73f4894
    • Martin Möhrmann's avatar
      strings: fix handling of invalid UTF-8 sequences in Map · 3c023f75
      Martin Möhrmann authored
      The new Map implementation introduced in golang.org/cl/33201
      did not differentiate if an invalid UTF-8 sequence was decoded
      or the RuneError rune. It would therefore always advance by
      3 bytes (which is the length of the RuneError rune) instead
      of 1 for an invalid sequences. This cl adds a check to correctly
      determine the length of bytes needed to advance to the next rune.
      
      Fixes #19330.
      
      Change-Id: I1e7f9333f3ef6068ffc64015bb0a9f32b0b7111d
      Reviewed-on: https://go-review.googlesource.com/37597
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      3c023f75
    • Keith Randall's avatar
      cmd/compile: simplify load+op rules · 0fe58bf6
      Keith Randall authored
      There's no need to use @block rules, as canMergeLoad makes sure that
      the load and op are already in the same block.
      With no @block needed, we also don't need to set the type explicitly.
      It can just be inherited from the op being rewritten.
      
      Noticed while working on #19284.
      
      Change-Id: Ied8bcc8058260118ff7e166093112e29107bcb7e
      Reviewed-on: https://go-review.googlesource.com/37585
      Run-TryBot: Keith Randall <khr@golang.org>
      Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0fe58bf6
    • Robert Griesemer's avatar
      go/types: implement SizesFor convenience function · 45055f21
      Robert Griesemer authored
      SizesFor returns a Sizes implementation for a supported architecture.
      Use functionality in srcimporter.
      
      Change-Id: I197e641b419c678030dfaab5c5b8c569fd0410f3
      Reviewed-on: https://go-review.googlesource.com/37583
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      45055f21
    • Robert Griesemer's avatar
      math/bits: faster LeadingZeros and Len functions · 83bc4a2f
      Robert Griesemer authored
      benchmark                     old ns/op     new ns/op     delta
      BenchmarkLeadingZeros-8       8.43          3.10          -63.23%
      BenchmarkLeadingZeros8-8      8.13          1.33          -83.64%
      BenchmarkLeadingZeros16-8     7.34          2.07          -71.80%
      BenchmarkLeadingZeros32-8     7.99          2.87          -64.08%
      BenchmarkLeadingZeros64-8     8.13          2.96          -63.59%
      
      Measured on 2.3 GHz Intel Core i7 running macOS 10.12.3.
      
      Change-Id: Id343531b408d42ac45f10c76f60e85bdb977f91e
      Reviewed-on: https://go-review.googlesource.com/37582Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      83bc4a2f
    • Robert Griesemer's avatar
      math/bits: faster TrailingZeroes8 · 9515cb51
      Robert Griesemer authored
      For sizes > 8, the existing code is faster.
      
      benchmark                     old ns/op     new ns/op     delta
      BenchmarkTrailingZeros8-8     1.95          1.29          -33.85%
      
      Measured on 2.3 GHz Intel Core i7 running macOS 10.12.3.
      
      Change-Id: I6f3a33ec633a2c544ec29693c141f2f99335c745
      Reviewed-on: https://go-review.googlesource.com/37581Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      9515cb51
    • Robert Griesemer's avatar
      math/bits: faster OnesCount using table lookups for sizes 8,16,32 · d7a659b1
      Robert Griesemer authored
      For uint64, the existing algorithm is faster.
      
      benchmark                  old ns/op     new ns/op     delta
      BenchmarkOnesCount8-8      1.95          0.97          -50.26%
      BenchmarkOnesCount16-8     2.54          1.39          -45.28%
      BenchmarkOnesCount32-8     2.61          1.96          -24.90%
      
      Measured on 2.3 GHz Intel Core i7 running macOS 10.12.3.
      
      Change-Id: I6cc42882fef3d24694720464039161e339a9ae99
      Reviewed-on: https://go-review.googlesource.com/37580Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d7a659b1
    • Josh Bleecher Snyder's avatar
      runtime: evacuate old map buckets more consistently · 064e44f2
      Josh Bleecher Snyder authored
      During map growth, buckets are evacuated in two ways.
      When a value is altered, its containing bucket is evacuated.
      Also, an evacuation mark is maintained and advanced every time.
      Prior to this CL, the evacuation mark was always incremented,
      even if the next bucket to be evacuated had already been evacuated.
      This CL changes evacuation mark advancement to skip previously
      evacuated buckets. This has the effect of making map evacuation both
      more aggressive and more consistent.
      
      Aggressive map evacuation is good. While the map is growing,
      map accesses must check two buckets, which may be far apart in memory.
      Map growth also delays garbage collection.
      And if map evacuation is not aggressive enough, there is a risk that
      a populate-once read-many map may be stuck permanently in map growth.
      This CL does not eliminate that possibility, but it shrinks the window.
      
      There is minimal impact on map benchmarks:
      
      name                         old time/op    new time/op    delta
      MapPop100-8                    12.4µs ±11%    12.4µs ± 7%    ~     (p=0.798 n=15+15)
      MapPop1000-8                    240µs ± 8%     235µs ± 8%    ~     (p=0.217 n=15+14)
      MapPop10000-8                  4.49ms ±10%    4.51ms ±15%    ~     (p=1.000 n=15+13)
      MegMap-8                       11.9ns ± 2%    11.8ns ± 0%  -1.01%  (p=0.000 n=15+11)
      MegOneMap-8                    9.30ns ± 1%    9.29ns ± 1%    ~     (p=0.955 n=14+14)
      MegEqMap-8                     31.9µs ± 5%    31.9µs ± 3%    ~     (p=0.935 n=15+15)
      MegEmptyMap-8                  2.41ns ± 2%    2.41ns ± 0%    ~     (p=0.594 n=12+14)
      SmallStrMap-8                  12.8ns ± 1%    12.7ns ± 1%    ~     (p=0.569 n=14+13)
      MapStringKeysEight_16-8        13.6ns ± 1%    13.7ns ± 2%    ~     (p=0.100 n=13+15)
      MapStringKeysEight_32-8        12.1ns ± 1%    12.1ns ± 2%    ~     (p=0.340 n=15+15)
      MapStringKeysEight_64-8        12.1ns ± 1%    12.1ns ± 2%    ~     (p=0.582 n=15+14)
      MapStringKeysEight_1M-8        12.0ns ± 1%    12.1ns ± 1%    ~     (p=0.267 n=15+14)
      IntMap-8                       7.96ns ± 1%    7.97ns ± 2%    ~     (p=0.991 n=15+13)
      RepeatedLookupStrMapKey32-8    15.8ns ± 2%    15.8ns ± 1%    ~     (p=0.393 n=15+14)
      RepeatedLookupStrMapKey1M-8    35.3µs ± 2%    35.3µs ± 1%    ~     (p=0.815 n=15+15)
      NewEmptyMap-8                  36.0ns ± 4%    36.4ns ± 7%    ~     (p=0.270 n=15+15)
      NewSmallMap-8                  85.5ns ± 1%    85.6ns ± 1%    ~     (p=0.674 n=14+15)
      MapIter-8                      89.9ns ± 6%    90.8ns ± 6%    ~     (p=0.467 n=15+15)
      MapIterEmpty-8                 10.0ns ±22%    10.0ns ±25%    ~     (p=0.846 n=15+15)
      SameLengthMap-8                4.18ns ± 1%    4.17ns ± 1%    ~     (p=0.653 n=15+14)
      BigKeyMap-8                    20.2ns ± 1%    20.1ns ± 1%  -0.82%  (p=0.002 n=15+15)
      BigValMap-8                    22.5ns ± 8%    22.3ns ± 6%    ~     (p=0.615 n=15+15)
      SmallKeyMap-8                  15.3ns ± 1%    15.3ns ± 1%    ~     (p=0.754 n=15+14)
      ComplexAlgMap-8                58.4ns ± 1%    58.7ns ± 1%  +0.52%  (p=0.000 n=14+15)
      
      There is a tiny but detectable difference in the compiler:
      
      name       old time/op      new time/op      delta
      Template        218ms ± 5%       219ms ± 4%    ~     (p=0.094 n=98+98)
      Unicode        93.6ms ± 5%      93.6ms ± 4%    ~     (p=0.910 n=94+95)
      GoTypes         596ms ± 5%       598ms ± 6%    ~     (p=0.533 n=98+100)
      Compiler        2.72s ± 3%       2.72s ± 4%    ~     (p=0.238 n=100+99)
      SSA             4.11s ± 3%       4.11s ± 3%    ~     (p=0.864 n=99+98)
      Flate           129ms ± 6%       129ms ± 4%    ~     (p=0.522 n=98+96)
      GoParser        151ms ± 4%       151ms ± 4%  -0.48%  (p=0.017 n=96+96)
      Reflect         379ms ± 3%       376ms ± 4%  -0.57%  (p=0.011 n=99+99)
      Tar             112ms ± 5%       112ms ± 6%    ~     (p=0.688 n=93+95)
      XML             214ms ± 4%       214ms ± 5%    ~     (p=0.968 n=100+99)
      StdCmd          16.2s ± 2%       16.2s ± 2%  -0.26%  (p=0.048 n=99+99)
      
      name       old user-ns/op   new user-ns/op   delta
      Template   252user-ms ± 4%  250user-ms ± 4%  -0.63%  (p=0.020 n=98+97)
      Unicode    113user-ms ± 7%  114user-ms ± 5%    ~     (p=0.057 n=97+94)
      GoTypes    776user-ms ± 5%  777user-ms ± 5%    ~     (p=0.375 n=97+96)
      Compiler   3.61user-s ± 3%  3.60user-s ± 3%    ~     (p=0.445 n=98+93)
      SSA        5.84user-s ± 6%  5.85user-s ± 5%    ~     (p=0.542 n=100+95)
      Flate      154user-ms ± 5%  154user-ms ± 5%    ~     (p=0.699 n=99+99)
      GoParser   184user-ms ± 6%  183user-ms ± 4%    ~     (p=0.557 n=98+95)
      Reflect    461user-ms ± 5%  462user-ms ± 4%    ~     (p=0.853 n=97+99)
      Tar        130user-ms ± 5%  129user-ms ± 6%    ~     (p=0.567 n=93+100)
      XML        257user-ms ± 6%  258user-ms ± 6%    ~     (p=0.205 n=99+100)
      
      Change-Id: Id92dd54a152904069aac415e6aaaab5c67f5f476
      Reviewed-on: https://go-review.googlesource.com/37011Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      064e44f2
    • Matthew Dempsky's avatar
      cmd/internal/obj: remove unused Getcallerpc function · 9bc67bb4
      Matthew Dempsky authored
      Change-Id: I0c7b677657326f318e906e109cbda0cfa78c4973
      Reviewed-on: https://go-review.googlesource.com/37537
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMichael Hudson-Doyle <michael.hudson@canonical.com>
      9bc67bb4
    • philhofer's avatar
      cmd/compile/ssa: more aggressive constant folding · 379567aa
      philhofer authored
      Add rewrite rules that canonicalize the location
      of constants in expressions, and fold conststants
      that appear in operations that can be trivially
      reassociated.
      
      After this change, the compiler constant-folds
      expressions like "4 + x - 1" and "4 & x & 1"
      
      Benchmarks affected on darwin/amd64:
      
      name                     old time/op    new time/op    delta
      FmtFprintfInt-8            82.1ns ± 1%    81.7ns ± 1%  -0.46%  (p=0.023 n=8+9)
      FmtFprintfIntInt-8          122ns ± 2%     120ns ± 2%  -1.48%  (p=0.047 n=10+10)
      FmtManyArgs-8               493ns ± 0%     486ns ± 1%  -1.37%  (p=0.000 n=8+10)
      Gzip-8                      230ms ± 0%     229ms ± 1%  -0.46%  (p=0.001 n=10+9)
      HTTPClientServer-8         74.5µs ± 1%    73.7µs ± 1%  -1.11%  (p=0.000 n=10+10)
      JSONDecode-8               51.7ms ± 0%    51.9ms ± 1%  +0.42%  (p=0.017 n=10+9)
      RegexpMatchEasy0_32-8      82.6ns ± 1%    81.7ns ± 0%  -1.02%  (p=0.000 n=9+8)
      RegexpMatchMedium_32-8      121ns ± 1%     120ns ± 1%  -1.48%  (p=0.001 n=10+10)
      Revcomp-8                   426ms ± 1%     400ms ± 1%  -6.16%  (p=0.000 n=10+10)
      TimeFormat-8                330ns ± 1%     327ns ± 0%  -0.82%  (p=0.000 n=10+10)
      
      name                     old speed      new speed      delta
      Gzip-8                   84.4MB/s ± 0%  84.8MB/s ± 1%  +0.47%  (p=0.001 n=10+9)
      JSONDecode-8             37.6MB/s ± 0%  37.4MB/s ± 1%  -0.42%  (p=0.016 n=10+9)
      RegexpMatchEasy0_32-8     387MB/s ± 1%   392MB/s ± 0%  +1.06%  (p=0.000 n=9+8)
      RegexpMatchMedium_32-8   8.21MB/s ± 1%  8.34MB/s ± 1%  +1.58%  (p=0.000 n=10+9)
      Revcomp-8                 597MB/s ± 1%   636MB/s ± 1%  +6.57%  (p=0.000 n=10+10)
      
      Change-Id: Ie37ff91605b76a984a8400dfd1e34f50bf61c864
      Reviewed-on: https://go-review.googlesource.com/37290Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      379567aa
    • Josh Bleecher Snyder's avatar
      cmd/compile, runtime: specialize convT2x, don't alloc for zero vals · 504bc3ed
      Josh Bleecher Snyder authored
      Prior to this CL, all runtime conversions
      from a concrete value to an interface went
      through one of two runtime calls: convT2E or convT2I.
      However, in practice, basic types are very common.
      Specializing convT2x for those basic types allows
      for a more efficient implementation for those types.
      For basic scalars and strings, allocation and copying
      can use the same methods as normal code.
      For pointer-free types, allocation can occur without
      zeroing, and copying can take place without GC calls.
      For slices, copying is cheaper and simpler.
      
      This CL adds twelve runtime routines:
      
      convT2E16, convT2I16
      convT2E32, convT2I32
      convT2E64, convT2I64
      convT2Estring, convT2Istring
      convT2Eslice, convT2Islice
      convT2Enoptr, convT2Inoptr
      
      While compiling make.bash, 93% of all convT2x calls
      are now to one of these specialized convT2x call.
      
      Within specialized convT2x routines, it is cheap to check
      for a zero value, in a way that it is not in general.
      When we detect a zero value there, we return a pointer
      to zeroVal, rather than allocating.
      
      name                         old time/op  new time/op  delta
      ConvT2Ezero/zero/16-8        17.9ns ± 2%   3.0ns ± 3%  -83.20%  (p=0.000 n=56+56)
      ConvT2Ezero/zero/32-8        17.8ns ± 2%   3.0ns ± 3%  -83.15%  (p=0.000 n=59+60)
      ConvT2Ezero/zero/64-8        20.1ns ± 1%   3.0ns ± 2%  -84.98%  (p=0.000 n=57+57)
      ConvT2Ezero/zero/str-8       32.6ns ± 1%   3.0ns ± 4%  -90.70%  (p=0.000 n=59+60)
      ConvT2Ezero/zero/slice-8     36.7ns ± 2%   3.0ns ± 2%  -91.78%  (p=0.000 n=59+59)
      ConvT2Ezero/zero/big-8       91.9ns ± 2%  85.9ns ± 2%   -6.52%  (p=0.000 n=57+57)
      ConvT2Ezero/nonzero/16-8     17.7ns ± 2%  12.7ns ± 3%  -28.38%  (p=0.000 n=55+60)
      ConvT2Ezero/nonzero/32-8     17.8ns ± 1%  12.7ns ± 1%  -28.44%  (p=0.000 n=54+57)
      ConvT2Ezero/nonzero/64-8     20.0ns ± 1%  15.0ns ± 1%  -24.90%  (p=0.000 n=56+58)
      ConvT2Ezero/nonzero/str-8    32.6ns ± 1%  25.7ns ± 1%  -21.17%  (p=0.000 n=58+55)
      ConvT2Ezero/nonzero/slice-8  36.8ns ± 2%  30.4ns ± 1%  -17.32%  (p=0.000 n=60+52)
      ConvT2Ezero/nonzero/big-8    92.1ns ± 2%  85.9ns ± 2%   -6.70%  (p=0.000 n=57+59)
      
      Benchmarks on a real program (the compiler):
      
      name       old time/op      new time/op      delta
      Template        227ms ± 5%       221ms ± 2%  -2.48%  (p=0.000 n=30+26)
      Unicode         102ms ± 5%       100ms ± 3%  -1.30%  (p=0.009 n=30+26)
      GoTypes         656ms ± 5%       659ms ± 4%    ~     (p=0.208 n=30+30)
      Compiler        2.82s ± 2%       2.82s ± 1%    ~     (p=0.614 n=29+27)
      Flate           128ms ± 2%       128ms ± 5%    ~     (p=0.783 n=27+28)
      GoParser        158ms ± 3%       158ms ± 3%    ~     (p=0.261 n=28+30)
      Reflect         408ms ± 7%       401ms ± 3%    ~     (p=0.075 n=30+30)
      Tar             123ms ± 6%       121ms ± 8%    ~     (p=0.287 n=29+30)
      XML             220ms ± 2%       220ms ± 4%    ~     (p=0.805 n=29+29)
      
      name       old user-ns/op   new user-ns/op   delta
      Template   281user-ms ± 4%  279user-ms ± 3%  -0.87%  (p=0.044 n=28+28)
      Unicode    142user-ms ± 4%  141user-ms ± 3%  -1.04%  (p=0.015 n=30+27)
      GoTypes    884user-ms ± 3%  886user-ms ± 2%    ~     (p=0.532 n=30+30)
      Compiler   3.94user-s ± 3%  3.92user-s ± 1%    ~     (p=0.185 n=30+28)
      Flate      165user-ms ± 2%  165user-ms ± 4%    ~     (p=0.780 n=27+29)
      GoParser   209user-ms ± 2%  208user-ms ± 3%    ~     (p=0.453 n=28+30)
      Reflect    533user-ms ± 6%  526user-ms ± 3%    ~     (p=0.057 n=30+30)
      Tar        156user-ms ± 6%  154user-ms ± 6%    ~     (p=0.133 n=29+30)
      XML        288user-ms ± 4%  288user-ms ± 4%    ~     (p=0.633 n=30+30)
      
      name       old alloc/op     new alloc/op     delta
      Template       41.0MB ± 0%      40.9MB ± 0%  -0.11%  (p=0.000 n=29+29)
      Unicode        32.6MB ± 0%      32.6MB ± 0%    ~     (p=0.572 n=29+30)
      GoTypes         122MB ± 0%       122MB ± 0%  -0.10%  (p=0.000 n=30+30)
      Compiler        482MB ± 0%       481MB ± 0%  -0.07%  (p=0.000 n=30+29)
      Flate          26.6MB ± 0%      26.6MB ± 0%    ~     (p=0.096 n=30+30)
      GoParser       32.7MB ± 0%      32.6MB ± 0%  -0.06%  (p=0.011 n=28+28)
      Reflect        84.2MB ± 0%      84.1MB ± 0%  -0.17%  (p=0.000 n=29+30)
      Tar            27.7MB ± 0%      27.7MB ± 0%  -0.05%  (p=0.032 n=27+28)
      XML            44.7MB ± 0%      44.7MB ± 0%    ~     (p=0.131 n=28+30)
      
      name       old allocs/op    new allocs/op    delta
      Template         373k ± 1%        370k ± 1%  -0.76%  (p=0.000 n=30+30)
      Unicode          325k ± 1%        325k ± 1%    ~     (p=0.383 n=29+30)
      GoTypes         1.16M ± 0%       1.15M ± 0%  -0.75%  (p=0.000 n=29+30)
      Compiler        4.15M ± 0%       4.13M ± 0%  -0.59%  (p=0.000 n=30+29)
      Flate            238k ± 1%        237k ± 1%  -0.62%  (p=0.000 n=30+30)
      GoParser         304k ± 1%        302k ± 1%  -0.64%  (p=0.000 n=30+28)
      Reflect         1.00M ± 0%       0.99M ± 0%  -1.10%  (p=0.000 n=29+30)
      Tar              245k ± 1%        244k ± 1%  -0.59%  (p=0.000 n=27+29)
      XML              391k ± 1%        389k ± 1%  -0.59%  (p=0.000 n=29+30)
      
      Change-Id: Id7f456d690567c2b0a96b0d6d64de8784b6e305f
      Reviewed-on: https://go-review.googlesource.com/36476
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      504bc3ed
    • Cherry Zhang's avatar
      cmd/compile: update signature of runtime.memclr* · f6fc0dd6
      Cherry Zhang authored
      runtime.memclr* functions have signatures
      
      func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr)
      func memclrHasPointers(ptr unsafe.Pointer, n uintptr)
      
      Update compiler's copy. Also teach gc/mkbuiltin.go to handle
      unsafe.Pointer. The import statement and its support is not
      really necessary, but just to make it look like real Go code.
      
      Fixes #19185.
      
      Change-Id: I251d02571fde2716d4727e31e04d56ec04b6f22a
      Reviewed-on: https://go-review.googlesource.com/37257
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      f6fc0dd6
    • Josh Bleecher Snyder's avatar
      cmd/vet/all: temporarily ignore vendored pprof · d3d2a67c
      Josh Bleecher Snyder authored
      Change-Id: I3d96b9803dbbd7184f96240bd7944af919ca1376
      Reviewed-on: https://go-review.googlesource.com/37579
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d3d2a67c
    • Josh Bleecher Snyder's avatar
      cmd/vet: allow shifts by amounts calculated using unsafe · d99d5f7c
      Josh Bleecher Snyder authored
      The real world code that inspired this fix,
      from runtime/pprof/map.go:
      
      	// Compute hash of (stk, tag).
      	h := uintptr(0)
      	for _, x := range stk {
      		h = h<<8 | (h >> (8 * (unsafe.Sizeof(h) - 1)))
      		h += uintptr(x) * 41
      	}
      	h = h<<8 | (h >> (8 * (unsafe.Sizeof(h) - 1)))
      	h += uintptr(tag) * 41
      
      Change-Id: I99a95b97cba73811faedb0b9a1b9b54e9a1784a3
      Reviewed-on: https://go-review.googlesource.com/37574
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d99d5f7c
    • Josh Bleecher Snyder's avatar
      cmd/vet/all: move suspicious shift whitelists to 64 bit · 016569f2
      Josh Bleecher Snyder authored
      This is an inconsequential consequence of updating
      math/big to use math/bits.
      
      Better would be to teach the vet shift test
      to size int/uint/uintptr to the platform in use,
      eliminating the whole category of "might be too small".
      Filed #19321 for that.
      
      Change-Id: I7e0b837bd329132d7a564468c18502dd2e724fc6
      Reviewed-on: https://go-review.googlesource.com/37576
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      016569f2