1. 20 Aug, 2016 1 commit
    • Joe Tsai's avatar
      compress/flate: make huffmanBitWriter errors persistent · 8cd04da7
      Joe Tsai authored
      For persistent error handling, the methods of huffmanBitWriter have to be
      consistent about how they check errors. It must either consistently
      check error *before* every operation OR immediately *after* every
      operation. Since most of the current logic uses the previous approach,
      we apply the same style of error checking to writeBits and all calls
      to Write such that they only operate if w.err is already nil going
      into them.
      
      The error handling approach is brittle and easily broken by future commits to
      the code. In the near future, we should switch the logic to use panic at the
      lowest levels and a recover at the edge of the public API to ensure
      that errors are always persistent.
      
      Fixes #16749
      
      Change-Id: Ie1d83e4ed8842f6911a31e23311cd3cbf38abe8c
      Reviewed-on: https://go-review.googlesource.com/27200Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      8cd04da7
  2. 19 Aug, 2016 18 commits
    • Jaana Burcu Dogan's avatar
      net/http/httptrace: test the order of hooks when ctx has multi ClientTraces · c10f8700
      Jaana Burcu Dogan authored
      Change-Id: I95cae14bb5561947ada9577fb05053f93321a4a8
      Reviewed-on: https://go-review.googlesource.com/27400
      Run-TryBot: Jaana Burcu Dogan <jbd@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c10f8700
    • Michael Matloob's avatar
      cmd/link/internal: rename LSym to Symbol, and add a doc comment. · a072fc2e
      Michael Matloob authored
      I'd also like to document some of its fields, but I don't know
      what they are.
      
      Change-Id: I87d341e255f785d351a8a73e645be668e02b2689
      Reviewed-on: https://go-review.googlesource.com/27399Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a072fc2e
    • Emmanuel Odeke's avatar
      encoding/gob: error out instead of panicking on nil dereference · 0a2a64d8
      Emmanuel Odeke authored
      Do not panic when we encounter nil interface values which are
      invalid values for gob. Previously this wasn't caught yet
      we were calling reflect.*.Type() on reflect.Invalid values
      thereby causing panic:
        `panic: reflect: call of reflect.Value.Type on zero Value.`
      which is a panic not enforced by encoding/gob itself.
      We can catch this and send back an error to the caller.
      
      Fixes #16204
      
      Change-Id: Ie646796db297759a74a02eee5267713adbe0c3a0
      Reviewed-on: https://go-review.googlesource.com/24989Reviewed-by: default avatarRob Pike <r@golang.org>
      Run-TryBot: Rob Pike <r@golang.org>
      0a2a64d8
    • Dmitry Vyukov's avatar
      runtime: increase malloc size classes · 14e59511
      Dmitry Vyukov authored
      When we calculate class sizes, in some cases we discard considerable
      amounts of memory without an apparent reason. For example, we choose
      size 8448 with 6 objects in 7 pages. But we can well use object
      size 9472, which is also 6 objects in 7 pages but +1024 bytes (+12.12%).
      
      Increase class sizes to the max value that leads to the same
      page count/number of objects. Full list of affected size classes:
      
      class 36: pages: 2 size: 1664->1792 +128 (7.69%)
      class 39: pages: 1 size: 2560->2688 +128 (5.0%)
      class 40: pages: 3 size: 2816->3072 +256 (9.9%)
      class 41: pages: 2 size: 3072->3200 +128 (4.16%)
      class 42: pages: 3 size: 3328->3456 +128 (3.84%)
      class 44: pages: 3 size: 4608->4864 +256 (5.55%)
      class 47: pages: 4 size: 6400->6528 +128 (2.0%)
      class 48: pages: 5 size: 6656->6784 +128 (1.92%)
      class 51: pages: 7 size: 8448->9472 +1024 (12.12%)
      class 52: pages: 6 size: 8704->9728 +1024 (11.76%)
      class 53: pages: 5 size: 9472->10240 +768 (8.10%)
      class 54: pages: 4 size: 10496->10880 +384 (3.65%)
      class 57: pages: 7 size: 14080->14336 +256 (1.81%)
      class 59: pages: 9 size: 16640->18432 +1792 (10.76%)
      class 60: pages: 7 size: 17664->19072 +1408 (7.97%)
      class 62: pages: 8 size: 21248->21760 +512 (2.40%)
      class 64: pages: 10 size: 24832->27264 +2432 (9.79%)
      class 65: pages: 7 size: 28416->28672 +256 (0.90%)
      
      name                      old time/op    new time/op    delta
      BinaryTree17-12              2.59s ± 5%     2.52s ± 4%    ~     (p=0.132 n=6+6)
      Fannkuch11-12                2.13s ± 3%     2.17s ± 3%    ~     (p=0.180 n=6+6)
      FmtFprintfEmpty-12          47.0ns ± 3%    46.6ns ± 1%    ~     (p=0.355 n=6+5)
      FmtFprintfString-12          131ns ± 0%     131ns ± 1%    ~     (p=0.476 n=4+6)
      FmtFprintfInt-12             121ns ± 6%     122ns ± 2%    ~     (p=0.511 n=6+6)
      FmtFprintfIntInt-12          182ns ± 2%     186ns ± 1%  +2.20%  (p=0.015 n=6+6)
      FmtFprintfPrefixedInt-12     184ns ± 5%     181ns ± 2%    ~     (p=0.645 n=6+6)
      FmtFprintfFloat-12           272ns ± 7%     265ns ± 1%    ~     (p=1.000 n=6+5)
      FmtManyArgs-12               783ns ± 2%     802ns ± 2%  +2.38%  (p=0.017 n=6+6)
      GobDecode-12                7.04ms ± 4%    7.00ms ± 2%    ~     (p=1.000 n=6+6)
      GobEncode-12                6.36ms ± 6%    6.17ms ± 6%    ~     (p=0.240 n=6+6)
      Gzip-12                      242ms ±14%     233ms ± 7%    ~     (p=0.310 n=6+6)
      Gunzip-12                   36.6ms ±22%    36.0ms ± 9%    ~     (p=0.841 n=5+5)
      HTTPClientServer-12         93.1µs ±29%    88.0µs ±32%    ~     (p=0.240 n=6+6)
      JSONEncode-12               27.1ms ±39%    26.2ms ±35%    ~     (p=0.589 n=6+6)
      JSONDecode-12               71.7ms ±36%    71.5ms ±36%    ~     (p=0.937 n=6+6)
      Mandelbrot200-12            4.78ms ±10%    4.70ms ±16%    ~     (p=0.394 n=6+6)
      GoParse-12                  4.86ms ±34%    4.95ms ±36%    ~     (p=1.000 n=6+6)
      RegexpMatchEasy0_32-12       110ns ±37%     110ns ±36%    ~     (p=0.660 n=6+6)
      RegexpMatchEasy0_1K-12       240ns ±38%     234ns ±47%    ~     (p=0.554 n=6+6)
      RegexpMatchEasy1_32-12      77.2ns ± 2%    77.2ns ±10%    ~     (p=0.699 n=6+6)
      RegexpMatchEasy1_1K-12       337ns ± 5%     331ns ± 4%    ~     (p=0.552 n=6+6)
      RegexpMatchMedium_32-12      125ns ±13%     132ns ±26%    ~     (p=0.561 n=6+6)
      RegexpMatchMedium_1K-12     35.9µs ± 3%    36.1µs ± 5%    ~     (p=0.818 n=6+6)
      RegexpMatchHard_32-12       1.81µs ± 4%    1.82µs ± 5%    ~     (p=0.452 n=5+5)
      RegexpMatchHard_1K-12       52.4µs ± 2%    54.4µs ± 3%  +3.84%  (p=0.002 n=6+6)
      Revcomp-12                   401ms ± 2%     390ms ± 1%  -2.82%  (p=0.002 n=6+6)
      Template-12                 54.5ms ± 3%    54.6ms ± 1%    ~     (p=0.589 n=6+6)
      TimeParse-12                 294ns ± 1%     298ns ± 2%    ~     (p=0.160 n=6+6)
      TimeFormat-12                323ns ± 4%     318ns ± 5%    ~     (p=0.297 n=6+6)
      
      name                      old speed      new speed      delta
      GobDecode-12               109MB/s ± 4%   110MB/s ± 2%    ~     (p=1.000 n=6+6)
      GobEncode-12               121MB/s ± 6%   125MB/s ± 6%    ~     (p=0.240 n=6+6)
      Gzip-12                   80.4MB/s ±12%  83.3MB/s ± 7%    ~     (p=0.310 n=6+6)
      Gunzip-12                  495MB/s ±41%   541MB/s ± 9%    ~     (p=0.931 n=6+5)
      JSONEncode-12             80.7MB/s ±39%  82.8MB/s ±34%    ~     (p=0.589 n=6+6)
      JSONDecode-12             30.4MB/s ±40%  31.0MB/s ±37%    ~     (p=0.937 n=6+6)
      GoParse-12                13.2MB/s ±33%  13.2MB/s ±35%    ~     (p=1.000 n=6+6)
      RegexpMatchEasy0_32-12     321MB/s ±34%   326MB/s ±34%    ~     (p=0.699 n=6+6)
      RegexpMatchEasy0_1K-12    4.49GB/s ±31%  4.74GB/s ±37%    ~     (p=0.589 n=6+6)
      RegexpMatchEasy1_32-12     414MB/s ± 2%   415MB/s ± 9%    ~     (p=0.699 n=6+6)
      RegexpMatchEasy1_1K-12    3.03GB/s ± 5%  3.09GB/s ± 4%    ~     (p=0.699 n=6+6)
      RegexpMatchMedium_32-12   7.99MB/s ±12%  7.68MB/s ±22%    ~     (p=0.589 n=6+6)
      RegexpMatchMedium_1K-12   28.5MB/s ± 3%  28.4MB/s ± 5%    ~     (p=0.818 n=6+6)
      RegexpMatchHard_32-12     17.7MB/s ± 4%  17.0MB/s ±15%    ~     (p=0.351 n=5+6)
      RegexpMatchHard_1K-12     19.6MB/s ± 2%  18.8MB/s ± 3%  -3.67%  (p=0.002 n=6+6)
      Revcomp-12                 634MB/s ± 2%   653MB/s ± 1%  +2.89%  (p=0.002 n=6+6)
      Template-12               35.6MB/s ± 3%  35.5MB/s ± 1%    ~     (p=0.615 n=6+6)
      
      Change-Id: I465a47f74227f316e3abea231444f48c7a30ef85
      Reviewed-on: https://go-review.googlesource.com/24493
      Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      14e59511
    • Jaana Burcu Dogan's avatar
      context: test WithCancel with canceled parent · ab9137dd
      Jaana Burcu Dogan authored
      Change-Id: I32079cc12cfffb8520f0073a8b5119705dc0cd1b
      Reviewed-on: https://go-review.googlesource.com/27401Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ab9137dd
    • Austin Clements's avatar
      runtime: fix check for vacuous page boundary rounding again · 3de7dbb1
      Austin Clements authored
      The previous fix for this, commit 336dad2a, had everything right in
      the commit message, but reversed the test in the code. Fix the test in
      the code.
      
      This reversal effectively disabled the scavenger on large page systems
      *except* in the rare cases where this code was originally wrong, which
      is why it didn't obviously show up in testing.
      
      Fixes #16644. Again. :(
      
      Change-Id: I27cce4aea13de217197db4b628f17860f27ce83e
      Reviewed-on: https://go-review.googlesource.com/27402
      Run-TryBot: Austin Clements <austin@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      3de7dbb1
    • Dmitry Vyukov's avatar
      internal/trace: fix analysis of EvGoWaiting/EvGoInSyscall events · a50f9859
      Dmitry Vyukov authored
      When tracing is started in the middle of program execution,
      we already have a number of runnable goroutines and a number
      of blocked/in syscall goroutines. In order to reflect these
      goroutines in the trace, we emit EvGoCreate for all existing
      goroutines. Then for blocked/in syscall goroutines we additionally
      emit EvGoWaiting/EvGoInSyscall events. These events don't reset g.ev
      during trace analysis. So next EvGoStart finds g.ev set to the
      previous EvGoCreate. As the result time between EvGoCreate and
      EvGoStart is accounted as scheduler latency. While in reality
      it is blocking/syscall time.
      
      Properly reset g.ev for EvGoWaiting/EvGoInSyscall events.
      
      Change-Id: I0615ba31ed7567600a0667ebb27458481da73adb
      Reviewed-on: https://go-review.googlesource.com/25572Reviewed-by: default avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      a50f9859
    • Brad Fitzpatrick's avatar
      io: fix infinite loop bug in MultiReader · 93372673
      Brad Fitzpatrick authored
      If an io.Reader returned (non-zero, EOF), MultiReader would yield
      bytes forever.
      
      This bug has existed before Go 1 (!!), introduced in the original
      MultiReader implementation in https://golang.org/cl/1764043 and also
      survived basically the only update to this code since then
      (https://golang.org/cl/17873, git rev ccdca832), which was added in
      Go 1.7.
      
      This just bit me when writing a test for some unrelated code.
      
      Fixes #16795
      
      Change-Id: I36e6a701269793935d19a47ac12f67b07179fbff
      Reviewed-on: https://go-review.googlesource.com/27397
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Reviewed-by: default avatarJoe Tsai <thebrokentoaster@gmail.com>
      93372673
    • Austin Clements's avatar
      runtime: fix out of date comments · 244efebe
      Austin Clements authored
      The transition from mark 1 to mark 2 no longer enqueues new root
      marking jobs, but some of the comments still refer to this. Fix these
      comments.
      
      Change-Id: I3f98628dba32c5afe30495ab495da42b32291e9e
      Reviewed-on: https://go-review.googlesource.com/24965Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      244efebe
    • Adam Langley's avatar
      crypto/x509: allow a leaf certificate to be specified directly as root. · 8ad70a54
      Adam Langley authored
      In other systems, putting a leaf certificate in the root store works to
      express that exactly that certificate is acceptable. This change makes
      that work in Go too.
      
      Fixes #16763.
      
      Change-Id: I5c0a8dbc47aa631b23dd49061fb217ed8b0c719c
      Reviewed-on: https://go-review.googlesource.com/27393
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      8ad70a54
    • Adam Langley's avatar
      crypto/x509: recognise ISO OID for RSA+SHA1 · bcd54f6c
      Adam Langley authored
      For some reason, ISO decided to duplicate the OID for RSA+SHA1. Most
      pertinantly, the makecert.exe utility on Windows is known to have used
      this OID.
      
      This change makes the ISO OID an alias for the normal one.
      
      Change-Id: I60b76265bf1721282bdb0d5c99c98d227c18a878
      Reviewed-on: https://go-review.googlesource.com/27394
      Run-TryBot: Adam Langley <agl@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      bcd54f6c
    • Adam Langley's avatar
      encoding/pem: be stricter about the ending line. · 0da545d1
      Adam Langley authored
      Previously the code didn't check the type and final five dashes of the
      ending line of a PEM block.
      
      Fixes #16335.
      
      Change-Id: Ia544e8739ea738d767cfe56c8d46204214ec0b5a
      Reviewed-on: https://go-review.googlesource.com/27391
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      0da545d1
    • Brad Fitzpatrick's avatar
      cmd/internal/obj: update Bool2int to the form optimized by the compiler · a25a7ad7
      Brad Fitzpatrick authored
      As of https://golang.org/cl/22711 the compiler optimizes this form.
      
      Updates #6011
      
      Change-Id: Ibc6c529dfa24d42f4aab78ebd6722e1d72cb6038
      Reviewed-on: https://go-review.googlesource.com/27395Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a25a7ad7
    • Matthew Dempsky's avatar
      cmd/compile/internal/syntax: match old parser errors and line numbers · 70544c91
      Matthew Dempsky authored
      This makes a bunch of changes to package syntax to tweak line numbers
      for AST nodes. For example, short variable declaration statements are
      now associated with the location of the ":=" token, and function calls
      are associated with the location of the final ")" token. These help
      satisfy many unit tests that assume the old parser's behavior.
      
      Because many of these changes are questionable, they're guarded behind
      a new "gcCompat" const to make them easy to identify and revisit in
      the future.
      
      A handful of remaining tests are too difficult to make behave
      identically. These have been updated to execute with -newparser=0 and
      comments explaining why they need to be fixed.
      
      all.bash now passes with both the old and new parsers.
      
      Change-Id: Iab834b71ca8698d39269f261eb5c92a0d55a3bf4
      Reviewed-on: https://go-review.googlesource.com/27199
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      70544c91
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: use new AST parser · 2ff46394
      Matthew Dempsky authored
      Introduce a new noder type to transform package syntax's AST into gc's
      Node tree. Hidden behind a new -newparser flag.
      
      Change-Id: Id0e862ef6196c41533876afc4ec289e21d422d18
      Reviewed-on: https://go-review.googlesource.com/27198
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      2ff46394
    • Matthew Dempsky's avatar
      cmd/compile/internal/syntax: expose additional information for gc · 11779362
      Matthew Dempsky authored
      gc needs access to line offsets for Nodes. It also needs access to the
      end line offset for function bodies so it knows what line number to
      use for things like implicit returns and defer executions.
      
      Lastly, include an extra bool to distinguish between simple and full
      slice expressions. This is redundant in valid parse trees, but needed
      by gc for producing complete warnings in invalid inputs.
      
      Change-Id: I64baf334a35c72336d26fa6755c67eb9d6f4e93c
      Reviewed-on: https://go-review.googlesource.com/27196Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      11779362
    • Brad Fitzpatrick's avatar
      log/syslog: document that Dial uses net.Dial parameters, add example · 4e8c1137
      Brad Fitzpatrick authored
      Fixes #16761
      
      Change-Id: I709daa87926a31e5f8fd46a4c5ef69718ae349b1
      Reviewed-on: https://go-review.googlesource.com/27209Reviewed-by: default avatarChris Broadfoot <cbro@golang.org>
      4e8c1137
    • Brad Fitzpatrick's avatar
      os: reference LookupEnv from the Getenv docs · 55ea153b
      Brad Fitzpatrick authored
      Fixes #16782
      
      Change-Id: If54917bf5ca1588d8a6d443c3aa6e1d4ada6b620
      Reviewed-on: https://go-review.googlesource.com/27322Reviewed-by: default avataranatoly techtonik <techtonik@gmail.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      55ea153b
  3. 18 Aug, 2016 21 commits