1. 28 Mar, 2018 12 commits
    • Andrew Bonventre's avatar
      net/http/pprof: harden handler responses · baa46bcf
      Andrew Bonventre authored
      A very small number of old browsers consider content as HTML
      even when it is explicitly stated in the Content-Type header
      that it is not. If content served is based on user-supplied
      input, then an XSS is possible. Introduce three mitigations:
      
      + Don't reflect user input in error strings
      + Set a Content-Disposition header when requesting a resource
        that should never be displayed in a browser window
      + Set X-Content-Type-Options: nosniff on all responses
      
      Change-Id: I81c9d6736e0439ebd1db99cd7fb701cc56d24805
      Reviewed-on: https://go-review.googlesource.com/102318
      Run-TryBot: Andrew Bonventre <andybons@golang.org>
      Reviewed-by: default avatarFilippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      baa46bcf
    • Ian Lance Taylor's avatar
      flag: document use of FlagSet name parameter · 70afd51e
      Ian Lance Taylor authored
      Fixes #24225
      
      Change-Id: I876ac1b9d3615283f7b88cfa0b965ef81a57f056
      Reviewed-on: https://go-review.googlesource.com/102955Reviewed-by: default avatarRob Pike <r@golang.org>
      70afd51e
    • Hana Kim's avatar
      internal/trace: fix double counting in span analysis · ad638fbf
      Hana Kim authored
      When snapshotting the execution time stats of a goroutine
      we take into account the intermediate values kepts in the GDesc's
      gdesc field. At the end of goroutine analysis, we go through all
      goroutines and replace the GExecutionStat with the new snapshot.
      Here the mistake was that we replaced the GExecutionStat with
      the value that reflects the intermediate values, but did clear
      the intermediate values. So, when the following finalizeActiveSpans
      runs, it trieds to add the intermediate values again (double-counting)
      when taking a snapshot.
      
      Fix the issue by using the finalized GExecutionStat instead of
      recomputing the snapshot. While we are here, refactor the finalization
      logic so it can be used when processing GoEnd, GoStop events.
      
      Change-Id: Ibdb342214c29b65d4ea37e52b1f8b83f1fb20143
      Reviewed-on: https://go-review.googlesource.com/103157Reviewed-by: default avatarPeter Weinberger <pjw@google.com>
      ad638fbf
    • Josh Bleecher Snyder's avatar
      cmd/compile: prefer rematerialization to copying · dafca7de
      Josh Bleecher Snyder authored
      Fixes #24132
      
      
      name                     old time/op    new time/op    delta
      BinaryTree17-8              2.18s ± 2%     2.15s ± 2%  -1.28%  (p=0.000 n=25+26)
      Fannkuch11-8                2.16s ± 3%     2.13s ± 3%  -1.54%  (p=0.000 n=27+30)
      FmtFprintfEmpty-8          29.9ns ± 3%    29.6ns ± 3%  -1.08%  (p=0.001 n=29+26)
      FmtFprintfString-8         53.6ns ± 2%    54.0ns ± 4%    ~     (p=0.193 n=28+29)
      FmtFprintfInt-8            56.8ns ± 3%    57.0ns ± 3%    ~     (p=0.330 n=29+29)
      FmtFprintfIntInt-8         85.3ns ± 2%    85.8ns ± 3%  +0.56%  (p=0.042 n=30+29)
      FmtFprintfPrefixedInt-8    94.1ns ± 5%    99.0ns ± 8%  +5.20%  (p=0.000 n=27+30)
      FmtFprintfFloat-8           183ns ± 4%     182ns ± 3%    ~     (p=0.619 n=30+26)
      FmtManyArgs-8               369ns ± 2%     369ns ± 2%    ~     (p=0.748 n=27+29)
      GobDecode-8                4.78ms ± 2%    4.75ms ± 1%    ~     (p=0.051 n=28+27)
      GobEncode-8                4.06ms ± 3%    4.07ms ± 3%    ~     (p=0.781 n=29+30)
      Gzip-8                      178ms ± 2%     177ms ± 2%    ~     (p=0.171 n=29+30)
      Gunzip-8                   28.2ms ± 7%    28.0ms ± 4%    ~     (p=0.155 n=30+30)
      HTTPClientServer-8         71.5µs ± 3%    71.3µs ± 1%    ~     (p=0.913 n=25+27)
      JSONEncode-8               9.71ms ± 5%    9.86ms ± 4%  +1.55%  (p=0.015 n=28+30)
      JSONDecode-8               38.8ms ± 2%    39.3ms ± 2%  +1.41%  (p=0.000 n=28+29)
      Mandelbrot200-8            3.47ms ± 6%    3.44ms ± 3%    ~     (p=0.183 n=28+28)
      GoParse-8                  2.55ms ± 2%    2.54ms ± 3%  -0.58%  (p=0.003 n=27+29)
      RegexpMatchEasy0_32-8      66.0ns ± 5%    65.3ns ± 4%    ~     (p=0.124 n=30+30)
      RegexpMatchEasy0_1K-8       152ns ± 2%     152ns ± 3%    ~     (p=0.881 n=30+30)
      RegexpMatchEasy1_32-8      62.9ns ± 9%    62.7ns ± 7%    ~     (p=0.717 n=30+30)
      RegexpMatchEasy1_1K-8       263ns ± 3%     263ns ± 4%    ~     (p=0.909 n=30+29)
      RegexpMatchMedium_32-8     93.4ns ± 3%    89.3ns ± 2%  -4.32%  (p=0.000 n=29+29)
      RegexpMatchMedium_1K-8     27.5µs ± 3%    27.1µs ± 2%  -1.46%  (p=0.000 n=30+27)
      RegexpMatchHard_32-8       1.33µs ± 3%    1.31µs ± 3%  -1.50%  (p=0.000 n=27+28)
      RegexpMatchHard_1K-8       39.4µs ± 2%    39.1µs ± 2%  -0.54%  (p=0.027 n=28+28)
      Revcomp-8                   274ms ± 4%     276ms ± 2%  +0.67%  (p=0.048 n=29+28)
      Template-8                 45.1ms ± 5%    44.6ms ± 7%  -1.22%  (p=0.029 n=30+29)
      TimeParse-8                 227ns ± 3%     224ns ± 3%  -1.25%  (p=0.000 n=28+27)
      TimeFormat-8                248ns ± 3%     245ns ± 3%  -1.33%  (p=0.002 n=30+29)
      [Geo mean]                 36.6µs         36.5µs       -0.32%
      
      
      Change-Id: I24083f0013506b77e2d9da99c40ae2f67803285e
      Reviewed-on: https://go-review.googlesource.com/101076
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      dafca7de
    • Josh Bleecher Snyder's avatar
      cmd/compile: strength reduce more x86 constant multiplication · 6a74fe2f
      Josh Bleecher Snyder authored
      The additions were machine-generated.
      
      The change for x * 7 avoids a reg-reg move,
      reducing the number of instructions from 3 to 2.
      
      Change-Id: Ib002e39f29ca5e46cfdb8daaf87ddc7ba50a17e5
      Reviewed-on: https://go-review.googlesource.com/102395
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      6a74fe2f
    • Agniva De Sarker's avatar
      os: keep the $ if a variable is not detected · 7bf631e1
      Agniva De Sarker authored
      If the character after $ cannot be detected as a valid
      variable declaration, do not gobble the $.
      
      Fixes #24345
      
      Change-Id: Iec47be1f2e4f8147b8ceb64c30778eae8045b58f
      Reviewed-on: https://go-review.googlesource.com/103055
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      7bf631e1
    • Josh Bleecher Snyder's avatar
      cmd/compile/internal/gc: speed up arith const tests · 8623503f
      Josh Bleecher Snyder authored
      This change reduces the time to run this test on my machine from
      
      real	0m2.491s
      user	0m3.020s
      sys	0m0.331s
      
      to
      
      real	0m0.237s
      user	0m0.180s
      sys	0m0.173s
      
      This will make it reasonable to add more constants to the test.
      I am also hopeful that it might help a bit with intermittent
      cmd/compile/internal/gc test timeouts on the build dashboard
      on the slower builders.
      
      The time savings are entirely in compilation time,
      by avoiding generating one giant func main.
      Instead, generate tables of tests to be run,
      which are translated into static data,
      and then loop over those tests.
      
      While we're here, do some minor cleanup:
      
      * Remove the _ssa suffix on function names,
        as that was only needed during ssa bootstrapping.
      * Clean up error handling during test generation.
      * Make functions single-line, to reduce future diff sizes.
        Diffing giant files is slow.
      
      Change-Id: Ic5fccdb71679169bea756c7d33c07d05e4801860
      Reviewed-on: https://go-review.googlesource.com/102956
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      8623503f
    • Alberto Donizetti's avatar
      cmd/compile: print accurate escape reason for non-const-length slices · 360c1915
      Alberto Donizetti authored
      This change makes `-m -m` print a better explanation for the case
      where a slice is marked as escaping and heap-allocated because it
      has a non-constant len/cap.
      
      Fixes #24578
      
      Change-Id: I0ebafb77c758a99857d72b365817bdba7b446cc0
      Reviewed-on: https://go-review.googlesource.com/102895Reviewed-by: default avatarDavid Chase <drchase@google.com>
      Reviewed-by: default avatarIlya Tocar <ilya.tocar@intel.com>
      360c1915
    • Ilya Tocar's avatar
      internal/bytealg: remove dependency on runtime·support_avx2 · f8b28e28
      Ilya Tocar authored
      Use internal/cpu instead.
      
      Change-Id: I8670440389cbd88951fee61e352c4a10ac7eee6e
      Reviewed-on: https://go-review.googlesource.com/102737
      Run-TryBot: Ilya Tocar <ilya.tocar@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      f8b28e28
    • Ian Lance Taylor's avatar
      cmd/go: add more C compiler/linker options to whitelist · 7e34ac1f
      Ian Lance Taylor authored
      Fixes #23937
      
      Change-Id: Ie63d91355d1a724d0012d99d457d939deeeb8d3e
      Reviewed-on: https://go-review.googlesource.com/102818
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAndrew Bonventre <andybons@golang.org>
      7e34ac1f
    • Jakob Weisblat's avatar
      crypto/x509: improve error when parsing bad ECDSA cert · 89f4592d
      Jakob Weisblat authored
      When parsing an ECDSA certificate, improve the error message upon
      failing to parse the curve as a named curve, rather than returning
      the original ASN1 error.
      
      Fixes #21502
      
      Change-Id: I7ae7b3ea7a9dcbd78a9607f46f5883d3193b8367
      Reviewed-on: https://go-review.googlesource.com/57050Reviewed-by: default avatarFilippo Valsorda <filippo@golang.org>
      89f4592d
    • Diogo Pinela's avatar
      regexp: document behavior of FindAll* functions when n < 0 · 9d84e0ed
      Diogo Pinela authored
      Fixes #24526
      
      Change-Id: I0e38322fca12f9c88db836776920b9dfb66ff844
      Reviewed-on: https://go-review.googlesource.com/102423Reviewed-by: default avatarEmmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarRob Pike <r@golang.org>
      9d84e0ed
  2. 27 Mar, 2018 20 commits
    • Ian Lance Taylor's avatar
      cmd/go: if -race, don't run coverage on runtime packages · 976a852d
      Ian Lance Taylor authored
      Don't compile the runtime packages with coverage when using the race
      detector. The user can, perhaps accidentally, request coverage for the
      runtime by using -coverpkg=all. If using the race detector, the
      runtime package coverage will call into the race detector before it
      has been initialized. This will cause the program to crash
      mysteriously on startup.
      
      Fixes #23882
      
      Change-Id: I9a63867a9138797d8b8afb0856ae21079accdb27
      Reviewed-on: https://go-review.googlesource.com/94898
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAndrew Bonventre <andybons@golang.org>
      976a852d
    • Filippo Valsorda's avatar
      crypto/tls: parse certificate first in X509KeyPair to get better errors · bd18c090
      Filippo Valsorda authored
      parsePrivateKey can't return useful error messages because it does trial
      decoding of multiple formats.  Try ParseCertificate first in case it
      offers a useful error message.
      
      Fixes #23591
      
      Change-Id: I380490a5850bee593a7d2f584a27b2a14153d768
      Reviewed-on: https://go-review.googlesource.com/90435
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      bd18c090
    • Filippo Valsorda's avatar
      crypto/x509: cache the result of SystemCertPool · a25d0d8f
      Filippo Valsorda authored
      Fixes #24540
      
      Change-Id: I65e9f2f99403e22d25ea64cc26701bf62a31d070
      Reviewed-on: https://go-review.googlesource.com/102699
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a25d0d8f
    • Ian Lance Taylor's avatar
      cmd/go: with -x, don't report removing a non-existent objdir · ad0ebc39
      Ian Lance Taylor authored
      Fixes #24389
      Fixes #24396
      
      Change-Id: I37399528700e2a39d9523d7c41bdc929618eb095
      Reviewed-on: https://go-review.googlesource.com/102619Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ad0ebc39
    • erifan01's avatar
      math: optimize Exp and Exp2 on arm64 · 711a373c
      erifan01 authored
      This CL implements Exp and Exp2 with arm64 assembly. By inlining Ldexp and
      using fused instructions(fmadd, fmsub, fnmsub), this CL helps to improve
      the performance of functions Exp, Exp2, Sinh, Cosh and Tanh.
      
      Benchmarks:
      name                   old time/op  new time/op  delta
      Cosh-8                  138ns ± 0%    96ns ± 0%  -30.72%  (p=0.008 n=5+5)
      Exp-8                   105ns ± 0%    58ns ± 0%  -45.24%  (p=0.000 n=5+4)
      Exp2-8                  100ns ± 0%    57ns ± 0%  -43.21%  (p=0.008 n=5+5)
      Sinh-8                  139ns ± 0%   102ns ± 0%  -26.62%  (p=0.008 n=5+5)
      Tanh-8                  134ns ± 0%   100ns ± 0%  -25.67%  (p=0.008 n=5+5)
      
      Change-Id: I7483a3333062a1d3525cedf3de56db78d79031c6
      Reviewed-on: https://go-review.googlesource.com/86615
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      711a373c
    • Yuval Pavel Zholkover's avatar
      cmd/internal/obj/arm: add DMB instruction · 0a5be12f
      Yuval Pavel Zholkover authored
      Change-Id: Ib67a61d5b37af210ff15d60d72bd5238b9c2d0ca
      Reviewed-on: https://go-review.googlesource.com/94815
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      0a5be12f
    • Ben Shi's avatar
      cmd/internal/obj/arm64: add LDPW/LDPSW/STPW to arm64 assembler · fc7a7259
      Ben Shi authored
      1. STPW stores the lower 32-bit words of a pair of registers to memory.
      2. LDPW loads two 32-bit words from memory, zero extends them to 64-bit,
      and then copies to a pair of registers.
      3. LDPSW does the same as LDPW, except a sign extension.
      
      This CL implements those 3 instructions and adds test cases.
      
      Change-Id: Ied9834d8240240d23ce00e086b4ea456e1611f1a
      Reviewed-on: https://go-review.googlesource.com/99956
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      fc7a7259
    • Hana Kim's avatar
      cmd/trace: assign a unique span id for slice representation · aaeaad68
      Hana Kim authored
      Spans are represented using Async Event types of chrome trace viewer.
      According to the doc, the 'id' should be unique within category, scope.
      
      https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.jh64i9l3vwa1
      
      Use the index in the task's span slice as the slice id, so it
      can be unique within the task. The scope is the task id which
      is unique.
      
      This fixes a visualization bug that caused incorrect or missing
      presentation of nested spans.
      
      Change-Id: If1537ee00247f71fa967abfe45569a9e7dbcdce7
      Reviewed-on: https://go-review.googlesource.com/102697Reviewed-by: default avatarHeschi Kreinick <heschi@google.com>
      aaeaad68
    • Michael Munday's avatar
      cmd/compile: simplify Neg lowering on s390x · 331c187b
      Michael Munday authored
      No need to sign extend input to Neg8 and Neg16.
      
      Change-Id: I7896c83c9cdf84a34098582351a4aabf61cd6fdd
      Reviewed-on: https://go-review.googlesource.com/102675
      Run-TryBot: Michael Munday <mike.munday@ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      331c187b
    • Matthew Dempsky's avatar
      cmd/compile: fix method set computation for shadowed methods · 7b177b1a
      Matthew Dempsky authored
      In expandmeth, we call expand1/expand0 to build a list of all
      candidate methods to promote, and then we use dotpath to prune down
      which names actually resolve to a promoted method and how.
      
      However, previously we still computed "followsptr" based on the
      expand1/expand0 traversal (which is depth-first), rather than
      dotpath (which is breadth-first). The result is that we could
      sometimes end up miscomputing whether a particular promoted method
      involves a pointer traversal, which could result in bad code
      generation for method trampolines.
      
      Fixes #24547.
      
      Change-Id: I57dc014466d81c165b05d78b98610dc3765b7a90
      Reviewed-on: https://go-review.googlesource.com/102618Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      7b177b1a
    • Daniel Theophanes's avatar
      database/sql: check to see if ctx is cancelable before await · 6e59c73a
      Daniel Theophanes authored
      Prevent queries from starting a goroutine if the context is
      not able to be canceled.
      
      Fixes #23879
      
      Change-Id: I392047bd53d7f796219dd12ee11b07303658fdaf
      Reviewed-on: https://go-review.googlesource.com/102478
      Run-TryBot: Daniel Theophanes <kardianos@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarYasuhiro MATSUMOTO <mattn.jp@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      6e59c73a
    • Alberto Donizetti's avatar
      cmd/compile: reduce allocations in regAllocState.regalloc · 377a2cb2
      Alberto Donizetti authored
      name      old time/op       new time/op       delta
      Template        281ms ± 2%        282ms ± 3%    ~     (p=0.428 n=19+20)
      Unicode         138ms ± 6%        138ms ± 7%    ~     (p=0.813 n=19+20)
      GoTypes         901ms ± 2%        895ms ± 2%    ~     (p=0.050 n=19+20)
      Compiler        4.25s ± 1%        4.23s ± 1%  -0.31%  (p=0.031 n=19+18)
      SSA             9.77s ± 1%        9.78s ± 1%    ~     (p=0.512 n=20+20)
      Flate           187ms ± 3%        187ms ± 4%    ~     (p=0.687 n=20+19)
      GoParser        224ms ± 4%        222ms ± 3%    ~     (p=0.301 n=20+20)
      Reflect         576ms ± 2%        576ms ± 2%    ~     (p=0.620 n=20+20)
      Tar             262ms ± 3%        263ms ± 3%    ~     (p=0.599 n=19+18)
      XML             322ms ± 4%        322ms ± 2%    ~     (p=0.512 n=20+20)
      
      name      old user-time/op  new user-time/op  delta
      Template        403ms ± 3%        399ms ± 5%    ~     (p=0.149 n=17+20)
      Unicode         217ms ±12%        217ms ± 9%    ~     (p=0.883 n=20+20)
      GoTypes         1.24s ± 3%        1.24s ± 3%    ~     (p=0.718 n=20+20)
      Compiler        5.90s ± 3%        5.84s ± 5%    ~     (p=0.217 n=18+20)
      SSA             14.0s ± 6%        14.1s ± 5%    ~     (p=0.235 n=19+20)
      Flate           253ms ± 6%        254ms ± 5%    ~     (p=0.749 n=20+19)
      GoParser        309ms ± 7%        307ms ± 5%    ~     (p=0.398 n=20+20)
      Reflect         772ms ± 3%        771ms ± 3%    ~     (p=0.901 n=20+19)
      Tar             368ms ± 5%        369ms ± 8%    ~     (p=0.429 n=20+20)
      XML             435ms ± 5%        434ms ± 5%    ~     (p=0.841 n=20+20)
      
      name      old alloc/op      new alloc/op      delta
      Template       39.0MB ± 0%       38.9MB ± 0%  -0.21%  (p=0.000 n=20+19)
      Unicode        29.0MB ± 0%       29.0MB ± 0%  -0.03%  (p=0.000 n=20+20)
      GoTypes         116MB ± 0%        115MB ± 0%  -0.33%  (p=0.000 n=20+20)
      Compiler        498MB ± 0%        496MB ± 0%  -0.37%  (p=0.000 n=19+20)
      SSA            1.41GB ± 0%       1.40GB ± 0%  -0.24%  (p=0.000 n=20+20)
      Flate          25.0MB ± 0%       25.0MB ± 0%  -0.22%  (p=0.000 n=20+19)
      GoParser       31.0MB ± 0%       30.9MB ± 0%  -0.23%  (p=0.000 n=20+17)
      Reflect        77.1MB ± 0%       77.0MB ± 0%  -0.12%  (p=0.000 n=20+20)
      Tar            39.7MB ± 0%       39.6MB ± 0%  -0.17%  (p=0.000 n=20+20)
      XML            44.9MB ± 0%       44.8MB ± 0%  -0.29%  (p=0.000 n=20+20)
      
      name      old allocs/op     new allocs/op     delta
      Template         386k ± 0%         385k ± 0%  -0.28%  (p=0.000 n=20+20)
      Unicode          337k ± 0%         336k ± 0%  -0.07%  (p=0.000 n=20+20)
      GoTypes         1.20M ± 0%        1.20M ± 0%  -0.41%  (p=0.000 n=20+20)
      Compiler        4.71M ± 0%        4.68M ± 0%  -0.52%  (p=0.000 n=20+20)
      SSA             11.7M ± 0%        11.6M ± 0%  -0.31%  (p=0.000 n=20+19)
      Flate            238k ± 0%         237k ± 0%  -0.28%  (p=0.000 n=18+20)
      GoParser         320k ± 0%         319k ± 0%  -0.34%  (p=0.000 n=20+19)
      Reflect          961k ± 0%         959k ± 0%  -0.12%  (p=0.000 n=20+20)
      Tar              397k ± 0%         396k ± 0%  -0.23%  (p=0.000 n=20+20)
      XML              419k ± 0%         417k ± 0%  -0.39%  (p=0.000 n=20+19)
      
      Change-Id: Ic7ec3614808d9892c1cab3991b996b7a3b8eff21
      Reviewed-on: https://go-review.googlesource.com/102676
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      377a2cb2
    • Tobias Klauser's avatar
      runtime: parse auxv for page size on netbsd · 4ff4e507
      Tobias Klauser authored
      Decode AT_PAGESZ to determine physPageSize on netbsd.
      
      Also rename vdso_none.go to auxv_none.go which matches its purpose more
      closely.
      
      Akin to CL 99780 which did the same for freebsd.
      
      Change-Id: Iea4322f861ff0f3515e9051585dbb442f024326b
      Reviewed-on: https://go-review.googlesource.com/102677
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      4ff4e507
    • Carlos Eduardo Seo's avatar
      math/big: improve performance of addVW/subVW for ppc64x · a44c7282
      Carlos Eduardo Seo authored
      This change adds a better implementation in asm for addVW/subVW for
      ppc64x, with speedups up to 3.11x.
      
      benchmark                    old ns/op     new ns/op     delta
      BenchmarkAddVW/1-16          6.87          5.71          -16.89%
      BenchmarkAddVW/2-16          7.72          5.94          -23.06%
      BenchmarkAddVW/3-16          8.74          6.56          -24.94%
      BenchmarkAddVW/4-16          9.66          7.26          -24.84%
      BenchmarkAddVW/5-16          10.8          7.26          -32.78%
      BenchmarkAddVW/10-16         17.4          9.97          -42.70%
      BenchmarkAddVW/100-16        164           56.0          -65.85%
      BenchmarkAddVW/1000-16       1638          524           -68.01%
      BenchmarkAddVW/10000-16      16421         5201          -68.33%
      BenchmarkAddVW/100000-16     165762        53324         -67.83%
      BenchmarkSubVW/1-16          6.76          5.62          -16.86%
      BenchmarkSubVW/2-16          7.69          6.02          -21.72%
      BenchmarkSubVW/3-16          8.85          6.61          -25.31%
      BenchmarkSubVW/4-16          10.0          7.34          -26.60%
      BenchmarkSubVW/5-16          11.3          7.33          -35.13%
      BenchmarkSubVW/10-16         19.5          18.7          -4.10%
      BenchmarkSubVW/100-16        153           55.9          -63.46%
      BenchmarkSubVW/1000-16       1502          519           -65.45%
      BenchmarkSubVW/10000-16      15005         5165          -65.58%
      BenchmarkSubVW/100000-16     150620        53124         -64.73%
      
      benchmark                    old MB/s     new MB/s     speedup
      BenchmarkAddVW/1-16          1165.12      1400.76      1.20x
      BenchmarkAddVW/2-16          2071.39      2693.25      1.30x
      BenchmarkAddVW/3-16          2744.72      3656.92      1.33x
      BenchmarkAddVW/4-16          3311.63      4407.34      1.33x
      BenchmarkAddVW/5-16          3700.52      5512.48      1.49x
      BenchmarkAddVW/10-16         4605.63      8026.37      1.74x
      BenchmarkAddVW/100-16        4856.15      14296.76     2.94x
      BenchmarkAddVW/1000-16       4883.96      15264.21     3.13x
      BenchmarkAddVW/10000-16      4871.52      15380.78     3.16x
      BenchmarkAddVW/100000-16     4826.17      15002.48     3.11x
      BenchmarkSubVW/1-16          1183.20      1423.03      1.20x
      BenchmarkSubVW/2-16          2081.92      2657.44      1.28x
      BenchmarkSubVW/3-16          2711.52      3632.30      1.34x
      BenchmarkSubVW/4-16          3198.30      4360.30      1.36x
      BenchmarkSubVW/5-16          3534.43      5460.40      1.54x
      BenchmarkSubVW/10-16         4106.34      4273.51      1.04x
      BenchmarkSubVW/100-16        5213.48      14306.32     2.74x
      BenchmarkSubVW/1000-16       5324.27      15391.21     2.89x
      BenchmarkSubVW/10000-16      5331.33      15486.57     2.90x
      BenchmarkSubVW/100000-16     5311.35      15059.01     2.84x
      
      Change-Id: Ibaa5b9b38d63fba8e01a9c327eb8bef1e6e908c1
      Reviewed-on: https://go-review.googlesource.com/101975Reviewed-by: default avatarLynn Boger <laboger@linux.vnet.ibm.com>
      a44c7282
    • HaraldNordgren's avatar
      cmd/go: print each import error only once · a42ea51a
      HaraldNordgren authored
      This change prevents import errors from being printed multiple times.
      Creating a bare-bones package 'p' with only one file importing itself
      and running 'go build p', the current implementation gives this error
      message:
      
      	can't load package: import cycle not allowed
      	package p
      		imports p
      	import cycle not allowed
      	package p
      		imports p
      
      With this change we will show the message only once.
      
      Updates #23295
      
      Change-Id: I653b34c1c06c279f3df514f12ec0b89745a7e64a
      Reviewed-on: https://go-review.googlesource.com/86535Reviewed-by: default avatarHarald Nordgren <haraldnordgren@gmail.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a42ea51a
    • Meng Zhuo's avatar
      runtime: use vDSO for clock_gettime on linux/arm64 · ea59ebd3
      Meng Zhuo authored
      Use the __vdso_clock_gettime fast path via the vDSO on linux/arm64 to
      speed up nanotime and walltime. This results in the following
      performance improvement for time.Now on Cavium ThunderX:
      
      name     old time/op  new time/op  delta
      TimeNow   442ns ± 0%   163ns ± 0%  -63.16%  (p=0.000 n=10+10)
      
      And benchmarks on VDSO
      
      BenchmarkClockVDSOAndFallbackPaths/vDSO         10000000 166 ns/op
      BenchmarkClockVDSOAndFallbackPaths/Fallback     3000000 456 ns/op
      
      Change-Id: I326118c6dff865eaa0569fc45d1fc1ff95cb74f6
      Reviewed-on: https://go-review.googlesource.com/99855
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      ea59ebd3
    • Alberto Donizetti's avatar
      cmd/compile: allocate less in regalloc's liveValues · b63b0f2b
      Alberto Donizetti authored
      Instrumenting the compiler shows that, at the end of liveValues, the
      values of the workList's cap are distributed as:
      
        cap	 freq
        1  	 0.006
        2  	 0.002
        4  	 0.237
        8  	 0.272
        16	 0.254
        32	 0.141
        64	 0.062
        128	 0.02
        256	 0.005
        512	 0.001
        1024	 0.0
      
      Since the initial workList slice allocation is always on the stack
      (as the variable does not escape), we can aggressively pre-allocate a
      big backing array at (almost) no cost. This will save several
      allocations in liveValues calls that end up having a large workList,
      with no performance penalties for calls that have a small workList.
      
      name      old time/op       new time/op       delta
      Template        284ms ± 3%        282ms ± 3%    ~     (p=0.201 n=20+20)
      Unicode         138ms ± 7%        138ms ± 7%    ~     (p=0.718 n=20+20)
      GoTypes         905ms ± 2%        895ms ± 1%  -1.10%  (p=0.003 n=19+18)
      Compiler        4.26s ± 1%        4.25s ± 1%  -0.38%  (p=0.038 n=20+19)
      SSA             9.85s ± 2%        9.80s ± 1%    ~     (p=0.061 n=20+19)
      Flate           187ms ± 6%        186ms ± 5%    ~     (p=0.289 n=20+20)
      GoParser        227ms ± 3%        225ms ± 3%    ~     (p=0.072 n=20+20)
      Reflect         578ms ± 2%        575ms ± 2%    ~     (p=0.059 n=18+20)
      Tar             263ms ± 2%        265ms ± 3%    ~     (p=0.224 n=19+20)
      XML             323ms ± 3%        325ms ± 2%    ~     (p=0.127 n=20+20)
      
      name      old user-time/op  new user-time/op  delta
      Template        406ms ± 6%        404ms ± 4%    ~     (p=0.314 n=20+20)
      Unicode         220ms ± 6%        215ms ±11%    ~     (p=0.077 n=18+20)
      GoTypes         1.25s ± 3%        1.24s ± 4%    ~     (p=0.461 n=20+20)
      Compiler        5.95s ± 2%        5.84s ± 5%  -1.93%  (p=0.007 n=20+20)
      SSA             14.4s ± 4%        14.2s ± 4%    ~     (p=0.108 n=20+20)
      Flate           257ms ± 6%        252ms ± 9%    ~     (p=0.063 n=20+20)
      GoParser        317ms ± 5%        312ms ± 6%  -1.85%  (p=0.049 n=20+20)
      Reflect         779ms ± 2%        774ms ± 3%    ~     (p=0.253 n=20+20)
      Tar             371ms ± 4%        374ms ± 4%    ~     (p=0.327 n=20+20)
      XML             440ms ± 5%        442ms ± 5%    ~     (p=0.678 n=20+20)
      
      name      old alloc/op      new alloc/op      delta
      Template       39.4MB ± 0%       39.0MB ± 0%  -0.96%  (p=0.000 n=20+20)
      Unicode        29.1MB ± 0%       29.0MB ± 0%  -0.13%  (p=0.000 n=20+20)
      GoTypes         117MB ± 0%        116MB ± 0%  -0.88%  (p=0.000 n=20+20)
      Compiler        502MB ± 0%        498MB ± 0%  -0.77%  (p=0.000 n=19+20)
      SSA            1.42GB ± 0%       1.40GB ± 0%  -0.80%  (p=0.000 n=20+20)
      Flate          25.3MB ± 0%       25.0MB ± 0%  -1.10%  (p=0.000 n=20+19)
      GoParser       31.3MB ± 0%       31.0MB ± 0%  -1.05%  (p=0.000 n=20+20)
      Reflect        77.9MB ± 0%       77.1MB ± 0%  -1.03%  (p=0.000 n=20+20)
      Tar            40.0MB ± 0%       39.7MB ± 0%  -0.80%  (p=0.000 n=20+20)
      XML            45.2MB ± 0%       44.9MB ± 0%  -0.72%  (p=0.000 n=20+20)
      
      name      old allocs/op     new allocs/op     delta
      Template         392k ± 0%         386k ± 0%  -1.44%  (p=0.000 n=20+20)
      Unicode          337k ± 0%         337k ± 0%  -0.22%  (p=0.000 n=20+20)
      GoTypes         1.22M ± 0%        1.20M ± 0%  -1.33%  (p=0.000 n=20+20)
      Compiler        4.76M ± 0%        4.71M ± 0%  -1.12%  (p=0.000 n=20+20)
      SSA             11.8M ± 0%        11.7M ± 0%  -1.00%  (p=0.000 n=20+20)
      Flate            241k ± 0%         238k ± 0%  -1.49%  (p=0.000 n=20+20)
      GoParser         324k ± 0%         320k ± 0%  -1.17%  (p=0.000 n=20+20)
      Reflect          981k ± 0%         961k ± 0%  -2.11%  (p=0.000 n=20+20)
      Tar              402k ± 0%         397k ± 0%  -1.29%  (p=0.000 n=20+20)
      XML              424k ± 0%         419k ± 0%  -1.10%  (p=0.000 n=19+20)
      
      Change-Id: If46667ae98eee2d47a615cad05e18df0629d8388
      Reviewed-on: https://go-review.googlesource.com/102495
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      b63b0f2b
    • Alberto Donizetti's avatar
      cmd/compile: use more ORs in generic.rules · fdee46ee
      Alberto Donizetti authored
      No changes in the actual generated compiler code.
      
      Change-Id: I206a7bf7b60f70a73640119fc92974f79ed95a6b
      Reviewed-on: https://go-review.googlesource.com/102416
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      fdee46ee
    • David du Colombier's avatar
      os: fix TestDevNullFile on Plan 9 · 49325dc1
      David du Colombier authored
      CL 102457 added TestDevNullFile. However, this
      test is failing on Plan 9, because it checks
      that /dev/null is a character device while there
      are no special files on Plan 9.
      
      We fix this issue by changing Stat to consider
      all files served by the console device (#c)
      as character devices.
      
      Fixes #24534.
      
      Change-Id: I1c60cdf25770358b908790b3fb71910fa914dec0
      Reviewed-on: https://go-review.googlesource.com/102424
      Run-TryBot: David du Colombier <0intro@gmail.com>
      Reviewed-by: default avatarAlex Brainman <alex.brainman@gmail.com>
      Reviewed-by: default avatarRob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      49325dc1
    • Tim Wright's avatar
      cmd/go, cmd/link, runtime: enable PIE build mode, cgo race tests on FreeBSD · 131901e8
      Tim Wright authored
      Fixes #24546
      
      Change-Id: I99ebd5bc18e5c5e42eee4689644a7a8b02405f31
      Reviewed-on: https://go-review.googlesource.com/102616
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      131901e8
  3. 26 Mar, 2018 8 commits