1. 07 Feb, 2017 16 commits
    • Cherry Zhang's avatar
      cmd/compile: do not use "oaslit" for global · 160914e3
      Cherry Zhang authored
      The compiler did not emit write barrier for assigning global with
      struct literal, like global = T{} where T contains pointer.
      
      The relevant code path is:
      walkexpr OAS var_ OSTRUCTLIT
          oaslit
              anylit OSTRUCTLIT
                  walkexpr OAS var_ nil
                  return without adding write barrier
          return true
      break (without adding write barrier)
      
      This CL makes oaslit not apply to globals. See also CL
      https://go-review.googlesource.com/c/36355/ for an alternative
      fix.
      
      The downside of this is that it generates static data for zeroing
      struct now. Also this only covers global. If there is any lurking
      bug with implicit zeroing other than globals, this doesn't fix.
      
      Fixes #18956.
      
      Change-Id: Ibcd27e4fae3aa38390ffa94a32a9dd7a802e4b37
      Reviewed-on: https://go-review.googlesource.com/36410Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      160914e3
    • Russ Cox's avatar
      crypto/x509: check for new tls-ca-bundle.pem last · 1ead0bd1
      Russ Cox authored
      We added CentOS 7's /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
      to the list in response to #17549 - not being able to find any certs otherwise.
      
      Now we have #18813, where CentOS 6 apparently has both that file
      and /etc/pki/tls/certs/ca-bundle.crt, and the latter is complete while
      the former is not.
      
      Moving the new CentOS 7 file to the bottom of the list should fix both
      problems: the CentOS 7 system that didn't have any of the other files
      in the list will still find the new one, and existing systems will still
      keep using what they were using instead of preferring the new path
      that may or may not be complete on some systems.
      
      Fixes #18813.
      
      Change-Id: I5275ab67424b95e7210e14938d3e986c8caee0ba
      Reviewed-on: https://go-review.googlesource.com/36429
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      1ead0bd1
    • Daniel Martí's avatar
      cmd/link, crypto/tls: don't use append loops · 99df7c9c
      Daniel Martí authored
      Change-Id: Ib47e295e8646b769c30fd81e5c7f20f964df163e
      Reviewed-on: https://go-review.googlesource.com/36335Reviewed-by: 's avatarFilippo Valsorda <hi@filippo.io>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      99df7c9c
    • Robert Griesemer's avatar
      spec: clarify alignment of arrays · e62aab12
      Robert Griesemer authored
      Fixes #18950.
      
      Change-Id: I9f94748f36a896bcadc96f0642eb1f3bff387950
      Reviewed-on: https://go-review.googlesource.com/36481Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e62aab12
    • Daniel Martí's avatar
      testing: clarify T.Parallel() godoc wording · 3e366ec6
      Daniel Martí authored
      Fixes #18914.
      
      Change-Id: Iec90d6aaa62595983db28b17794429f3c9a3dc36
      Reviewed-on: https://go-review.googlesource.com/36272Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3e366ec6
    • Russ Cox's avatar
      Revert "image: fix the overlap check in Rectangle.Intersect." · 14347ee4
      Russ Cox authored
      This reverts commit a855da29.
      
      Change-Id: I23c0351b0708877e0b3d1b44a2bc2799cee52cd1
      Reviewed-on: https://go-review.googlesource.com/36426Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      14347ee4
    • Seth Vargo's avatar
      text/template: remove duplicate logic in conditional · 50c7783f
      Seth Vargo authored
      It looks like this conditional may have been refactored at some point,
      but the logic was still very confusing. The outer conditional checks if
      the function is variadic, so there's no need to verify that in the
      result. Additionally, since the function isn't variadic, there is no
      reason to permit the function call if the number of input arguments is
      less than the function signature requires.
      
      Change-Id: Ia957cf83d1c900c08dd66384efcb74f0c368422e
      Reviewed-on: https://go-review.googlesource.com/35491
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      50c7783f
    • Cherry Zhang's avatar
      cmd/internal/obj: remove Follow pass · bed8129e
      Cherry Zhang authored
      The Follow pass in the assembler backend reorders and copies
      instructions. This even applies to hand-written assembly code,
      which in many cases don't want to be reordered. Now that the
      SSA compiler does a good job for laying out instructions, the
      benefit of this pass is very little:
      
      AMD64: (old = with Follow, new = without Follow)
      name                      old time/op    new time/op    delta
      BinaryTree17-12              2.78s ± 1%     2.79s ± 1%  +0.44%  (p=0.000 n=20+19)
      Fannkuch11-12                3.11s ± 0%     3.31s ± 1%  +6.16%  (p=0.000 n=19+19)
      FmtFprintfEmpty-12          50.9ns ± 1%    51.6ns ± 3%  +1.40%  (p=0.000 n=17+20)
      FmtFprintfString-12          127ns ± 0%     128ns ± 1%  +0.88%  (p=0.000 n=17+17)
      FmtFprintfInt-12             122ns ± 0%     123ns ± 1%  +0.76%  (p=0.000 n=20+19)
      FmtFprintfIntInt-12          185ns ± 1%     186ns ± 1%  +0.65%  (p=0.000 n=20+19)
      FmtFprintfPrefixedInt-12     192ns ± 1%     202ns ± 1%  +4.99%  (p=0.000 n=20+19)
      FmtFprintfFloat-12           284ns ± 0%     288ns ± 0%  +1.33%  (p=0.000 n=15+19)
      FmtManyArgs-12               807ns ± 0%     804ns ± 0%  -0.44%  (p=0.000 n=16+18)
      GobDecode-12                7.23ms ± 1%    7.21ms ± 1%    ~     (p=0.052 n=20+20)
      GobEncode-12                6.09ms ± 1%    6.12ms ± 1%  +0.41%  (p=0.002 n=19+19)
      Gzip-12                      253ms ± 1%     255ms ± 1%  +0.95%  (p=0.000 n=18+20)
      Gunzip-12                   38.4ms ± 0%    38.5ms ± 0%  +0.34%  (p=0.000 n=17+17)
      HTTPClientServer-12         95.4µs ± 2%    96.1µs ± 1%  +0.78%  (p=0.002 n=19+19)
      JSONEncode-12               16.5ms ± 1%    16.6ms ± 1%  +1.17%  (p=0.000 n=19+19)
      JSONDecode-12               54.6ms ± 1%    55.3ms ± 1%  +1.23%  (p=0.000 n=18+18)
      Mandelbrot200-12            4.47ms ± 0%    4.47ms ± 0%  +0.06%  (p=0.000 n=18+18)
      GoParse-12                  3.47ms ± 1%    3.47ms ± 1%    ~     (p=0.583 n=20+20)
      RegexpMatchEasy0_32-12      84.8ns ± 1%    85.2ns ± 2%  +0.51%  (p=0.022 n=20+20)
      RegexpMatchEasy0_1K-12       206ns ± 1%     206ns ± 1%    ~     (p=0.770 n=20+20)
      RegexpMatchEasy1_32-12      82.8ns ± 1%    83.4ns ± 1%  +0.64%  (p=0.000 n=20+19)
      RegexpMatchEasy1_1K-12       363ns ± 1%     361ns ± 1%  -0.48%  (p=0.007 n=20+20)
      RegexpMatchMedium_32-12      126ns ± 1%     126ns ± 0%  +0.72%  (p=0.000 n=20+20)
      RegexpMatchMedium_1K-12     39.1µs ± 1%    39.8µs ± 0%  +1.73%  (p=0.000 n=19+19)
      RegexpMatchHard_32-12       1.97µs ± 0%    1.98µs ± 1%  +0.29%  (p=0.005 n=18+20)
      RegexpMatchHard_1K-12       59.5µs ± 1%    59.8µs ± 1%  +0.36%  (p=0.000 n=18+20)
      Revcomp-12                   442ms ± 1%     445ms ± 2%  +0.67%  (p=0.000 n=19+20)
      Template-12                 58.0ms ± 1%    57.5ms ± 1%  -0.85%  (p=0.000 n=19+19)
      TimeParse-12                 311ns ± 0%     314ns ± 0%  +0.94%  (p=0.000 n=20+18)
      TimeFormat-12                350ns ± 3%     346ns ± 0%    ~     (p=0.076 n=20+19)
      [Geo mean]                  55.9µs         56.4µs       +0.80%
      
      ARM32:
      name                     old time/op    new time/op    delta
      BinaryTree17-4              30.4s ± 0%     30.1s ± 0%  -1.14%  (p=0.000 n=10+8)
      Fannkuch11-4                13.7s ± 0%     13.6s ± 0%  -0.75%  (p=0.000 n=10+10)
      FmtFprintfEmpty-4           664ns ± 1%     651ns ± 1%  -1.96%  (p=0.000 n=7+8)
      FmtFprintfString-4         1.83µs ± 2%    1.77µs ± 2%  -3.21%  (p=0.000 n=10+10)
      FmtFprintfInt-4            1.57µs ± 2%    1.54µs ± 2%  -2.25%  (p=0.007 n=10+10)
      FmtFprintfIntInt-4         2.37µs ± 2%    2.31µs ± 1%  -2.68%  (p=0.000 n=10+10)
      FmtFprintfPrefixedInt-4    2.14µs ± 2%    2.10µs ± 1%  -1.83%  (p=0.006 n=10+10)
      FmtFprintfFloat-4          3.69µs ± 2%    3.74µs ± 1%  +1.60%  (p=0.000 n=10+10)
      FmtManyArgs-4              9.43µs ± 1%    9.17µs ± 1%  -2.70%  (p=0.000 n=10+10)
      GobDecode-4                76.3ms ± 1%    75.5ms ± 1%  -1.14%  (p=0.003 n=10+10)
      GobEncode-4                70.7ms ± 2%    69.0ms ± 1%  -2.36%  (p=0.000 n=10+10)
      Gzip-4                      2.64s ± 1%     2.65s ± 0%  +0.59%  (p=0.002 n=10+10)
      Gunzip-4                    402ms ± 0%     398ms ± 0%  -1.11%  (p=0.000 n=10+9)
      HTTPClientServer-4          458µs ± 0%     457µs ± 0%    ~     (p=0.247 n=10+10)
      JSONEncode-4                171ms ± 0%     172ms ± 0%  +0.56%  (p=0.000 n=10+10)
      JSONDecode-4                672ms ± 1%     668ms ± 1%    ~     (p=0.105 n=10+10)
      Mandelbrot200-4            33.5ms ± 0%    33.5ms ± 0%    ~     (p=0.156 n=9+10)
      GoParse-4                  33.9ms ± 0%    34.0ms ± 0%  +0.36%  (p=0.031 n=9+9)
      RegexpMatchEasy0_32-4       823ns ± 1%     835ns ± 1%  +1.49%  (p=0.000 n=8+8)
      RegexpMatchEasy0_1K-4      3.99µs ± 0%    4.02µs ± 1%  +0.92%  (p=0.000 n=8+10)
      RegexpMatchEasy1_32-4       877ns ± 3%     904ns ± 2%  +3.07%  (p=0.012 n=10+10)
      RegexpMatchEasy1_1K-4      5.99µs ± 0%    5.97µs ± 1%  -0.38%  (p=0.023 n=8+8)
      RegexpMatchMedium_32-4     1.40µs ± 2%    1.40µs ± 2%    ~     (p=0.590 n=10+9)
      RegexpMatchMedium_1K-4      357µs ± 0%     355µs ± 1%  -0.72%  (p=0.000 n=7+8)
      RegexpMatchHard_32-4       22.3µs ± 0%    22.1µs ± 0%  -0.49%  (p=0.000 n=8+7)
      RegexpMatchHard_1K-4        661µs ± 0%     658µs ± 0%  -0.42%  (p=0.000 n=8+7)
      Revcomp-4                  46.3ms ± 0%    46.3ms ± 0%    ~     (p=0.393 n=10+10)
      Template-4                  753ms ± 1%     750ms ± 0%    ~     (p=0.211 n=10+9)
      TimeParse-4                4.28µs ± 1%    4.22µs ± 1%  -1.34%  (p=0.000 n=8+10)
      TimeFormat-4               9.00µs ± 0%    9.05µs ± 0%  +0.59%  (p=0.000 n=10+10)
      [Geo mean]                  538µs          535µs       -0.55%
      
      ARM64:
      name                     old time/op    new time/op    delta
      BinaryTree17-8              8.39s ± 0%     8.39s ± 0%    ~     (p=0.684 n=10+10)
      Fannkuch11-8                5.95s ± 0%     5.99s ± 0%  +0.63%  (p=0.000 n=10+10)
      FmtFprintfEmpty-8           116ns ± 0%     116ns ± 0%    ~     (all equal)
      FmtFprintfString-8          361ns ± 0%     360ns ± 0%  -0.31%  (p=0.003 n=8+6)
      FmtFprintfInt-8             290ns ± 0%     290ns ± 0%    ~     (p=0.620 n=9+9)
      FmtFprintfIntInt-8          476ns ± 1%     469ns ± 0%  -1.47%  (p=0.000 n=10+6)
      FmtFprintfPrefixedInt-8     412ns ± 2%     417ns ± 2%  +1.39%  (p=0.006 n=9+10)
      FmtFprintfFloat-8           652ns ± 1%     652ns ± 0%    ~     (p=0.161 n=10+8)
      FmtManyArgs-8              1.94µs ± 0%    1.94µs ± 2%    ~     (p=0.781 n=10+10)
      GobDecode-8                17.7ms ± 1%    17.7ms ± 0%    ~     (p=0.962 n=10+7)
      GobEncode-8                15.6ms ± 0%    15.6ms ± 1%    ~     (p=0.063 n=10+10)
      Gzip-8                      786ms ± 0%     787ms ± 0%    ~     (p=0.356 n=10+9)
      Gunzip-8                    127ms ± 0%     127ms ± 0%  +0.08%  (p=0.028 n=10+9)
      HTTPClientServer-8          198µs ± 6%     198µs ± 7%    ~     (p=0.796 n=10+10)
      JSONEncode-8               42.5ms ± 0%    42.2ms ± 0%  -0.73%  (p=0.000 n=9+8)
      JSONDecode-8                158ms ± 1%     162ms ± 0%  +2.28%  (p=0.000 n=10+9)
      Mandelbrot200-8            10.1ms ± 0%    10.1ms ± 0%  -0.01%  (p=0.000 n=10+9)
      GoParse-8                  8.54ms ± 1%    8.63ms ± 1%  +1.06%  (p=0.000 n=10+9)
      RegexpMatchEasy0_32-8       231ns ± 1%     225ns ± 0%  -2.52%  (p=0.000 n=9+10)
      RegexpMatchEasy0_1K-8      1.63µs ± 0%    1.63µs ± 0%    ~     (p=0.170 n=10+10)
      RegexpMatchEasy1_32-8       253ns ± 0%     249ns ± 0%  -1.41%  (p=0.000 n=9+10)
      RegexpMatchEasy1_1K-8      2.08µs ± 0%    2.08µs ± 0%  -0.32%  (p=0.000 n=9+10)
      RegexpMatchMedium_32-8      355ns ± 1%     351ns ± 0%  -1.04%  (p=0.007 n=10+7)
      RegexpMatchMedium_1K-8      104µs ± 0%     104µs ± 0%    ~     (p=0.148 n=10+10)
      RegexpMatchHard_32-8       5.79µs ± 0%    5.79µs ± 0%    ~     (p=0.578 n=10+10)
      RegexpMatchHard_1K-8        176µs ± 0%     176µs ± 0%    ~     (p=0.137 n=10+10)
      Revcomp-8                   1.37s ± 1%     1.36s ± 1%  -0.26%  (p=0.023 n=10+10)
      Template-8                  151ms ± 1%     154ms ± 1%  +2.14%  (p=0.000 n=9+10)
      TimeParse-8                 723ns ± 2%     721ns ± 1%    ~     (p=0.592 n=10+10)
      TimeFormat-8                804ns ± 2%     798ns ± 3%    ~     (p=0.344 n=10+10)
      [Geo mean]                  154µs          154µs       -0.02%
      
      Therefore remove this pass. Also reduce text size by 0.5~2%.
      
      Comment out some dead code in runtime/sys_nacl_amd64p32.s
      which contains undefined symbols.
      
      Change-Id: I1473986fe5b18b3d2554ce96cdc6f0999b8d955d
      Reviewed-on: https://go-review.googlesource.com/36205
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      bed8129e
    • Mura Li's avatar
      crypto/des: improve the throughput of DES and 3DES · 76d42744
      Mura Li authored
      For detailed explanation of the adopted (Eric Young's) algorithm,
      see http://ftp.nluug.nl/security/coast/libs/libdes/ALGORITHM
      
      benchmark                   old ns/op     new ns/op     delta
      BenchmarkEncrypt-16         649           164           -74.73%
      BenchmarkDecrypt-16         546           156           -71.43%
      BenchmarkTDESEncrypt-16     1651          385           -76.68%
      BenchmarkTDESDecrypt-16     1645          378           -77.02%
      
      benchmark                   old MB/s     new MB/s     speedup
      BenchmarkEncrypt-16         12.31        48.76        3.96x
      BenchmarkDecrypt-16         14.64        51.03        3.49x
      BenchmarkTDESEncrypt-16     4.84         20.74        4.29x
      BenchmarkTDESDecrypt-16     4.86         21.16        4.35x
      
      Change-Id: Ic3e1fe3340419ec5a0e6379434911eb41e0246f6
      Reviewed-on: https://go-review.googlesource.com/36490
      Run-TryBot: Minux Ma <minux@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      76d42744
    • Alan Donovan's avatar
      go/types: permit f(nil...) for variadic arguments · 08bb7ccb
      Alan Donovan authored
      This code may be pointless, but it is legal.
      
      Fixes golang/go#18268
      
      Change-Id: Ibacae583606e1a6fdf0c0f01abe2e22e9e608393
      Reviewed-on: https://go-review.googlesource.com/34194Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      08bb7ccb
    • Nigel Tao's avatar
      image: fix the overlap check in Rectangle.Intersect. · a855da29
      Nigel Tao authored
      The doc comment for Rectangle.Intersect clearly states, "If the two
      rectangles do not overlap then the zero rectangle will be returned."
      Prior to this fix, calling Intersect on adjacent but non-overlapping
      rectangles would return an empty but non-zero rectangle.
      
      The fix essentially changes
      if r.Min.X > r.Max.X || r.Min.Y > r.Max.Y { etc }
      to
      if r.Min.X >= r.Max.X || r.Min.Y >= r.Max.Y { etc }
      (note that the > signs have become >= signs), but changing that line to:
      if r.Empty() { etc }
      seems clearer (and equivalent).
      
      Change-Id: Ia654e4b9dc805978db3e94d7a9718b6366005360
      Reviewed-on: https://go-review.googlesource.com/34853Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      a855da29
    • Michael Matloob's avatar
      runtime/pprof: symbolize proto profiles · cbef450d
      Michael Matloob authored
      When generating pprof profiles in proto format, symbolize the profiles.
      
      Change-Id: I2471ed7f919483e5828868306418a63e41aff5c5
      Reviewed-on: https://go-review.googlesource.com/34192
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      cbef450d
    • Shintaro Kaneko's avatar
      test: improve output format of issue10607a.go test · 936749ef
      Shintaro Kaneko authored
      Change-Id: Iad5ff820a95f5082b75aa5260e40c33c7b0ecf22
      Reviewed-on: https://go-review.googlesource.com/35990Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      936749ef
    • Robert Griesemer's avatar
      cmd/compile/internal/syntax: avoid follow-up error for incorrect if statement · 53c6ac54
      Robert Griesemer authored
      This is a follow-up on https://go-review.googlesource.com/36470
      and leads to a more stable fix. The above CL relied on filtering
      of multiple errors on the same line to avoid more than one error
      for an `if` statement of the form `if a := 10 {}`. This CL avoids
      the secondary error ("missing condition in if statement") in the
      first place.
      
      For #18915.
      
      Change-Id: I8517f485cc2305965276c17d8f8797d61ef9e999
      Reviewed-on: https://go-review.googlesource.com/36479
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      53c6ac54
    • Quentin Smith's avatar
      testing: print extra labels on benchmarks · 6b742b2f
      Quentin Smith authored
      When running benchmarks, print "goos", "goarch", and "pkg"
      labels. This makes it easier to refer to benchmark logs and understand
      how they were generated. "pkg" is printed only for benchmarks located
      in GOPATH.
      
      Change-Id: I397cbdd57b9fe8cbabbb354ec7bfba59f5625c42
      Reviewed-on: https://go-review.googlesource.com/36356
      Run-TryBot: Quentin Smith <quentin@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      6b742b2f
    • Robert Griesemer's avatar
      spec: pick up a few corrections missed in prior commit · c0bd4f33
      Robert Griesemer authored
      This CL picks up a couple of minor fixes that were present
      in https://go-review.googlesource.com/#/c/36213/6..5 but
      accidentally got dropped in https://go-review.googlesource.com/#/c/36213/
      because I submitted from the wrong client.
      
      Change-Id: I3ad0d20457152ea9a116cbb65a23eb0dc3a8525e
      Reviewed-on: https://go-review.googlesource.com/36471Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      c0bd4f33
  2. 06 Feb, 2017 16 commits
  3. 05 Feb, 2017 1 commit
  4. 04 Feb, 2017 7 commits