1. 07 Nov, 2017 9 commits
    • Adam Langley's avatar
      crypto/x509: enforce all name constraints and support IP, email and URI constraints · 9e76ce70
      Adam Langley authored
      This change makes crypto/x509 enforce name constraints for all names in
      a leaf certificate, not just the name being validated. Thus, after this
      change, if a certificate validates then all the names in it can be
      trusted – one doesn't have a validate again for each interesting name.
      
      Making extended key usage work in this fashion still remains to be done.
      
      Updates #15196
      
      Change-Id: I72ed5ff2f7284082d5bf3e1e86faf76cef62f9b5
      Reviewed-on: https://go-review.googlesource.com/62693
      Run-TryBot: Adam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      9e76ce70
    • Stanislav Afanasev's avatar
      archive/tar: a cosmetic fix after checking by golint · a4aa5c31
      Stanislav Afanasev authored
      Existing methods regFileReader.LogicalRemaining and regFileReader.PhysicalRemaining have inconsistent reciever names with the previous name
      
      Change-Id: Ief2024716737eaf482c4311f3fdf77d92801c36e
      Reviewed-on: https://go-review.googlesource.com/76430Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      a4aa5c31
    • Agniva De Sarker's avatar
      strings: optimize ToUpper · 13cfb15c
      Agniva De Sarker authored
      Handling the ASCII case inline and call unicode.ToUpper only
      for non-ascii cases.
      
      Gives good improvements for the ascii case and minor perf
      degrade for non-ascii case
      
      name                                     old time/op    new time/op    delta
      ToUpper/#00                                11.7ns ± 8%     8.0ns ± 1%  -31.95%  (p=0.008 n=5+5)
      ToUpper/ONLYUPPER                          45.6ns ± 5%    19.9ns ± 1%  -56.40%  (p=0.008 n=5+5)
      ToUpper/abc                                77.4ns ± 1%    57.0ns ± 1%  -26.32%  (p=0.008 n=5+5)
      ToUpper/AbC123                             92.1ns ± 4%    67.7ns ± 2%  -26.57%  (p=0.008 n=5+5)
      ToUpper/azAZ09_                             105ns ± 6%      67ns ± 2%  -36.26%  (p=0.000 n=5+4)
      ToUpper/longStrinGwitHmixofsmaLLandcAps     255ns ± 1%     140ns ± 1%  -45.01%  (p=0.029 n=4+4)
      ToUpper/longɐstringɐwithɐnonasciiⱯchars     440ns ± 1%     447ns ± 0%   +1.49%  (p=0.016 n=5+4)
      ToUpper/ɐɐɐɐɐ                               370ns ± 4%     366ns ± 1%     ~     (p=0.667 n=5+5)
      
      name                                     old alloc/op   new alloc/op   delta
      ToUpper/#00                                 0.00B          0.00B          ~     (all equal)
      ToUpper/ONLYUPPER                           0.00B          0.00B          ~     (all equal)
      ToUpper/abc                                 16.0B ± 0%      6.0B ± 0%  -62.50%  (p=0.008 n=5+5)
      ToUpper/AbC123                              16.0B ± 0%     16.0B ± 0%     ~     (all equal)
      ToUpper/azAZ09_                             24.0B ± 0%     16.0B ± 0%  -33.33%  (p=0.008 n=5+5)
      ToUpper/longStrinGwitHmixofsmaLLandcAps     80.0B ± 0%     64.0B ± 0%  -20.00%  (p=0.008 n=5+5)
      ToUpper/longɐstringɐwithɐnonasciiⱯchars     96.0B ± 0%     96.0B ± 0%     ~     (all equal)
      ToUpper/ɐɐɐɐɐ                               64.0B ± 0%     64.0B ± 0%     ~     (all equal)
      
      Ran on a machine with Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz
      
      Updates #17859
      
      Change-Id: I0735ac4a4a36e8a8f6cc06f2c16b871f12b4abf9
      Reviewed-on: https://go-review.googlesource.com/68370Reviewed-by: 's avatarJoe Tsai <thebrokentoaster@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      13cfb15c
    • Austin Clements's avatar
      runtime: flush assist credit on goroutine exit · f10d99f5
      Austin Clements authored
      Currently dead goroutines retain their assist credit. This credit can
      be used if the goroutine gets recycled, but in general this can make
      assist pacing over-aggressive by hiding an amount of credit
      proportional to the number of exited (and not reused) goroutines.
      
      Fix this "hidden credit" by flushing assist credit to the global
      credit pool when a goroutine exits.
      
      Updates #14812.
      
      Change-Id: I65f7f75907ab6395c04aacea2c97aea963b60344
      Reviewed-on: https://go-review.googlesource.com/24703
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      f10d99f5
    • Ian Lance Taylor's avatar
      runtime: only call netpoll if netpollinited returns true · 86cd9c11
      Ian Lance Taylor authored
      This fixes a race on old Linux kernels, in which we might temporarily
      set epfd to an invalid value other than -1. It's also the right thing
      to do. No test because the problem only occurs on old kernels.
      
      Fixes #22606
      
      Change-Id: Id84bdd6ae6d7c5d47c39e97b74da27576cb51a54
      Reviewed-on: https://go-review.googlesource.com/76319
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDmitry Vyukov <dvyukov@google.com>
      86cd9c11
    • Michael Munday's avatar
      cmd/compile: fix SSA immediate sign extension on s390x · 33c246ff
      Michael Munday authored
      The CMPWUconst op (32-bit unsigned comparison with immediate) takes
      an unsigned immediate value. In SSA this should be sign extended to
      64-bits to match the Int32 type given in the op and then zero
      extended when producing the final assembly. Before this CL we were
      zero extending in SSA which caused ssacheck to fail.
      
      While we are here also ensure other 32-bit immediates are sign
      extended in SSA.
      
      Passes toolstash -cmp on std on s390x.
      
      Fixes #22611.
      
      Change-Id: I5c061a76a710b10ecb0650c9c42efd9fa1c123cc
      Reviewed-on: https://go-review.googlesource.com/76336
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      33c246ff
    • Than McIntosh's avatar
      runtime/pprof: harden CPU profile test against smart backend · 83a1a2ba
      Than McIntosh authored
      A couple of the CPU profiling testpoints make calls to helper
      functions (cpuHog1, for example) where the computed value is always
      thrown away by the caller without being used. A smart compiler back
      end (in this case LLVM) can detect this fact and delete the contents
      of the called function, which can cause tests to fail. Harden the test
      slighly by passing in a value read from a global and insuring that the
      caller stores the value back to a global; this prevents any optimizer
      mischief.
      
      Change-Id: Icbd6e3e32ff299c68a6397dc1404a52b21eaeaab
      Reviewed-on: https://go-review.googlesource.com/76230
      Run-TryBot: Than McIntosh <thanm@google.com>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      83a1a2ba
    • Russ Cox's avatar
      cmd/go: accept relative -pkgdir argument · 36323e43
      Russ Cox authored
      Fixes #21309.
      
      Change-Id: I8ff1b0f37e34a3a4e9f8448d66a64fe3863d081f
      Reviewed-on: https://go-review.googlesource.com/76250
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      36323e43
    • Russ Cox's avatar
      cmd/go: include package source dir in build action for non-GOROOT packages · 8ac93e66
      Russ Cox authored
      The package source dir is recorded in the archives,
      so it must be recorded in the build action hash too.
      
      Fixes #22596.
      
      Change-Id: I1d3c2523181c302e9917e5fb79c26b00ea03077a
      Reviewed-on: https://go-review.googlesource.com/76025
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      8ac93e66
  2. 06 Nov, 2017 26 commits
  3. 05 Nov, 2017 5 commits
    • Keith Randall's avatar
      cmd/compile: fix test to use correct go binary · 989cc801
      Keith Randall authored
      Use internal/testenv package to get the right go binary.
      Otherwise, I think we're just grabbing an old one from the environment.
      
      Fixes #22560.
      
      Change-Id: Id5b743b24717e15ec8ffbcfae4dc3e5f6a87b9a9
      Reviewed-on: https://go-review.googlesource.com/76090
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDaniel Martí <mvdan@mvdan.cc>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      989cc801
    • Daniel Martí's avatar
      cmd/go: skip "exclude all Go files" error in fmt · e5f6051e
      Daniel Martí authored
      Otherwise, one can't run "go fmt" on a directory containing Go files if
      none of them are buildable (e.g. because of build tags). This is
      counter-intuitive, as fmt will format all Go files anyway.
      
      If we encounter such a load error, ignore it and carry on. All other
      load errors, such as when a package can't be found, should still be
      shown to the user.
      
      Add a test for the two kinds of load errors. Use fmt -n so that any
      changes to the formatting of the files in testdata don't actually get
      applied. The load errors still occur with -n, so the test does its job.
      
      Fixes #22183.
      
      Change-Id: I99d0c0cdd29015b6a3f5286a9bbff50757c78e0d
      Reviewed-on: https://go-review.googlesource.com/75930
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      e5f6051e
    • David Chase's avatar
      cmd/compile: adjust locationlist lifetimes · d58d9015
      David Chase authored
      A statement like
      
        foo = bar + qux
      
      might compile to
      
        AX := AX + BX
      
      resulting in a regkill for AX before this instruction.
      The buggy behavior is to kill AX "at" this instruction,
      before it has executed.  (Code generation of no-instruction
      values like RegKills applies their effects at the
      next actual instruction emitted).
      
      However, bar is still associated with AX until after the
      instruction executes, so the effect of the regkill must
      occur at the boundary between this instruction and the
      next.  Similarly, the new value bound to AX is not visible
      until this instruction executes (and in the case of values
      that require multiple instructions in code generation, until
      all of them have executed).
      
      The ranges are adjusted so that a value's start occurs
      at the next following instruction after its evaluation,
      and the end occurs after (execution of) the first
      instruction following the end of the lifetime as a value.
      
      (Notice the asymmetry; the entire value must be finished
      before it is visible, but execution of a single instruction
      invalidates.  However, the value *is* visible before that
      next instruction executes).
      
      The test was adjusted to make it insensitive to the result
      numbering for variables printed by gdb, since that is not
      relevant to the test and makes the differences introduced
      by small changes larger than necessary/useful.
      
      The test was also improved to present variable probes
      more intuitively, and also to allow explicit indication
      of "this variable was optimized out"
      
      Change-Id: I39453eead8399e6bb05ebd957289b112d1100c0e
      Reviewed-on: https://go-review.googlesource.com/74090
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      d58d9015
    • David Chase's avatar
      cmd/compile: repair name propagation into aggregate parts · 38c725b1
      David Chase authored
      For structs, slices, strings, interfaces, etc, propagation of
      names to their components (e.g., complex.real, complex.imag)
      is fragile (depends on phase ordering) and not done right
      for the "dec" pass.
      
      The dec pass is subsumed into decomposeBuiltin,
      and then names are pushed into the args of all
      OpFooMake opcodes.
      
      compile/ssa/debug_test.go was fixed to pay attention to
      variable values, and the reference files include checks
      for the fixes in this CL (which make debugging better).
      
      Change-Id: Ic2591ebb1698d78d07292b92c53667e6c37fa0cd
      Reviewed-on: https://go-review.googlesource.com/73210
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
      38c725b1
    • Hugues Bruant's avatar
      cmd/compile: inline closures with captures · c4b65fa4
      Hugues Bruant authored
      When inlining a closure with captured variables, walk up the
      param chain to find the one that is defined inside the scope
      into which the function is being inlined, and map occurrences
      of the captures to temporary inlvars, similarly to what is
      done for function parameters.
      
      No noticeable impact on compilation speed and binary size.
      
      Minor improvements to go1 benchmarks on darwin/amd64
      
      name                     old time/op    new time/op    delta
      BinaryTree17-4              2.59s ± 3%     2.58s ± 1%    ~     (p=0.470 n=19+19)
      Fannkuch11-4                3.15s ± 2%     3.15s ± 1%    ~     (p=0.647 n=20+19)
      FmtFprintfEmpty-4          43.7ns ± 3%    43.4ns ± 4%    ~     (p=0.178 n=18+20)
      FmtFprintfString-4         74.0ns ± 2%    77.1ns ± 7%  +4.13%  (p=0.000 n=20+20)
      FmtFprintfInt-4            77.2ns ± 3%    79.2ns ± 6%  +2.53%  (p=0.000 n=20+20)
      FmtFprintfIntInt-4          112ns ± 4%     112ns ± 2%    ~     (p=0.672 n=20+19)
      FmtFprintfPrefixedInt-4     136ns ± 1%     135ns ± 2%    ~     (p=0.827 n=16+20)
      FmtFprintfFloat-4           232ns ± 2%     233ns ± 1%    ~     (p=0.194 n=20+20)
      FmtManyArgs-4               490ns ± 2%     484ns ± 2%  -1.28%  (p=0.001 n=20+20)
      GobDecode-4                6.68ms ± 2%    6.72ms ± 2%    ~     (p=0.113 n=20+19)
      GobEncode-4                5.62ms ± 2%    5.71ms ± 2%  +1.64%  (p=0.000 n=20+19)
      Gzip-4                      235ms ± 3%     236ms ± 2%    ~     (p=0.607 n=20+19)
      Gunzip-4                   37.1ms ± 2%    36.8ms ± 3%    ~     (p=0.060 n=20+20)
      HTTPClientServer-4         61.9µs ± 2%    62.7µs ± 4%  +1.24%  (p=0.007 n=18+19)
      JSONEncode-4               12.5ms ± 2%    12.4ms ± 3%    ~     (p=0.192 n=20+20)
      JSONDecode-4               51.6ms ± 3%    51.0ms ± 3%  -1.19%  (p=0.008 n=20+19)
      Mandelbrot200-4            4.12ms ± 6%    4.06ms ± 5%    ~     (p=0.063 n=20+20)
      GoParse-4                  3.12ms ± 5%    3.10ms ± 2%    ~     (p=0.402 n=19+19)
      RegexpMatchEasy0_32-4      80.7ns ± 2%    75.1ns ± 9%  -6.94%  (p=0.000 n=17+20)
      RegexpMatchEasy0_1K-4       197ns ± 2%     186ns ± 2%  -5.43%  (p=0.000 n=20+20)
      RegexpMatchEasy1_32-4      77.5ns ± 4%    71.9ns ± 7%  -7.25%  (p=0.000 n=20+18)
      RegexpMatchEasy1_1K-4       341ns ± 3%     341ns ± 3%    ~     (p=0.732 n=20+20)
      RegexpMatchMedium_32-4      113ns ± 2%     112ns ± 3%    ~     (p=0.102 n=20+20)
      RegexpMatchMedium_1K-4     36.6µs ± 2%    35.8µs ± 2%  -2.26%  (p=0.000 n=18+20)
      RegexpMatchHard_32-4       1.75µs ± 3%    1.74µs ± 2%    ~     (p=0.473 n=20+19)
      RegexpMatchHard_1K-4       52.6µs ± 2%    52.0µs ± 3%  -1.15%  (p=0.005 n=20+20)
      Revcomp-4                   381ms ± 4%     377ms ± 2%    ~     (p=0.067 n=20+18)
      Template-4                 57.3ms ± 2%    57.7ms ± 2%    ~     (p=0.108 n=20+20)
      TimeParse-4                 291ns ± 3%     292ns ± 2%    ~     (p=0.585 n=20+20)
      TimeFormat-4                314ns ± 3%     315ns ± 1%    ~     (p=0.681 n=20+20)
      [Geo mean]                 47.4µs         47.1µs       -0.73%
      
      name                     old speed      new speed      delta
      GobDecode-4               115MB/s ± 2%   114MB/s ± 2%    ~     (p=0.115 n=20+19)
      GobEncode-4               137MB/s ± 2%   134MB/s ± 2%  -1.63%  (p=0.000 n=20+19)
      Gzip-4                   82.5MB/s ± 3%  82.4MB/s ± 2%    ~     (p=0.612 n=20+19)
      Gunzip-4                  523MB/s ± 2%   528MB/s ± 3%    ~     (p=0.060 n=20+20)
      JSONEncode-4              155MB/s ± 2%   156MB/s ± 3%    ~     (p=0.192 n=20+20)
      JSONDecode-4             37.6MB/s ± 3%  38.1MB/s ± 3%  +1.21%  (p=0.007 n=20+19)
      GoParse-4                18.6MB/s ± 4%  18.7MB/s ± 2%    ~     (p=0.405 n=19+19)
      RegexpMatchEasy0_32-4     396MB/s ± 2%   426MB/s ± 8%  +7.56%  (p=0.000 n=17+20)
      RegexpMatchEasy0_1K-4    5.18GB/s ± 2%  5.48GB/s ± 2%  +5.79%  (p=0.000 n=20+20)
      RegexpMatchEasy1_32-4     413MB/s ± 4%   444MB/s ± 6%  +7.46%  (p=0.000 n=20+19)
      RegexpMatchEasy1_1K-4    3.00GB/s ± 3%  3.00GB/s ± 3%    ~     (p=0.678 n=20+20)
      RegexpMatchMedium_32-4   8.82MB/s ± 2%  8.90MB/s ± 3%  +0.99%  (p=0.044 n=20+20)
      RegexpMatchMedium_1K-4   28.0MB/s ± 2%  28.6MB/s ± 2%  +2.32%  (p=0.000 n=18+20)
      RegexpMatchHard_32-4     18.3MB/s ± 3%  18.4MB/s ± 2%    ~     (p=0.482 n=20+19)
      RegexpMatchHard_1K-4     19.5MB/s ± 2%  19.7MB/s ± 3%  +1.18%  (p=0.004 n=20+20)
      Revcomp-4                 668MB/s ± 4%   674MB/s ± 2%    ~     (p=0.066 n=20+18)
      Template-4               33.8MB/s ± 2%  33.6MB/s ± 2%    ~     (p=0.104 n=20+20)
      [Geo mean]                124MB/s        126MB/s       +1.54%
      
      Updates #15561
      Updates #18270
      
      Change-Id: I980086efe28b36aa27f81577065e2a729ff03d4e
      Reviewed-on: https://go-review.googlesource.com/72490Reviewed-by: 's avatarHugues Bruant <hugues.bruant@gmail.com>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c4b65fa4