1. 15 Nov, 2017 21 commits
    • Russ Cox's avatar
      doc/contrib.html: add Go 1.10 to release list · 4f6035ae
      Russ Cox authored
      Apparently we maintain this list by hand (for example, CL 52351).
      
      Change-Id: I0a0b346cf2b7b547729cb1d0fa1642de447f7bba
      Reviewed-on: https://go-review.googlesource.com/78117
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4f6035ae
    • Russ Cox's avatar
      cmd/dist: adjust package doc · f1966de6
      Russ Cox authored
      Mainly capitalize the first letter.
      (Followup to CL 54351.)
      
      Change-Id: I2d5c3d72c53d3468de7a9d4af8bd009182ff3d38
      Reviewed-on: https://go-review.googlesource.com/78114
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f1966de6
    • Russ Cox's avatar
      bytes, strings: restore O(1) behavior of IndexAny(s, "") and LastIndexAny(s, "") · 2a166c93
      Russ Cox authored
      CL 65851 (bytes) and CL 65910 (strings) “improve[d] readability”
      by removing the special case that bypassed the whole function body
      when chars == "". In doing so, yes, the function was unindented a
      level, which is nice, but the runtime of that case went from O(1) to O(n)
      where n = len(s).
      
      I don't know if anyone's code depends on the O(1) behavior in this case,
      but quite possibly someone's does.
      
      This CL adds the special case back, with a comment to prevent future
      deletions, and without reindenting each function body in full.
      
      Change-Id: I5aba33922b304dd1b8657e6d51d6c937a7f95c81
      Reviewed-on: https://go-review.googlesource.com/78112
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      2a166c93
    • Russ Cox's avatar
      bytes: make ExampleTrimLeft and ExampleTrimRight match · e7628bee
      Russ Cox authored
      ExampleTrimLeft was inexplicably complex.
      
      Change-Id: I13ca81bdeba728bdd632acf82e3a1101d29b9f39
      Reviewed-on: https://go-review.googlesource.com/78111
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      e7628bee
    • Russ Cox's avatar
      bytes: change ExampleReader_Len to use a non-ASCII string · 22671e73
      Russ Cox authored
      This should help make clear that Len is not counting runes.
      Also delete empty string, which doesn't add much.
      
      Change-Id: I1602352df1897fef6e855e9db0bababb8ab788ca
      Reviewed-on: https://go-review.googlesource.com/78110
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      22671e73
    • Russ Cox's avatar
      doc/go1.10: first draft of release notes · 04344266
      Russ Cox authored
      Change-Id: If7ec07be4ecb0c1d6a1eb5c0740f150473aea6fa
      Reviewed-on: https://go-review.googlesource.com/78130
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      04344266
    • Joe Tsai's avatar
      archive/tar: change error prefix · d9fb9e7c
      Joe Tsai authored
      Change error message prefix from "tar:" to "archive/tar:" to maintain
      backwards compatibility with Go1.9 and earlier in the unfortunate event
      that someone is relying on string parsing of errors.
      
      Fixes #22740
      
      Change-Id: I59039c59818a0599e9d3b06bb5a531aa22a389b8
      Reviewed-on: https://go-review.googlesource.com/77933Reviewed-by: 's avatarroger peppe <rogpeppe@gmail.com>
      d9fb9e7c
    • Daniel Martí's avatar
      go/printer: indent lone comments in composite lits · a265f2e9
      Daniel Martí authored
      If a composite literal contains any comments on their own lines without
      any elements, the printer would unindent the comments.
      
      The comments in this edge case are written when the closing '}' is
      written. Indent and outdent first so that the indentation is
      interspersed before the comment is written.
      
      Also note that the go/printer golden tests don't show the exact same
      behaviour that gofmt does. Added a TODO to figure this out in a separate
      CL.
      
      While at it, ensure that the tree conforms to gofmt. The changes are
      unrelated to this indentation fix, however.
      
      Fixes #22355.
      
      Change-Id: I5ac25ac6de95a236f1e123479127cc4dd71e93fe
      Reviewed-on: https://go-review.googlesource.com/74232
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      a265f2e9
    • Austin Clements's avatar
      runtime: fix gctrace STW CPU time and CPU fraction · 89b7a08a
      Austin Clements authored
      The CPU time reported in the gctrace for STW phases is simply
      work.stwprocs times the wall-clock duration of these phases. However,
      work.stwprocs is set to gcprocs(), which is wrong for multiple
      reasons:
      
      1. gcprocs is intended to limit the number of Ms used for mark
         termination based on how well the garbage collector actually
         scales, but the gctrace wants to report how much CPU time is being
         stolen from the application. During STW, that's *all* of the CPU,
         regardless of how many the garbage collector can actually use.
      
      2. gcprocs assumes it's being called during STW, so it limits its
         result to sched.nmidle+1. However, we're not calling it during STW,
         so sched.nmidle is typically quite small, even if GOMAXPROCS is
         quite large.
      
      Fix this by setting work.stwprocs to min(ncpu, GOMAXPROCS). This also
      fixes the overall GC CPU fraction, which is based on the computed CPU
      times.
      
      Fixes #22725.
      
      Change-Id: I64b5ce87e28dbec6870aa068ce7aecdd28c058d1
      Reviewed-on: https://go-review.googlesource.com/77710
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      89b7a08a
    • Keith Randall's avatar
      bytes,strings: in generic Index, use mix of IndexByte and Rabin-Karp · a0252775
      Keith Randall authored
      Use IndexByte first, as it allows us to skip lots of bytes quickly.
      If IndexByte is generating a lot of false positives, switch over to Rabin-Karp.
      
      Experiments for ppc64le
      bytes:
      name                             old time/op  new time/op  delta
      IndexPeriodic/IndexPeriodic2-2   1.12ms ± 0%  0.18ms ± 0%  -83.54%  (p=0.000 n=10+9)
      IndexPeriodic/IndexPeriodic4-2    635µs ± 0%   184µs ± 0%  -71.06%  (p=0.000 n=9+9)
      IndexPeriodic/IndexPeriodic8-2    289µs ± 0%   184µs ± 0%  -36.51%  (p=0.000 n=10+9)
      IndexPeriodic/IndexPeriodic16-2   133µs ± 0%   183µs ± 0%  +37.68%  (p=0.000 n=10+9)
      IndexPeriodic/IndexPeriodic32-2  68.3µs ± 0%  70.2µs ± 0%   +2.76%  (p=0.000 n=10+10)
      IndexPeriodic/IndexPeriodic64-2  35.8µs ± 0%  36.6µs ± 0%   +2.17%  (p=0.000 n=8+10)
      
      strings:
      name                             old time/op  new time/op  delta
      IndexPeriodic/IndexPeriodic2-2    184µs ± 0%   184µs ± 0%   +0.11%  (p=0.029 n=4+4)
      IndexPeriodic/IndexPeriodic4-2    184µs ± 0%   184µs ± 0%     ~     (p=0.886 n=4+4)
      IndexPeriodic/IndexPeriodic8-2    184µs ± 0%   184µs ± 0%     ~     (p=0.486 n=4+4)
      IndexPeriodic/IndexPeriodic16-2   185µs ± 1%   184µs ± 0%     ~     (p=0.343 n=4+4)
      IndexPeriodic/IndexPeriodic32-2   184µs ± 0%    69µs ± 0%  -62.37%  (p=0.029 n=4+4)
      IndexPeriodic/IndexPeriodic64-2   184µs ± 0%    37µs ± 0%  -80.17%  (p=0.029 n=4+4)
      
      Fixes #22578
      
      Change-Id: If2a4d8554cb96bfd699b58149d13ac294615f8b8
      Reviewed-on: https://go-review.googlesource.com/76070Reviewed-by: 's avatarAlberto Donizetti <alb.donizetti@gmail.com>
      a0252775
    • Brad Fitzpatrick's avatar
      crypto/sha1, crypto/sha256: add go:noescape annotations · 0ffe90b5
      Brad Fitzpatrick authored
      Additions to:
      https://go-review.googlesource.com/c/go/+/61570
      https://go-review.googlesource.com/c/go/+/61550
      
      Change-Id: Id89e1119333a8721cb9720a04a01dab1f2705fa9
      Reviewed-on: https://go-review.googlesource.com/77591
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      0ffe90b5
    • Hana Kim's avatar
      runtime/trace: fix a typo in doc · f71cbc8a
      Hana Kim authored
      Change-Id: I63f3d2edb09801c99957a1f744639523fb6d0b62
      Reviewed-on: https://go-review.googlesource.com/60331Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f71cbc8a
    • Awn's avatar
      archive/tar: remove useless type conversions · 23c9db65
      Awn authored
      Change-Id: I259a6ed6a1abc63d2dc39eca7e85f94cf38001cc
      Reviewed-on: https://go-review.googlesource.com/47342Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      23c9db65
    • Marko Mudrinic's avatar
      crypto/sha1, crypto/sha256: fix typo fisrt -> first · 894743b5
      Marko Mudrinic authored
      Change-Id: I9bb7568ca16b420254796eb38dfb86c5ca3399d7
      Reviewed-on: https://go-review.googlesource.com/77890Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      894743b5
    • Ian Lance Taylor's avatar
      cmd/cgo: permit passing string values directly between Go and C · 918396b3
      Ian Lance Taylor authored
      Permit the C preamble to use the _GoString_ type. Permit Go code to
      pass string values directly to those C types. Add accessors for C
      code to retrieve sizes and pointers.
      
      Fixes #6907
      
      Change-Id: I190c88319ec88a3ef0ddb99f342a843ba69fcaa3
      Reviewed-on: https://go-review.googlesource.com/70890
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      918396b3
    • Tim Cooper's avatar
      encoding/pem: add Encode example · 707a4d3f
      Tim Cooper authored
      Change-Id: Ib9ec3524b712e016a9dd2fbee5555362c1a0cb59
      Reviewed-on: https://go-review.googlesource.com/77770Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      707a4d3f
    • wei xiao's avatar
      runtime: IndexByte and memclr perf improvements on arm64 · d259815c
      wei xiao authored
      Update runtime asm_arm64.s and memclr_arm64.s to improve performance by using
      SIMD instructions to do more in parallel. It shows improvement on bytes, html
      and go1 benchmarks (particualrly regexp, which uses IndexByte frequently).
      
      Benchmark results of bytes:
      
      name                     old time/op   new time/op    delta
      IndexByte/10-8            28.5ns ± 0%    19.5ns ± 0%   -31.58%  (p=0.000 n=10+10)
      IndexByte/32-8            52.6ns ± 0%    19.0ns ± 0%   -63.88%  (p=0.000 n=10+10)
      IndexByte/4K-8            4.12µs ± 0%    0.49µs ± 0%   -88.16%  (p=0.000 n=10+10)
      IndexByte/4M-8            4.29ms ± 1%    0.70ms ±26%   -83.65%  (p=0.000 n=10+10)
      IndexByte/64M-8           69.7ms ± 0%    16.0ms ± 0%   -76.97%  (p=0.000 n=9+10)
      IndexBytePortable/10-8    34.0ns ± 0%    34.0ns ± 0%      ~     (all equal)
      IndexBytePortable/32-8    66.1ns ± 0%    66.1ns ± 0%      ~     (p=0.471 n=9+9)
      IndexBytePortable/4K-8    6.17µs ± 0%    6.17µs ± 0%      ~     (all equal)
      IndexBytePortable/4M-8    6.33ms ± 0%    6.35ms ± 0%    +0.21%  (p=0.002 n=10+9)
      IndexBytePortable/64M-8    103ms ± 0%     103ms ± 0%    +0.01%  (p=0.017 n=9+10)
      
      name                     old speed     new speed      delta
      IndexByte/10-8           351MB/s ± 0%   512MB/s ± 0%   +46.14%  (p=0.000 n=9+10)
      IndexByte/32-8           609MB/s ± 0%  1683MB/s ± 0%  +176.40%  (p=0.000 n=10+10)
      IndexByte/4K-8           994MB/s ± 0%  8378MB/s ± 0%  +742.75%  (p=0.000 n=10+10)
      IndexByte/4M-8           977MB/s ± 1%  6149MB/s ±32%  +529.29%  (p=0.000 n=10+10)
      IndexByte/64M-8          963MB/s ± 0%  4182MB/s ± 0%  +334.29%  (p=0.000 n=9+10)
      IndexBytePortable/10-8   294MB/s ± 0%   294MB/s ± 0%    +0.17%  (p=0.000 n=8+8)
      IndexBytePortable/32-8   484MB/s ± 0%   484MB/s ± 0%      ~     (p=0.877 n=9+9)
      IndexBytePortable/4K-8   664MB/s ± 0%   664MB/s ± 0%      ~     (p=0.242 n=8+9)
      IndexBytePortable/4M-8   662MB/s ± 0%   661MB/s ± 0%    -0.21%  (p=0.002 n=10+9)
      IndexBytePortable/64M-8  652MB/s ± 0%   652MB/s ± 0%      ~     (p=0.065 n=10+10)
      
      Benchmark results of html:
      
      name              old time/op  new time/op  delta
      Escape-8          62.0µs ± 1%  61.0µs ± 1%   -1.69%  (p=0.000 n=9+10)
      EscapeNone-8      10.2µs ± 0%  10.2µs ± 0%   -0.09%  (p=0.022 n=9+10)
      Unescape-8        71.9µs ± 0%  68.7µs ± 0%   -4.35%  (p=0.000 n=10+10)
      UnescapeNone-8    4.03µs ± 0%  0.48µs ± 0%  -88.08%  (p=0.000 n=10+10)
      UnescapeSparse-8  10.7µs ± 2%   7.1µs ± 3%  -33.91%  (p=0.000 n=10+10)
      UnescapeDense-8   53.2µs ± 1%  53.5µs ± 1%     ~     (p=0.143 n=10+10)
      
      Benchmark results of go1:
      
      name                     old time/op    new time/op    delta
      BinaryTree17-8              6.53s ± 0%     6.48s ± 2%      ~     (p=0.190 n=4+5)
      Fannkuch11-8                6.35s ± 1%     6.35s ± 0%      ~     (p=1.000 n=5+5)
      FmtFprintfEmpty-8           108ns ± 1%     101ns ± 2%    -6.32%  (p=0.008 n=5+5)
      FmtFprintfString-8          172ns ± 1%     182ns ± 2%    +5.70%  (p=0.008 n=5+5)
      FmtFprintfInt-8             207ns ± 0%     207ns ± 0%      ~     (p=0.444 n=5+5)
      FmtFprintfIntInt-8          277ns ± 1%     276ns ± 1%      ~     (p=0.873 n=5+5)
      FmtFprintfPrefixedInt-8     386ns ± 0%     382ns ± 1%    -1.04%  (p=0.024 n=5+5)
      FmtFprintfFloat-8           492ns ± 0%     492ns ± 1%      ~     (p=0.571 n=4+5)
      FmtManyArgs-8              1.32µs ± 1%    1.33µs ± 0%      ~     (p=0.087 n=5+5)
      GobDecode-8                16.8ms ± 2%    16.7ms ± 1%      ~     (p=1.000 n=5+5)
      GobEncode-8                14.1ms ± 1%    14.0ms ± 1%      ~     (p=0.056 n=5+5)
      Gzip-8                      788ms ± 0%     802ms ± 0%    +1.71%  (p=0.008 n=5+5)
      Gunzip-8                   83.6ms ± 0%    83.9ms ± 0%    +0.40%  (p=0.008 n=5+5)
      HTTPClientServer-8          120µs ± 0%     120µs ± 1%      ~     (p=0.548 n=5+5)
      JSONEncode-8               33.2ms ± 0%    33.0ms ± 1%    -0.71%  (p=0.008 n=5+5)
      JSONDecode-8                152ms ± 1%     152ms ± 1%      ~     (p=1.000 n=5+5)
      Mandelbrot200-8            10.0ms ± 0%    10.0ms ± 0%    -0.05%  (p=0.008 n=5+5)
      GoParse-8                  7.97ms ± 0%    7.98ms ± 0%      ~     (p=0.690 n=5+5)
      RegexpMatchEasy0_32-8       233ns ± 1%     206ns ± 0%   -11.44%  (p=0.016 n=5+4)
      RegexpMatchEasy0_1K-8      1.86µs ± 0%    0.77µs ± 1%   -58.54%  (p=0.008 n=5+5)
      RegexpMatchEasy1_32-8       250ns ± 0%     205ns ± 0%   -18.07%  (p=0.008 n=5+5)
      RegexpMatchEasy1_1K-8      2.28µs ± 0%    1.11µs ± 0%   -51.09%  (p=0.029 n=4+4)
      RegexpMatchMedium_32-8      332ns ± 1%     301ns ± 2%    -9.45%  (p=0.008 n=5+5)
      RegexpMatchMedium_1K-8     85.5µs ± 2%    78.8µs ± 0%    -7.83%  (p=0.008 n=5+5)
      RegexpMatchHard_32-8       4.34µs ± 1%    4.27µs ± 0%    -1.49%  (p=0.008 n=5+5)
      RegexpMatchHard_1K-8        130µs ± 1%     127µs ± 0%    -2.53%  (p=0.008 n=5+5)
      Revcomp-8                   1.35s ± 1%     1.13s ± 1%   -16.17%  (p=0.008 n=5+5)
      Template-8                  160ms ± 2%     162ms ± 2%      ~     (p=0.222 n=5+5)
      TimeParse-8                 795ns ± 2%     778ns ± 1%      ~     (p=0.095 n=5+5)
      TimeFormat-8                782ns ± 0%     786ns ± 1%    +0.59%  (p=0.040 n=5+5)
      
      name                     old speed      new speed      delta
      GobDecode-8              45.8MB/s ± 2%  45.9MB/s ± 1%      ~     (p=1.000 n=5+5)
      GobEncode-8              54.3MB/s ± 1%  55.0MB/s ± 1%      ~     (p=0.056 n=5+5)
      Gzip-8                   24.6MB/s ± 0%  24.2MB/s ± 0%    -1.69%  (p=0.008 n=5+5)
      Gunzip-8                  232MB/s ± 0%   231MB/s ± 0%    -0.40%  (p=0.008 n=5+5)
      JSONEncode-8             58.4MB/s ± 0%  58.8MB/s ± 1%    +0.71%  (p=0.008 n=5+5)
      JSONDecode-8             12.8MB/s ± 1%  12.8MB/s ± 1%      ~     (p=1.000 n=5+5)
      GoParse-8                7.27MB/s ± 0%  7.26MB/s ± 0%      ~     (p=0.762 n=5+5)
      RegexpMatchEasy0_32-8     137MB/s ± 1%   155MB/s ± 0%   +12.93%  (p=0.008 n=5+5)
      RegexpMatchEasy0_1K-8     551MB/s ± 0%  1329MB/s ± 1%  +141.11%  (p=0.008 n=5+5)
      RegexpMatchEasy1_32-8     128MB/s ± 0%   156MB/s ± 0%   +22.00%  (p=0.008 n=5+5)
      RegexpMatchEasy1_1K-8     449MB/s ± 0%   920MB/s ± 0%  +104.68%  (p=0.016 n=4+5)
      RegexpMatchMedium_32-8   3.00MB/s ± 0%  3.32MB/s ± 2%   +10.60%  (p=0.016 n=4+5)
      RegexpMatchMedium_1K-8   12.0MB/s ± 2%  13.0MB/s ± 0%    +8.48%  (p=0.008 n=5+5)
      RegexpMatchHard_32-8     7.38MB/s ± 1%  7.49MB/s ± 0%    +1.49%  (p=0.008 n=5+5)
      RegexpMatchHard_1K-8     7.88MB/s ± 1%  8.08MB/s ± 0%    +2.59%  (p=0.008 n=5+5)
      Revcomp-8                 188MB/s ± 1%   224MB/s ± 1%   +19.29%  (p=0.008 n=5+5)
      Template-8               12.2MB/s ± 2%  12.0MB/s ± 2%      ~     (p=0.206 n=5+5)
      
      Change-Id: I94116620a287d173a6f60510684362e500f54887
      Reviewed-on: https://go-review.googlesource.com/33597
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      d259815c
    • OneOfOne's avatar
      net/url: allow *User functions to work on a nil receiver. · 466e299d
      OneOfOne authored
      Fixes #20924
      
      Change-Id: If89f31da63cbea38d7e615a428b7b07629770a45
      Reviewed-on: https://go-review.googlesource.com/47851
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarTim Cooper <tim.cooper@layeh.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      466e299d
    • Tim Cooper's avatar
      encoding/pem: add Encode, EncodeToMemory docs · f4f6018d
      Tim Cooper authored
      Included in a warning that EncodeToMemory may return an incomplete PEM
      encoded structure if invalid headers are supplied. Example:
      
      	pem.EncodeToMemory(&pem.Block{
      		Headers: map[string]string{
      			"a":   "test1",
      			"b:c": "test2",
      		},
      	})
      
      Returns:
      
      	-----BEGIN -----
      	a: test1
      
      Change-Id: Ia9cf0202f985e3cf210aabb6f07667e581ff081f
      Reviewed-on: https://go-review.googlesource.com/77790Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      f4f6018d
    • Tw's avatar
      net/http: don't set Content-Type with empty body automatically · 8cdd999b
      Tw authored
      We set Content-Type to "text/plain; charset=utf-8" even with blank body
      before. Let's strip this unnecessary header though it's harmless in most
      cases.
      
      Fixes #20784
      Signed-off-by: 's avatarTw <tw19881113@gmail.com>
      
      Change-Id: Ic58a410dcbc89f457c6ddd92961d9cbf545b2f4f
      Reviewed-on: https://go-review.googlesource.com/46631
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      8cdd999b
    • Roger Peppe's avatar
      crypto, hash: document marshal/unmarshal implementation · bd926e1c
      Roger Peppe authored
      Unless you go back and read the hash package documentation, it's
      not clear that all the hash packages implement marshaling and
      unmarshaling. Document the behaviour specifically in each package
      that implements it as it this is hidden behaviour and easy to miss.
      
      Change-Id: Id9d3508909362f1a3e53872d0319298359e50a94
      Reviewed-on: https://go-review.googlesource.com/77251Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      bd926e1c
  2. 14 Nov, 2017 15 commits
  3. 13 Nov, 2017 4 commits
    • Joe Tsai's avatar
      hash: document that the encoded state may contain input in plaintext · 4aea3e71
      Joe Tsai authored
      The cryptographic checksums operate in blocks of 64 or 128 bytes,
      which means that the last 128 bytes or so of the input may be encoded
      in its original (plaintext) form as part of the state.
      Document this so users do not falsely assume that the encoded state
      carries no reversible information about the input.
      
      Change-Id: I823dbb87867bf0a77aa20f6ed7a615dbedab3715
      Reviewed-on: https://go-review.googlesource.com/77372Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4aea3e71
    • Austin Clements's avatar
      runtime: don't elide wrapper functions that call panic or at TOS · 032678e0
      Austin Clements authored
      CL 45412 started hiding autogenerated wrapper functions from call
      stacks so that call stack semantics better matched language semantics.
      This is based on the theory that the wrapper function will call the
      "real" function and all the programmer knows about is the real
      function.
      
      However, this theory breaks down in two cases:
      
      1. If the wrapper is at the top of the stack, then it didn't call
         anything. This can happen, for example, if the "stack" was actually
         synthesized by the user.
      
      2. If the wrapper panics, for example by calling panicwrap or by
         dereferencing a nil pointer, then it didn't call the wrapped
         function and the user needs to see what panicked, even if we can't
         attribute it nicely.
      
      This commit modifies the traceback logic to include the wrapper
      function in both of these cases.
      
      Fixes #22231.
      
      Change-Id: I6e4339a652f73038bd8331884320f0b8edd86eb1
      Reviewed-on: https://go-review.googlesource.com/76770
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      032678e0
    • Michael Munday's avatar
      crypto/elliptic: reduce allocations in s390x P256 code · e8905d2a
      Michael Munday authored
      The Go compiler assumes that pointers escape when passed into assembly
      functions. To override this behavior we can annotate assembly functions
      with go:noescape, telling the compiler that we know pointers do not
      escape from it.
      
      By annotating the assembly functions in the s390x P256 code in this way
      we enable more variables to be allocated on the stack rather than
      the heap, reducing the number of heap allocations required to execute
      this code:
      
      name        old alloc/op   new alloc/op   delta
      SignP256      3.66kB ± 0%    2.64kB ± 0%  -27.95%  (p=0.008 n=5+5)
      VerifyP256    4.46kB ± 0%    1.23kB ± 0%  -72.40%  (p=0.008 n=5+5)
      
      name        old allocs/op  new allocs/op  delta
      SignP256        40.0 ± 0%      31.0 ± 0%  -22.50%  (p=0.008 n=5+5)
      VerifyP256      41.0 ± 0%      24.0 ± 0%  -41.46%  (p=0.008 n=5+5)
      
      Change-Id: Id526c30c9b04b2ad79a55d76cab0e30cc8d60402
      Reviewed-on: https://go-review.googlesource.com/66230
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e8905d2a
    • Daniel Martí's avatar
      cmd/compile: remove some more gotos in gc · 7f88d3c1
      Daniel Martí authored
      Split typecheckrange into two, separating the bigger chunk of code that
      takes care of the range expression. It had to sometimes exit early,
      which was done via a goto in the larger func. This lets us simplify many
      declarations and the flow of the code. While at it, also replace the
      toomany int with a bool.
      
      In the case of walkselect, split it into two funcs too since using a
      defer for all the trailing work would be a bit much. It also lets us
      simplify the declarations and the flow of the code, since now
      walkselectcases has a narrower scope and straightforward signature.
      
      Also replace the gotos in typecheckaste with a lineno defer.
      
      Passes toolstash -cmp on std cmd.
      
      Change-Id: Iacfaa0a34c987c44f180a792c473558785cf6823
      Reviewed-on: https://go-review.googlesource.com/72374
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      7f88d3c1