1. 28 Apr, 2015 15 commits
    • Adam Langley's avatar
      crypto/x509: allow parsing of certificates with unknown critical extensions. · d942737f
      Adam Langley authored
      Previously, unknown critical extensions were a parse error. However, for
      some cases one wishes to parse and use a certificate that may contain
      these extensions. For example, when using a certificate in a TLS server:
      it's the client's concern whether it understands the critical extensions
      but the server still wishes to parse SNI values out of the certificate
      etc.
      
      This change moves the rejection of unknown critical extensions from
      ParseCertificate to Certificate.Verify. The former will now record the
      OIDs of unknown critical extensions in the Certificate and the latter
      will fail to verify certificates with them. If a user of this package
      wishes to handle any unknown critical extensions themselves, they can
      extract the extensions from Certificate.Extensions, process them and
      remove known OIDs from Certificate.UnknownCriticalExtensions.
      
      See discussion at
      https://groups.google.com/forum/#!msg/golang-nuts/IrzoZlwalTQ/qdK1k-ogeHIJ
      and in the linked bug.
      
      Fixes #10459
      
      Change-Id: I762521a44c01160fa0901f990ba2f5d4977d7977
      Reviewed-on: https://go-review.googlesource.com/9390Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      d942737f
    • Austin Clements's avatar
      runtime: eliminate one heapBitsForObject from scanobject · 63caec5d
      Austin Clements authored
      scanobject with ptrmask!=nil is only ever called with the base
      pointer of a heap object. Currently, scanobject calls
      heapBitsForObject, which goes to a great deal of trouble to check
      that the pointer points into the heap and to find the base of the
      object it points to, both of which are completely unnecessary in
      this case.
      
      Replace this call to heapBitsForObject with much simpler logic to
      fetch the span and compute the heap bits.
      
      Benchmark results with five runs:
      
      name                                    old mean                new mean        delta
      BenchmarkBinaryTree17              9.21s × (0.95,1.02)     8.55s × (0.91,1.03)  -7.16% (p=0.022)
      BenchmarkFannkuch11                2.65s × (1.00,1.00)     2.62s × (1.00,1.00)  -1.10% (p=0.000)
      BenchmarkFmtFprintfEmpty          73.2ns × (0.99,1.01)    71.7ns × (1.00,1.01)  -1.99% (p=0.004)
      BenchmarkFmtFprintfString          302ns × (0.99,1.00)     292ns × (0.98,1.02)  -3.31% (p=0.020)
      BenchmarkFmtFprintfInt             281ns × (0.98,1.01)     279ns × (0.96,1.02)  ~ (p=0.596)
      BenchmarkFmtFprintfIntInt          482ns × (0.98,1.01)     488ns × (0.95,1.02)  ~ (p=0.419)
      BenchmarkFmtFprintfPrefixedInt     382ns × (0.99,1.01)     365ns × (0.96,1.02)  -4.35% (p=0.015)
      BenchmarkFmtFprintfFloat           475ns × (0.99,1.01)     472ns × (1.00,1.00)  ~ (p=0.108)
      BenchmarkFmtManyArgs              1.89µs × (1.00,1.01)    1.90µs × (0.94,1.02)  ~ (p=0.883)
      BenchmarkGobDecode                22.4ms × (0.99,1.01)    21.9ms × (0.92,1.04)  ~ (p=0.332)
      BenchmarkGobEncode                24.7ms × (0.98,1.02)    23.9ms × (0.87,1.07)  ~ (p=0.407)
      BenchmarkGzip                      397ms × (0.99,1.01)     398ms × (0.99,1.01)  ~ (p=0.718)
      BenchmarkGunzip                   96.7ms × (1.00,1.00)    96.9ms × (1.00,1.00)  ~ (p=0.230)
      BenchmarkHTTPClientServer         71.5µs × (0.98,1.01)    68.5µs × (0.92,1.06)  ~ (p=0.243)
      BenchmarkJSONEncode               46.1ms × (0.98,1.01)    44.9ms × (0.98,1.03)  -2.51% (p=0.040)
      BenchmarkJSONDecode               86.1ms × (0.99,1.01)    86.5ms × (0.99,1.01)  ~ (p=0.343)
      BenchmarkMandelbrot200            4.12ms × (1.00,1.00)    4.13ms × (1.00,1.00)  +0.23% (p=0.000)
      BenchmarkGoParse                  5.89ms × (0.96,1.03)    5.82ms × (0.96,1.04)  ~ (p=0.522)
      BenchmarkRegexpMatchEasy0_32       141ns × (0.99,1.01)     142ns × (1.00,1.00)  ~ (p=0.178)
      BenchmarkRegexpMatchEasy0_1K       408ns × (1.00,1.00)     392ns × (0.99,1.00)  -3.83% (p=0.000)
      BenchmarkRegexpMatchEasy1_32       122ns × (1.00,1.00)     122ns × (1.00,1.00)  ~ (p=0.178)
      BenchmarkRegexpMatchEasy1_1K       626ns × (1.00,1.01)     624ns × (0.99,1.00)  ~ (p=0.122)
      BenchmarkRegexpMatchMedium_32      202ns × (0.99,1.00)     205ns × (0.99,1.01)  +1.58% (p=0.001)
      BenchmarkRegexpMatchMedium_1K     54.4µs × (1.00,1.00)    55.5µs × (1.00,1.00)  +1.86% (p=0.000)
      BenchmarkRegexpMatchHard_32       2.68µs × (1.00,1.00)    2.71µs × (1.00,1.00)  +0.97% (p=0.002)
      BenchmarkRegexpMatchHard_1K       79.8µs × (1.00,1.01)    80.5µs × (1.00,1.01)  +0.94% (p=0.003)
      BenchmarkRevcomp                   590ms × (0.99,1.01)     585ms × (1.00,1.00)  ~ (p=0.066)
      BenchmarkTemplate                  111ms × (0.97,1.02)     112ms × (0.99,1.01)  ~ (p=0.201)
      BenchmarkTimeParse                 392ns × (1.00,1.00)     385ns × (1.00,1.00)  -1.69% (p=0.000)
      BenchmarkTimeFormat                449ns × (0.98,1.01)     448ns × (0.99,1.01)  ~ (p=0.550)
      
      Change-Id: Ie7c3830c481d96c9043e7bf26853c6c1d05dc9f4
      Reviewed-on: https://go-review.googlesource.com/9364Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      63caec5d
    • David Crawshaw's avatar
      cmd/internal/ld: remove Biobuf unget · 05d53165
      David Crawshaw authored
      The underlying *bufio.Reader does everything that's needed here.
      
      Change-Id: If0712a5b4d3142ae4bceaa2efe287eaf2b91e54e
      Reviewed-on: https://go-review.googlesource.com/9365Reviewed-by: 's avatarJosh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      05d53165
    • Russ Cox's avatar
      doc/go1.5.txt: mention goroutine scheduling change · cbbe9f63
      Russ Cox authored
      Change-Id: I43a40f0c10472b3126c06b0d4268b32b54665f12
      Reviewed-on: https://go-review.googlesource.com/9349Reviewed-by: 's avatarRob Pike <r@golang.org>
      cbbe9f63
    • Josh Bleecher Snyder's avatar
      Revert "Revert "cmd/dist: consolidate runtime CPU tests"" · 45ccea71
      Josh Bleecher Snyder authored
      This reverts commit 81c2233b.
      
      Change-Id: Ie7024f04dba6352ae79ba68d4da5c0c25844cd8c
      Reviewed-on: https://go-review.googlesource.com/9397Reviewed-by: 's avatarDave Cheney <dave@cheney.net>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      45ccea71
    • Russ Cox's avatar
      cmd/internal/gc: emit typedmemmove write barrier from sgen · 2a735590
      Russ Cox authored
      Emitting it here instead of rewriting the tree earlier sets us up
      to generate an inline check, like we do for single pointers.
      But even without the inline check, generating at this level lets
      us generate significantly more efficient code, probably due to
      having fewer temporaries and less complex high-level code
      for the compiler to churn through.
      
      Revcomp is worse, almost certainly due to register pressure.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              18.0s × (0.99,1.01)     18.0s × (0.99,1.01)  ~
      BenchmarkFannkuch11                4.43s × (1.00,1.00)     4.36s × (1.00,1.00)  -1.44%
      BenchmarkFmtFprintfEmpty           114ns × (0.95,1.05)      86ns × (0.97,1.06)  -24.12%
      BenchmarkFmtFprintfString          468ns × (0.99,1.01)     420ns × (0.99,1.02)  -10.16%
      BenchmarkFmtFprintfInt             433ns × (1.00,1.01)     386ns × (0.99,1.02)  -10.74%
      BenchmarkFmtFprintfIntInt          748ns × (0.99,1.01)     647ns × (0.99,1.01)  -13.56%
      BenchmarkFmtFprintfPrefixedInt     547ns × (0.99,1.01)     499ns × (0.99,1.02)  -8.78%
      BenchmarkFmtFprintfFloat           756ns × (1.00,1.01)     689ns × (1.00,1.00)  -8.86%
      BenchmarkFmtManyArgs              2.79µs × (1.00,1.01)    2.53µs × (1.00,1.00)  -9.30%
      BenchmarkGobDecode                39.6ms × (0.99,1.00)    39.2ms × (0.98,1.01)  -1.07%
      BenchmarkGobEncode                37.6ms × (1.00,1.01)    37.5ms × (0.99,1.01)  ~
      BenchmarkGzip                      663ms × (0.99,1.02)     660ms × (0.98,1.01)  ~
      BenchmarkGunzip                    142ms × (1.00,1.00)     143ms × (1.00,1.00)  ~
      BenchmarkHTTPClientServer          132µs × (0.99,1.01)     133µs × (0.99,1.02)  ~
      BenchmarkJSONEncode               56.2ms × (0.99,1.01)    54.0ms × (0.98,1.01)  -3.97%
      BenchmarkJSONDecode                138ms × (1.00,1.00)     134ms × (0.99,1.02)  -2.70%
      BenchmarkMandelbrot200            6.03ms × (1.00,1.01)    6.00ms × (1.00,1.01)  ~
      BenchmarkGoParse                  9.82ms × (0.93,1.10)   10.35ms × (0.88,1.11)  ~
      BenchmarkRegexpMatchEasy0_32       207ns × (1.00,1.00)     163ns × (0.99,1.01)  -21.26%
      BenchmarkRegexpMatchEasy0_1K       581ns × (1.00,1.01)     566ns × (0.99,1.00)  -2.50%
      BenchmarkRegexpMatchEasy1_32       185ns × (0.99,1.01)     138ns × (1.00,1.01)  -25.41%
      BenchmarkRegexpMatchEasy1_1K       975ns × (1.00,1.01)     892ns × (1.00,1.00)  -8.51%
      BenchmarkRegexpMatchMedium_32      328ns × (0.99,1.00)     252ns × (1.00,1.00)  -23.17%
      BenchmarkRegexpMatchMedium_1K     88.6µs × (1.00,1.01)    73.0µs × (1.00,1.01)  -17.66%
      BenchmarkRegexpMatchHard_32       4.69µs × (0.95,1.03)    3.85µs × (1.00,1.01)  -17.91%
      BenchmarkRegexpMatchHard_1K        133µs × (1.00,1.01)     117µs × (1.00,1.00)  -12.34%
      BenchmarkRevcomp                   902ms × (0.99,1.05)    1001ms × (0.94,1.01)  +11.04%
      BenchmarkTemplate                  174ms × (0.99,1.01)     160ms × (0.99,1.01)  -7.70%
      BenchmarkTimeParse                 639ns × (1.00,1.00)     622ns × (1.00,1.00)  -2.66%
      BenchmarkTimeFormat                736ns × (1.00,1.01)     736ns × (1.00,1.02)  ~
      
      Change-Id: Ib3bbeb379f5f4819e6f5dcf69bc88a2b7ed41460
      Reviewed-on: https://go-review.googlesource.com/9225Reviewed-by: 's avatarAustin Clements <austin@google.com>
      Run-TryBot: Russ Cox <rsc@golang.org>
      2a735590
    • Russ Cox's avatar
      cmd/internal/gc: inline writeBarrierEnabled check before calling writebarrierptr · 653d5607
      Russ Cox authored
      I believe the benchmarks that get slower are under register pressure,
      and not making the call unconditionally makes the pressure worse,
      and the register allocator doesn't do a great job. But part of the point
      of this sequence is to get the write barriers out of the way so I can work
      on the register allocator, so that's okay.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              17.9s × (1.00,1.01)     18.0s × (0.99,1.01)  ~
      BenchmarkFannkuch11                4.43s × (1.00,1.00)     4.43s × (1.00,1.00)  ~
      BenchmarkFmtFprintfEmpty           110ns × (1.00,1.06)     114ns × (0.95,1.05)  ~
      BenchmarkFmtFprintfString          487ns × (0.99,1.00)     468ns × (0.99,1.01)  -4.00%
      BenchmarkFmtFprintfInt             450ns × (0.99,1.00)     433ns × (1.00,1.01)  -3.88%
      BenchmarkFmtFprintfIntInt          762ns × (1.00,1.00)     748ns × (0.99,1.01)  -1.84%
      BenchmarkFmtFprintfPrefixedInt     584ns × (0.99,1.01)     547ns × (0.99,1.01)  -6.26%
      BenchmarkFmtFprintfFloat           738ns × (1.00,1.00)     756ns × (1.00,1.01)  +2.37%
      BenchmarkFmtManyArgs              2.80µs × (1.00,1.01)    2.79µs × (1.00,1.01)  ~
      BenchmarkGobDecode                39.0ms × (0.99,1.00)    39.6ms × (0.99,1.00)  +1.54%
      BenchmarkGobEncode                37.8ms × (0.98,1.01)    37.6ms × (1.00,1.01)  ~
      BenchmarkGzip                      661ms × (0.99,1.01)     663ms × (0.99,1.02)  ~
      BenchmarkGunzip                    142ms × (1.00,1.00)     142ms × (1.00,1.00)  ~
      BenchmarkHTTPClientServer          132µs × (0.99,1.01)     132µs × (0.99,1.01)  ~
      BenchmarkJSONEncode               56.3ms × (0.99,1.01)    56.2ms × (0.99,1.01)  ~
      BenchmarkJSONDecode                138ms × (0.99,1.01)     138ms × (1.00,1.00)  ~
      BenchmarkMandelbrot200            6.01ms × (1.00,1.00)    6.03ms × (1.00,1.01)  +0.23%
      BenchmarkGoParse                  10.2ms × (0.87,1.05)     9.8ms × (0.93,1.10)  ~
      BenchmarkRegexpMatchEasy0_32       208ns × (1.00,1.00)     207ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchEasy0_1K       588ns × (1.00,1.00)     581ns × (1.00,1.01)  -1.27%
      BenchmarkRegexpMatchEasy1_32       182ns × (0.99,1.01)     185ns × (0.99,1.01)  +1.65%
      BenchmarkRegexpMatchEasy1_1K       986ns × (1.00,1.01)     975ns × (1.00,1.01)  -1.17%
      BenchmarkRegexpMatchMedium_32      323ns × (1.00,1.01)     328ns × (0.99,1.00)  +1.55%
      BenchmarkRegexpMatchMedium_1K     89.9µs × (1.00,1.00)    88.6µs × (1.00,1.01)  -1.38%
      BenchmarkRegexpMatchHard_32       4.72µs × (0.95,1.01)    4.69µs × (0.95,1.03)  ~
      BenchmarkRegexpMatchHard_1K        133µs × (1.00,1.01)     133µs × (1.00,1.01)  ~
      BenchmarkRevcomp                   900ms × (1.00,1.05)     902ms × (0.99,1.05)  ~
      BenchmarkTemplate                  168ms × (0.99,1.01)     174ms × (0.99,1.01)  +3.30%
      BenchmarkTimeParse                 637ns × (1.00,1.00)     639ns × (1.00,1.00)  +0.31%
      BenchmarkTimeFormat                738ns × (1.00,1.00)     736ns × (1.00,1.01)  ~
      
      Change-Id: I03ce152852edec404538f6c20eb650fac82e2aa2
      Reviewed-on: https://go-review.googlesource.com/9224Reviewed-by: 's avatarAustin Clements <austin@google.com>
      653d5607
    • Russ Cox's avatar
      runtime: replace needwb() with writeBarrierEnabled · 32d6fbcb
      Russ Cox authored
      Reduce the write barrier check to a single load and compare
      so that it can be inlined into write barrier use sites.
      Makes the standard write barrier a little faster too.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              17.9s × (0.99,1.01)     17.9s × (1.00,1.01)  ~
      BenchmarkFannkuch11                4.35s × (1.00,1.00)     4.43s × (1.00,1.00)  +1.81%
      BenchmarkFmtFprintfEmpty           120ns × (0.93,1.06)     110ns × (1.00,1.06)  -7.92%
      BenchmarkFmtFprintfString          479ns × (0.99,1.00)     487ns × (0.99,1.00)  +1.67%
      BenchmarkFmtFprintfInt             452ns × (0.99,1.02)     450ns × (0.99,1.00)  ~
      BenchmarkFmtFprintfIntInt          766ns × (0.99,1.01)     762ns × (1.00,1.00)  ~
      BenchmarkFmtFprintfPrefixedInt     576ns × (0.98,1.01)     584ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfFloat           730ns × (1.00,1.01)     738ns × (1.00,1.00)  +1.16%
      BenchmarkFmtManyArgs              2.84µs × (0.99,1.00)    2.80µs × (1.00,1.01)  -1.22%
      BenchmarkGobDecode                39.3ms × (0.98,1.01)    39.0ms × (0.99,1.00)  ~
      BenchmarkGobEncode                39.5ms × (0.99,1.01)    37.8ms × (0.98,1.01)  -4.33%
      BenchmarkGzip                      663ms × (1.00,1.01)     661ms × (0.99,1.01)  ~
      BenchmarkGunzip                    143ms × (1.00,1.00)     142ms × (1.00,1.00)  ~
      BenchmarkHTTPClientServer          132µs × (0.99,1.01)     132µs × (0.99,1.01)  ~
      BenchmarkJSONEncode               57.4ms × (0.99,1.01)    56.3ms × (0.99,1.01)  -1.96%
      BenchmarkJSONDecode                139ms × (0.99,1.00)     138ms × (0.99,1.01)  ~
      BenchmarkMandelbrot200            6.03ms × (1.00,1.00)    6.01ms × (1.00,1.00)  ~
      BenchmarkGoParse                  10.3ms × (0.89,1.14)    10.2ms × (0.87,1.05)  ~
      BenchmarkRegexpMatchEasy0_32       209ns × (1.00,1.00)     208ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchEasy0_1K       591ns × (0.99,1.00)     588ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchEasy1_32       184ns × (0.99,1.02)     182ns × (0.99,1.01)  ~
      BenchmarkRegexpMatchEasy1_1K      1.01µs × (1.00,1.00)    0.99µs × (1.00,1.01)  -2.33%
      BenchmarkRegexpMatchMedium_32      330ns × (1.00,1.00)     323ns × (1.00,1.01)  -2.12%
      BenchmarkRegexpMatchMedium_1K     92.6µs × (1.00,1.00)    89.9µs × (1.00,1.00)  -2.92%
      BenchmarkRegexpMatchHard_32       4.80µs × (0.95,1.00)    4.72µs × (0.95,1.01)  ~
      BenchmarkRegexpMatchHard_1K        136µs × (1.00,1.00)     133µs × (1.00,1.01)  -1.86%
      BenchmarkRevcomp                   900ms × (0.99,1.04)     900ms × (1.00,1.05)  ~
      BenchmarkTemplate                  172ms × (1.00,1.00)     168ms × (0.99,1.01)  -2.07%
      BenchmarkTimeParse                 637ns × (1.00,1.00)     637ns × (1.00,1.00)  ~
      BenchmarkTimeFormat                744ns × (1.00,1.01)     738ns × (1.00,1.00)  -0.67%
      
      Change-Id: I4ecc925805da1f5ee264377f1f7574f54ee575e7
      Reviewed-on: https://go-review.googlesource.com/9321Reviewed-by: 's avatarAustin Clements <austin@google.com>
      32d6fbcb
    • Russ Cox's avatar
      runtime: change unused argument in fat write barriers from pointer to scalar · 2050f571
      Russ Cox authored
      The argument is unused, only present for alignment of the
      following argument. The compiler today always passes a zero
      but I'd rather not write anything there during the call sequence,
      so mark it as a scalar so the garbage collector won't look at it.
      
      As expected, no significant performance change.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              17.9s × (0.99,1.00)     17.9s × (0.99,1.01)  ~
      BenchmarkFannkuch11                4.35s × (1.00,1.00)     4.35s × (1.00,1.00)  ~
      BenchmarkFmtFprintfEmpty           120ns × (0.94,1.05)     120ns × (0.93,1.06)  ~
      BenchmarkFmtFprintfString          477ns × (1.00,1.00)     479ns × (0.99,1.00)  ~
      BenchmarkFmtFprintfInt             450ns × (0.99,1.01)     452ns × (0.99,1.02)  ~
      BenchmarkFmtFprintfIntInt          765ns × (0.99,1.01)     766ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfPrefixedInt     569ns × (0.99,1.01)     576ns × (0.98,1.01)  ~
      BenchmarkFmtFprintfFloat           728ns × (1.00,1.00)     730ns × (1.00,1.01)  ~
      BenchmarkFmtManyArgs              2.82µs × (0.99,1.01)    2.84µs × (0.99,1.00)  ~
      BenchmarkGobDecode                39.1ms × (0.99,1.01)    39.3ms × (0.98,1.01)  ~
      BenchmarkGobEncode                39.4ms × (0.99,1.01)    39.5ms × (0.99,1.01)  ~
      BenchmarkGzip                      661ms × (0.99,1.01)     663ms × (1.00,1.01)  ~
      BenchmarkGunzip                    143ms × (1.00,1.00)     143ms × (1.00,1.00)  ~
      BenchmarkHTTPClientServer          133µs × (0.99,1.01)     132µs × (0.99,1.01)  ~
      BenchmarkJSONEncode               57.3ms × (0.99,1.04)    57.4ms × (0.99,1.01)  ~
      BenchmarkJSONDecode                139ms × (0.99,1.00)     139ms × (0.99,1.00)  ~
      BenchmarkMandelbrot200            6.02ms × (1.00,1.00)    6.03ms × (1.00,1.00)  ~
      BenchmarkGoParse                  9.72ms × (0.92,1.11)   10.31ms × (0.89,1.14)  ~
      BenchmarkRegexpMatchEasy0_32       209ns × (1.00,1.01)     209ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchEasy0_1K       592ns × (0.99,1.00)     591ns × (0.99,1.00)  ~
      BenchmarkRegexpMatchEasy1_32       183ns × (0.98,1.01)     184ns × (0.99,1.02)  ~
      BenchmarkRegexpMatchEasy1_1K      1.01µs × (1.00,1.01)    1.01µs × (1.00,1.00)  ~
      BenchmarkRegexpMatchMedium_32      330ns × (1.00,1.00)     330ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchMedium_1K     92.4µs × (1.00,1.00)    92.6µs × (1.00,1.00)  ~
      BenchmarkRegexpMatchHard_32       4.77µs × (0.95,1.01)    4.80µs × (0.95,1.00)  ~
      BenchmarkRegexpMatchHard_1K        136µs × (1.00,1.00)     136µs × (1.00,1.00)  ~
      BenchmarkRevcomp                   906ms × (0.99,1.05)     900ms × (0.99,1.04)  ~
      BenchmarkTemplate                  171ms × (0.99,1.01)     172ms × (1.00,1.00)  ~
      BenchmarkTimeParse                 638ns × (1.00,1.00)     637ns × (1.00,1.00)  ~
      BenchmarkTimeFormat                745ns × (0.99,1.02)     744ns × (1.00,1.01)  ~
      
      Change-Id: I0aeac5dc7adfd75e2223e3aabfedc7818d339f9b
      Reviewed-on: https://go-review.googlesource.com/9320Reviewed-by: 's avatarAustin Clements <austin@google.com>
      2050f571
    • Russ Cox's avatar
      cmd/internal/gc: accept comma-separated list of name=value for -d · 6c328efc
      Russ Cox authored
      This should obviously have no performance impact.
      Listing numbers just as a sanity check for the benchmark
      comparison program: it should (and does) find nothing
      to report.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              18.0s × (0.99,1.01)     17.9s × (0.99,1.00)  ~
      BenchmarkFannkuch11                4.36s × (1.00,1.00)     4.35s × (1.00,1.00)  ~
      BenchmarkFmtFprintfEmpty           120ns × (0.99,1.06)     120ns × (0.94,1.05)  ~
      BenchmarkFmtFprintfString          480ns × (0.99,1.01)     477ns × (1.00,1.00)  ~
      BenchmarkFmtFprintfInt             451ns × (0.99,1.01)     450ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfIntInt          766ns × (0.99,1.01)     765ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfPrefixedInt     569ns × (0.99,1.01)     569ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfFloat           728ns × (1.00,1.01)     728ns × (1.00,1.00)  ~
      BenchmarkFmtManyArgs              2.81µs × (1.00,1.01)    2.82µs × (0.99,1.01)  ~
      BenchmarkGobDecode                39.4ms × (0.99,1.01)    39.1ms × (0.99,1.01)  ~
      BenchmarkGobEncode                39.4ms × (0.99,1.00)    39.4ms × (0.99,1.01)  ~
      BenchmarkGzip                      660ms × (1.00,1.01)     661ms × (0.99,1.01)  ~
      BenchmarkGunzip                    143ms × (1.00,1.00)     143ms × (1.00,1.00)  ~
      BenchmarkHTTPClientServer          132µs × (0.99,1.01)     133µs × (0.99,1.01)  ~
      BenchmarkJSONEncode               57.1ms × (0.99,1.01)    57.3ms × (0.99,1.04)  ~
      BenchmarkJSONDecode                138ms × (1.00,1.01)     139ms × (0.99,1.00)  ~
      BenchmarkMandelbrot200            6.02ms × (1.00,1.00)    6.02ms × (1.00,1.00)  ~
      BenchmarkGoParse                  9.79ms × (0.92,1.07)    9.72ms × (0.92,1.11)  ~
      BenchmarkRegexpMatchEasy0_32       210ns × (1.00,1.01)     209ns × (1.00,1.01)  ~
      BenchmarkRegexpMatchEasy0_1K       593ns × (0.99,1.01)     592ns × (0.99,1.00)  ~
      BenchmarkRegexpMatchEasy1_32       182ns × (0.99,1.01)     183ns × (0.98,1.01)  ~
      BenchmarkRegexpMatchEasy1_1K      1.01µs × (1.00,1.01)    1.01µs × (1.00,1.01)  ~
      BenchmarkRegexpMatchMedium_32      331ns × (1.00,1.00)     330ns × (1.00,1.00)  ~
      BenchmarkRegexpMatchMedium_1K     92.6µs × (1.00,1.01)    92.4µs × (1.00,1.00)  ~
      BenchmarkRegexpMatchHard_32       4.58µs × (0.99,1.05)    4.77µs × (0.95,1.01)  ~
      BenchmarkRegexpMatchHard_1K        136µs × (1.00,1.01)     136µs × (1.00,1.00)  ~
      BenchmarkRevcomp                   900ms × (0.99,1.06)     906ms × (0.99,1.05)  ~
      BenchmarkTemplate                  171ms × (1.00,1.01)     171ms × (0.99,1.01)  ~
      BenchmarkTimeParse                 637ns × (1.00,1.00)     638ns × (1.00,1.00)  ~
      BenchmarkTimeFormat                742ns × (1.00,1.00)     745ns × (0.99,1.02)  ~
      
      Change-Id: I59ec875715cb176bbffa709546370a6a7fc5a75d
      Reviewed-on: https://go-review.googlesource.com/9309Reviewed-by: 's avatarAustin Clements <austin@google.com>
      6c328efc
    • Russ Cox's avatar
      cmd/internal/gc: use MOV R0, R1 instead of LEA 0(R0), R1 in Agen · 0f0bc0f0
      Russ Cox authored
      Minor code generation optimization I've been meaning to do
      for a while and noticed while working on the emitted write
      barrier code. Using MOV lets the compiler and maybe the
      processor do copy propagation.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              17.9s × (0.99,1.01)     18.0s × (0.99,1.01)  ~
      BenchmarkFannkuch11                4.42s × (1.00,1.00)     4.36s × (1.00,1.00)  -1.39%
      BenchmarkFmtFprintfEmpty           118ns × (0.96,1.02)     120ns × (0.99,1.06)  ~
      BenchmarkFmtFprintfString          486ns × (0.99,1.01)     480ns × (0.99,1.01)  -1.34%
      BenchmarkFmtFprintfInt             457ns × (0.99,1.01)     451ns × (0.99,1.01)  -1.31%
      BenchmarkFmtFprintfIntInt          768ns × (1.00,1.01)     766ns × (0.99,1.01)  ~
      BenchmarkFmtFprintfPrefixedInt     584ns × (0.99,1.03)     569ns × (0.99,1.01)  -2.57%
      BenchmarkFmtFprintfFloat           739ns × (0.99,1.00)     728ns × (1.00,1.01)  -1.49%
      BenchmarkFmtManyArgs              2.77µs × (1.00,1.00)    2.81µs × (1.00,1.01)  +1.53%
      BenchmarkGobDecode                39.3ms × (0.99,1.01)    39.4ms × (0.99,1.01)  ~
      BenchmarkGobEncode                39.4ms × (0.99,1.00)    39.4ms × (0.99,1.00)  ~
      BenchmarkGzip                      661ms × (0.99,1.01)     660ms × (1.00,1.01)  ~
      BenchmarkGunzip                    142ms × (1.00,1.00)     143ms × (1.00,1.00)  +0.20%
      BenchmarkHTTPClientServer          133µs × (0.98,1.01)     132µs × (0.99,1.01)  ~
      BenchmarkJSONEncode               56.5ms × (0.99,1.01)    57.1ms × (0.99,1.01)  +0.94%
      BenchmarkJSONDecode                143ms × (1.00,1.00)     138ms × (1.00,1.01)  -3.22%
      BenchmarkMandelbrot200            6.01ms × (1.00,1.00)    6.02ms × (1.00,1.00)  ~
      BenchmarkGoParse                  9.63ms × (0.94,1.07)    9.79ms × (0.92,1.07)  ~
      BenchmarkRegexpMatchEasy0_32       210ns × (1.00,1.00)     210ns × (1.00,1.01)  ~
      BenchmarkRegexpMatchEasy0_1K       596ns × (0.99,1.01)     593ns × (0.99,1.01)  ~
      BenchmarkRegexpMatchEasy1_32       184ns × (0.99,1.01)     182ns × (0.99,1.01)  ~
      BenchmarkRegexpMatchEasy1_1K      1.01µs × (0.99,1.01)    1.01µs × (1.00,1.01)  ~
      BenchmarkRegexpMatchMedium_32      327ns × (1.00,1.01)     331ns × (1.00,1.00)  +1.22%
      BenchmarkRegexpMatchMedium_1K     93.0µs × (1.00,1.02)    92.6µs × (1.00,1.01)  ~
      BenchmarkRegexpMatchHard_32       4.76µs × (0.95,1.01)    4.58µs × (0.99,1.05)  ~
      BenchmarkRegexpMatchHard_1K        136µs × (1.00,1.01)     136µs × (1.00,1.01)  ~
      BenchmarkRevcomp                   892ms × (1.00,1.01)     900ms × (0.99,1.06)  ~
      BenchmarkTemplate                  175ms × (0.99,1.00)     171ms × (1.00,1.01)  -2.36%
      BenchmarkTimeParse                 638ns × (1.00,1.00)     637ns × (1.00,1.00)  ~
      BenchmarkTimeFormat                772ns × (1.00,1.00)     742ns × (1.00,1.00)  -3.95%
      
      Change-Id: I6504e310cb9cf48a73d539c478b4dbcacde208b2
      Reviewed-on: https://go-review.googlesource.com/9308Reviewed-by: 's avatarAustin Clements <austin@google.com>
      0f0bc0f0
    • Russ Cox's avatar
      cmd/internal/gc: emit write barriers at lower level · 0ad4f8b1
      Russ Cox authored
      This is primarily preparation for inlining, not an optimization by itself,
      but it still helps some.
      
      name                                       old                     new          delta
      BenchmarkBinaryTree17              18.2s × (0.99,1.01)     17.9s × (0.99,1.01)  -1.57%
      BenchmarkFannkuch11                4.44s × (1.00,1.00)     4.42s × (1.00,1.00)  -0.40%
      BenchmarkFmtFprintfEmpty           119ns × (0.95,1.02)     118ns × (0.96,1.02)  ~
      BenchmarkFmtFprintfString          501ns × (0.99,1.02)     486ns × (0.99,1.01)  -2.89%
      BenchmarkFmtFprintfInt             474ns × (0.99,1.00)     457ns × (0.99,1.01)  -3.59%
      BenchmarkFmtFprintfIntInt          792ns × (1.00,1.00)     768ns × (1.00,1.01)  -3.03%
      BenchmarkFmtFprintfPrefixedInt     574ns × (1.00,1.01)     584ns × (0.99,1.03)  +1.83%
      BenchmarkFmtFprintfFloat           749ns × (1.00,1.00)     739ns × (0.99,1.00)  -1.34%
      BenchmarkFmtManyArgs              2.94µs × (1.00,1.01)    2.77µs × (1.00,1.00)  -5.76%
      BenchmarkGobDecode                39.5ms × (0.99,1.01)    39.3ms × (0.99,1.01)  ~
      BenchmarkGobEncode                39.4ms × (1.00,1.01)    39.4ms × (0.99,1.00)  ~
      BenchmarkGzip                      658ms × (1.00,1.01)     661ms × (0.99,1.01)  ~
      BenchmarkGunzip                    142ms × (1.00,1.00)     142ms × (1.00,1.00)  +0.22%
      BenchmarkHTTPClientServer          134µs × (0.99,1.01)     133µs × (0.98,1.01)  ~
      BenchmarkJSONEncode               57.1ms × (0.99,1.01)    56.5ms × (0.99,1.01)  ~
      BenchmarkJSONDecode                141ms × (1.00,1.00)     143ms × (1.00,1.00)  +1.09%
      BenchmarkMandelbrot200            6.01ms × (1.00,1.00)    6.01ms × (1.00,1.00)  ~
      BenchmarkGoParse                  10.1ms × (0.91,1.09)     9.6ms × (0.94,1.07)  ~
      BenchmarkRegexpMatchEasy0_32       207ns × (1.00,1.01)     210ns × (1.00,1.00)  +1.45%
      BenchmarkRegexpMatchEasy0_1K       592ns × (0.99,1.00)     596ns × (0.99,1.01)  +0.68%
      BenchmarkRegexpMatchEasy1_32       184ns × (0.99,1.01)     184ns × (0.99,1.01)  ~
      BenchmarkRegexpMatchEasy1_1K      1.01µs × (1.00,1.00)    1.01µs × (0.99,1.01)  ~
      BenchmarkRegexpMatchMedium_32      327ns × (0.99,1.00)     327ns × (1.00,1.01)  ~
      BenchmarkRegexpMatchMedium_1K     92.5µs × (1.00,1.00)    93.0µs × (1.00,1.02)  +0.48%
      BenchmarkRegexpMatchHard_32       4.79µs × (0.95,1.00)    4.76µs × (0.95,1.01)  ~
      BenchmarkRegexpMatchHard_1K        136µs × (1.00,1.00)     136µs × (1.00,1.01)  ~
      BenchmarkRevcomp                   900ms × (0.99,1.01)     892ms × (1.00,1.01)  ~
      BenchmarkTemplate                  170ms × (0.99,1.01)     175ms × (0.99,1.00)  +2.95%
      BenchmarkTimeParse                 645ns × (1.00,1.00)     638ns × (1.00,1.00)  -1.16%
      BenchmarkTimeFormat                740ns × (1.00,1.00)     772ns × (1.00,1.00)  +4.39%
      
      Change-Id: I0be905e32791e0cb70ff01f169c4b309a971d981
      Reviewed-on: https://go-review.googlesource.com/9159Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0ad4f8b1
    • Josh Bleecher Snyder's avatar
      test: gofmt run.go · 673bd188
      Josh Bleecher Snyder authored
      Clean up after CL 5310.
      
      Change-Id: Ib870e7b9d26eb118eefdaa3e76dcec4a4d459584
      Reviewed-on: https://go-review.googlesource.com/9398Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      673bd188
    • Josh Bleecher Snyder's avatar
      test: set GOMAXPROCS=1 in fixedbugs/issue9110 · 1fb948a0
      Josh Bleecher Snyder authored
      With this fix,
      
      GOMAXPROCS=8 ./all.bash
      
      passes, at least on my machine.
      
      Fixes #10216.
      
      Change-Id: Ib5991950892a1399ec81aced0a52b435e6f83fdf
      Reviewed-on: https://go-review.googlesource.com/9392Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      1fb948a0
    • Mikio Hara's avatar
      net: don't miss testing server teardowns when test fails early · 9bef5cfb
      Mikio Hara authored
      Change-Id: I9fa678e43b4ae3970323cac474b5f86d4d933997
      Reviewed-on: https://go-review.googlesource.com/9382Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9bef5cfb
  2. 27 Apr, 2015 24 commits
  3. 26 Apr, 2015 1 commit