1. 24 Oct, 2018 19 commits
    • Brad Fitzpatrick's avatar
      crypto/tls, net/http: reject HTTP requests to HTTPS server · c942191c
      Brad Fitzpatrick authored
      This adds a crypto/tls.RecordHeaderError.Conn field containing the TLS
      underlying net.Conn for non-TLS handshake errors, and then uses it in
      the net/http Server to return plaintext HTTP 400 errors when a client
      mistakenly sends a plaintext HTTP request to an HTTPS server. This is the
      same behavior as Apache.
      
      Also in crypto/tls: swap two error paths to not use a value before
      it's valid, and don't send a alert record when a handshake contains a
      bogus TLS record (a TLS record in response won't help a non-TLS
      client).
      
      Fixes #23689
      
      Change-Id: Ife774b1e3886beb66f25ae4587c62123ccefe847
      Reviewed-on: https://go-review.googlesource.com/c/143177Reviewed-by: 's avatarFilippo Valsorda <filippo@golang.org>
      c942191c
    • yuuji.yaginuma's avatar
      cmd/go: fix command name in error messages · 0e408897
      yuuji.yaginuma authored
      `go vendor` is now `go mod vendor`. So it should be unified to use `go mod vendor` in error messages.
      
      Change-Id: I9e84b9a4f4500659b183b83040867b12a8d174aa
      GitHub-Last-Rev: 8516e246d4e7f70bf21311b4cb8cb571a561815b
      GitHub-Pull-Request: golang/go#28347
      Reviewed-on: https://go-review.googlesource.com/c/144379Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0e408897
    • Aurélien Rainone's avatar
      path/filepath: add example for Match · 7989119d
      Aurélien Rainone authored
      Change-Id: Id2df4895a95904a607e54dd9810bfe97f5e12a73
      Reviewed-on: https://go-review.googlesource.com/c/144105
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      7989119d
    • Robert Griesemer's avatar
      go/types: untyped shifted constants must fit their expected int type · 9f7b1a82
      Robert Griesemer authored
      Fixes #22969.
      
      Change-Id: Ie9d1748c36864a81a633f0016594912ac7dfc005
      Reviewed-on: https://go-review.googlesource.com/c/144385Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      9f7b1a82
    • Robert Griesemer's avatar
      cmd/compile: better errors for structs with conflicting fields and methods · 6761b1eb
      Robert Griesemer authored
      If a field and method have the same name, mark the respective struct field
      so that we don't report follow-on errors when the field/method is accessed.
      
      Per suggestion of @mdempsky.
      
      Fixes #28268.
      
      Change-Id: Ia1ca4cdfe9bacd3739d1fd7ca5e014ca094245ee
      Reviewed-on: https://go-review.googlesource.com/c/144259Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      6761b1eb
    • Denys Smirnov's avatar
      syscall/js: add Wrapper interface to support external Value wrapper types · 4be3851d
      Denys Smirnov authored
      The Callback and TypedArray are the only JavaScript types supported by
      the library, thus they are special-cased in a type switch of ValueOf.
      
      Instead, a Ref interface is defined to allow external wrapper types
      to be handled properly by ValueOf.
      
      Change-Id: I03240ba7ec46979336b88389a70b7bcac37fc715
      GitHub-Last-Rev: c8cf08d8ccfaab2af98df9eec8bc7b60dbce2c64
      GitHub-Pull-Request: golang/go#28181
      Reviewed-on: https://go-review.googlesource.com/c/141644
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRichard Musiol <neelance@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      4be3851d
    • Robert Griesemer's avatar
      cmd/compile: better error for embedded field referring to missing import · 5538ecad
      Robert Griesemer authored
      Fixes #27938.
      
      Change-Id: I16263ac6c0b8903b8a16f02e8db0e1a16d1c95b4
      Reviewed-on: https://go-review.googlesource.com/c/144261Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      5538ecad
    • Yuval Pavel Zholkover's avatar
      syscall: swap src, dest arguments in convertFromDirents11 for FreeBSD · 5a7cfbc0
      Yuval Pavel Zholkover authored
      make fixedSize, oldFixedSize constants.
      use st instead of stat for function arg so that we do not shadow the stat() function.
      
      dstPos+reclen == len(buf) is a valid write location, update the break condition.
      
      Change-Id: I55f9210f54d24a3f9cda1ebab52437436254f8f4
      Reviewed-on: https://go-review.googlesource.com/c/143637
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      5a7cfbc0
    • Agniva De Sarker's avatar
      time: return correct zone info on js/wasm · eef01401
      Agniva De Sarker authored
      Fixes #28265
      
      Change-Id: I0a13e9f9c216647e42127a59a80b0f19618169c1
      Reviewed-on: https://go-review.googlesource.com/c/143577
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarRichard Musiol <neelance@gmail.com>
      eef01401
    • Elias Naur's avatar
      misc/ios: remove note from output of detect.go · 5dc2e2f7
      Elias Naur authored
      If no GOIOS_DEV_ID is set, iostest.bash will eval the output of
      detect.go. Prepend the note output by detect.go with # to make
      the shell ignore it.
      
      Went undetected for so long because the iOS builders usually run
      with GOIOS_DEV_ID set.
      
      Change-Id: I308eac94803851620ca91593f9a1aef79825187f
      Reviewed-on: https://go-review.googlesource.com/c/144109
      Run-TryBot: Elias Naur <elias.naur@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      5dc2e2f7
    • Elias Naur's avatar
      internal/traceparser: skip test on iOS · 536a7d67
      Elias Naur authored
      The iOS test harness only include files from the tested package or
      below. Skip a test on iOS that required files outside the package.
      
      Change-Id: Iaee7e488eb783b443f2b2b84d8be2de01227ab62
      Reviewed-on: https://go-review.googlesource.com/c/144110
      Run-TryBot: Elias Naur <elias.naur@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarPeter Weinberger <pjw@google.com>
      536a7d67
    • Brian Kessler's avatar
      math/bits: correct BenchmarkSub64 · 127c51e4
      Brian Kessler authored
      Previously, the benchmark was measuring Add64 instead of Sub64.
      
      Change-Id: I0cf30935c8a4728bead9868834377aae0b34f008
      Reviewed-on: https://go-review.googlesource.com/c/144380Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      127c51e4
    • Clément Chigot's avatar
      cmd/link: add AIX operating system · 269e5319
      Clément Chigot authored
      This commit adds AIX operating system to cmd/link package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I349e0a2658c31919b72117b62c4c9935c9af07c0
      Reviewed-on: https://go-review.googlesource.com/c/138730
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      269e5319
    • Tobias Klauser's avatar
      internal/syscall/unix: omit unnecessary randomTrap check in GetRandom · 61550910
      Tobias Klauser authored
      The randomTrap const is initialized to a non-zero value for linux in
      getrandom_linux_$GOARCH.go and for freebsd in getrandom_freebsd.go
      directly since CL 16662. Thus, omit the unnecessary check.
      
      Change-Id: Id20cd628dfe6fab9908fa5258c3132e3b422a6b4
      Reviewed-on: https://go-review.googlesource.com/c/144108
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      61550910
    • Clément Chigot's avatar
      cmd: add DWARF64 support for aix port · 75a0b9db
      Clément Chigot authored
      This commit adds support for DWARF 64bits which is needed for AIX
      operating system.
      
      It also adds the save of each compilation unit's size which will be
      used during XCOFF generation in a following patch.
      
      Updates: #25893
      
      Change-Id: Icdd0a4dd02bc0a9f0df319c351fb1db944610015
      Reviewed-on: https://go-review.googlesource.com/c/138729
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      75a0b9db
    • Daniel Martí's avatar
      cmd/go: use os.UserCacheDir for the default GOCACHE · bcc3447b
      Daniel Martí authored
      This piece of code predates the addition of os.UserCacheDir, and it
      looks like os.UserCacheDir was based on this piece of code.
      
      The two behaved exactly the same, minus cmd/go's addition of AppData for
      Windows XP in CL 87675. However, Go 1.11 dropped support for Windows XP,
      so we can safely ignore that change now.
      
      The only tweaks necessary are to return "off" if an error is
      encountered, and to disable warnings if we're using "/.cache".
      
      Change-Id: Ia00577d4575ce4870f7fb103eafaa4d2b630743e
      Reviewed-on: https://go-review.googlesource.com/c/141538
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      bcc3447b
    • Filippo Valsorda's avatar
      crypto/tls: replace custom *block with standard buffers · ab51b1d6
      Filippo Valsorda authored
      The crypto/tls record layer used a custom buffer implementation with its
      own semantics, freelist, and offset management. Replace it all with
      per-task bytes.Buffer, bytes.Reader and byte slices, along with a
      refactor of all the encrypt and decrypt code.
      
      The main quirk of *block was to do a best-effort read past the record
      boundary, so that if a closeNotify was waiting it would be peeked and
      surfaced along with the last Read. Address that with atLeastReader and
      ReadFrom to avoid a useless copy (instead of a LimitReader or CopyN).
      
      There was also an optimization to split blocks along record boundary
      lines without having to copy in and out the data. Replicate that by
      aliasing c.input into consumed c.rawInput (after an in-place decrypt
      operation). This is safe because c.rawInput is not used until c.input is
      drained.
      
      The benchmarks are noisy but look like an improvement across the board,
      which is a nice side effect :)
      
      name                                       old time/op   new time/op   delta
      HandshakeServer/RSA-8                        817µs ± 2%    797µs ± 2%  -2.52%  (p=0.000 n=10+9)
      HandshakeServer/ECDHE-P256-RSA-8             984µs ±11%    897µs ± 0%  -8.89%  (p=0.000 n=10+9)
      HandshakeServer/ECDHE-P256-ECDSA-P256-8      206µs ±10%    199µs ± 3%    ~     (p=0.113 n=10+9)
      HandshakeServer/ECDHE-X25519-ECDSA-P256-8    204µs ± 3%    202µs ± 1%  -1.06%  (p=0.013 n=10+9)
      HandshakeServer/ECDHE-P521-ECDSA-P521-8     15.5ms ± 0%   15.6ms ± 1%    ~     (p=0.095 n=9+10)
      Throughput/MaxPacket/1MB-8                  5.35ms ±19%   5.39ms ±36%    ~     (p=1.000 n=9+10)
      Throughput/MaxPacket/2MB-8                  9.20ms ±15%   8.30ms ± 8%  -9.79%  (p=0.035 n=10+9)
      Throughput/MaxPacket/4MB-8                  13.8ms ± 7%   13.6ms ± 8%    ~     (p=0.315 n=10+10)
      Throughput/MaxPacket/8MB-8                  25.1ms ± 3%   23.2ms ± 2%  -7.66%  (p=0.000 n=10+9)
      Throughput/MaxPacket/16MB-8                 46.9ms ± 1%   43.0ms ± 3%  -8.29%  (p=0.000 n=9+10)
      Throughput/MaxPacket/32MB-8                 88.9ms ± 2%   82.3ms ± 2%  -7.40%  (p=0.000 n=9+9)
      Throughput/MaxPacket/64MB-8                  175ms ± 2%    164ms ± 4%  -6.18%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/1MB-8              5.79ms ±26%   5.82ms ±22%    ~     (p=0.912 n=10+10)
      Throughput/DynamicPacket/2MB-8              9.23ms ±14%   9.50ms ±23%    ~     (p=0.971 n=10+10)
      Throughput/DynamicPacket/4MB-8              14.5ms ±11%   13.8ms ± 6%  -4.66%  (p=0.019 n=10+10)
      Throughput/DynamicPacket/8MB-8              25.6ms ± 4%   23.5ms ± 3%  -8.33%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/16MB-8             47.3ms ± 3%   44.6ms ± 7%  -5.65%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/32MB-8             91.9ms ±14%   85.0ms ± 4%  -7.55%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/64MB-8              177ms ± 2%    168ms ± 4%  -4.97%  (p=0.000 n=8+10)
      Latency/MaxPacket/200kbps-8                  694ms ± 0%    694ms ± 0%    ~     (p=0.315 n=10+9)
      Latency/MaxPacket/500kbps-8                  279ms ± 0%    279ms ± 0%    ~     (p=0.447 n=9+10)
      Latency/MaxPacket/1000kbps-8                 140ms ± 0%    140ms ± 0%    ~     (p=0.661 n=9+10)
      Latency/MaxPacket/2000kbps-8                71.1ms ± 0%   71.1ms ± 0%  +0.05%  (p=0.019 n=9+9)
      Latency/MaxPacket/5000kbps-8                30.4ms ± 7%   30.5ms ± 4%    ~     (p=0.720 n=9+10)
      Latency/DynamicPacket/200kbps-8              134ms ± 0%    134ms ± 0%    ~     (p=0.075 n=10+10)
      Latency/DynamicPacket/500kbps-8             54.8ms ± 0%   54.8ms ± 0%    ~     (p=0.631 n=10+10)
      Latency/DynamicPacket/1000kbps-8            28.5ms ± 0%   28.5ms ± 0%    ~     (p=1.000 n=8+8)
      Latency/DynamicPacket/2000kbps-8            15.7ms ±12%   16.1ms ± 0%    ~     (p=0.109 n=10+7)
      Latency/DynamicPacket/5000kbps-8            8.20ms ±26%   8.17ms ±13%    ~     (p=1.000 n=9+9)
      
      name                                       old speed     new speed     delta
      Throughput/MaxPacket/1MB-8                 193MB/s ±14%  202MB/s ±30%    ~     (p=0.897 n=8+10)
      Throughput/MaxPacket/2MB-8                 230MB/s ±14%  249MB/s ±17%    ~     (p=0.089 n=10+10)
      Throughput/MaxPacket/4MB-8                 304MB/s ± 6%  309MB/s ± 7%    ~     (p=0.315 n=10+10)
      Throughput/MaxPacket/8MB-8                 334MB/s ± 3%  362MB/s ± 2%  +8.29%  (p=0.000 n=10+9)
      Throughput/MaxPacket/16MB-8                358MB/s ± 1%  390MB/s ± 3%  +9.08%  (p=0.000 n=9+10)
      Throughput/MaxPacket/32MB-8                378MB/s ± 2%  408MB/s ± 2%  +8.00%  (p=0.000 n=9+9)
      Throughput/MaxPacket/64MB-8                384MB/s ± 2%  410MB/s ± 4%  +6.61%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/1MB-8             178MB/s ±24%  182MB/s ±24%    ~     (p=0.604 n=9+10)
      Throughput/DynamicPacket/2MB-8             228MB/s ±13%  225MB/s ±20%    ~     (p=0.971 n=10+10)
      Throughput/DynamicPacket/4MB-8             291MB/s ±10%  305MB/s ± 6%  +4.83%  (p=0.019 n=10+10)
      Throughput/DynamicPacket/8MB-8             327MB/s ± 4%  357MB/s ± 3%  +9.08%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/16MB-8            355MB/s ± 3%  376MB/s ± 6%  +6.07%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/32MB-8            366MB/s ±12%  395MB/s ± 4%  +7.91%  (p=0.000 n=10+10)
      Throughput/DynamicPacket/64MB-8            380MB/s ± 2%  400MB/s ± 4%  +5.26%  (p=0.000 n=8+10)
      
      Note that this reduced the buffer for the first read from 1024 to 5+512,
      so it triggered the issue described at #24198 when using a synchronous
      net.Pipe: the first server flight was not being consumed entirely by the
      first read anymore, causing a deadlock as both the client and the server
      were trying to send (the client a reply to the ServerHello, the server
      the rest of the buffer). Fixed by rebasing on top of CL 142817.
      
      Change-Id: Ie31b0a572b2ad37878469877798d5c6a5276f931
      Reviewed-on: https://go-review.googlesource.com/c/142818
      Run-TryBot: Filippo Valsorda <filippo@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      ab51b1d6
    • Daniel Martí's avatar
      text/template: recover panics during function calls · 202e9031
      Daniel Martí authored
      There's precedent in handling panics that happen in functions called
      from the standard library. For example, if a fmt.Formatter
      implementation fails, fmt will absorb the panic into the output text.
      
      Recovering panics is useful, because otherwise one would have to wrap
      some Template.Execute calls with a recover. For example, if there's a
      chance that the callbacks may panic, or if part of the input data is nil
      when it shouldn't be.
      
      In particular, it's a common confusion amongst new Go developers that
      one can call a method on a nil receiver. Expecting text/template to
      error on such a call, they encounter a long and confusing panic if the
      method expects the receiver to be non-nil.
      
      To achieve this, introduce safeCall, which takes care of handling error
      returns as well as recovering panics. Handling panics in the "call"
      function isn't strictly necessary, as that func itself is run via
      evalCall. However, this makes the code more consistent, and can allow
      for better context in panics via the "call" function.
      
      Finally, add some test cases with a mix of funcs, methods, and func
      fields that panic.
      
      Fixes #28242.
      
      Change-Id: Id67be22cc9ebaedeb4b17fa84e677b4b6e09ec67
      Reviewed-on: https://go-review.googlesource.com/c/143097
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRob Pike <r@golang.org>
      202e9031
    • Martin Möhrmann's avatar
      internal/cpu: add options and warnings for required cpu features · 980340ad
      Martin Möhrmann authored
      Updates #27218
      
      Change-Id: I8603f3a639cdd9ee201c4f1566692e5b88877fc4
      Reviewed-on: https://go-review.googlesource.com/c/144107
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      980340ad
  2. 23 Oct, 2018 21 commits
    • Robert Griesemer's avatar
      spec: refer to "run-time panic" rather than "exception" (cleanup) · 1e38ecdb
      Robert Griesemer authored
      Fixes #28341.
      
      Change-Id: If8ae844c9b5e843ce9229c0a555f7006426baed7
      Reviewed-on: https://go-review.googlesource.com/c/144260Reviewed-by: 's avatarRob Pike <r@golang.org>
      1e38ecdb
    • David Chase's avatar
      cmd/compile: schedule OpArg earlier in blocks for better debugging · 9a7e70e3
      David Chase authored
      The location list for OpArg starts where the OpArg appears;
      this is not necessarily as soon as the OpArg coulde be
      observed, and it is reasonable for a user to expect that
      if a breakpoint is set "on f" then the arguments to f will
      be observable where that breakpoint happens to be set (this
      may also require setting the breakpoint after the prologue,
      but that is another issue).
      
      Change-Id: I0a1b848e50f475e5d8a5fad781241126872a0400
      Reviewed-on: https://go-review.googlesource.com/c/142819
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
      Reviewed-by: 's avatarAlessandro Arzilli <alessandro.arzilli@gmail.com>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      9a7e70e3
    • Lynn Boger's avatar
      cmd/asm/internal,cmd/internal/obj/ppc64: add alignment directive to asm for ppc64x · bdba5565
      Lynn Boger authored
      This adds support for an alignment directive that can be used
      within Go asm to indicate preferred code alignment for ppc64x.
      This is intended to be used with loops to improve
      performance.
      
      This change only adds the directive and aligns the code based
      on it. Follow up changes will modify asm functions for
      ppc64x that benefit from preferred alignment.
      
      Fixes #14935
      
      Here is one example of the improvement in memmove when the
      directive is used on the loops in the code:
      
      Memmove/64      8.74ns ± 0%    8.64ns ± 0%   -1.19%  (p=0.000 n=8+8)
      Memmove/128     11.5ns ± 0%    11.0ns ± 0%   -4.35%  (p=0.000 n=8+8)
      Memmove/256     23.0ns ± 0%    15.3ns ± 0%  -33.48%  (p=0.000 n=8+8)
      Memmove/512     31.7ns ± 0%    31.8ns ± 0%   +0.32%  (p=0.000 n=8+8)
      Memmove/1024    52.3ns ± 0%    43.9ns ± 0%  -16.10%  (p=0.000 n=8+8)
      Memmove/2048    93.2ns ± 0%    76.2ns ± 0%  -18.24%  (p=0.000 n=8+8)
      Memmove/4096     174ns ± 0%     141ns ± 0%  -18.97%  (p=0.000 n=8+8)
      
      Change-Id: I200d77e923dd5d78c22fe3f8eb142a8fbaff57bf
      Reviewed-on: https://go-review.googlesource.com/c/144218
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      bdba5565
    • Lynn Boger's avatar
      runtime: use unsigned load for iscgo variable in ppc64x runtime asm · e41fbc79
      Lynn Boger authored
      This changes the runtime asm code that loads iscgo to use MOVBZ
      instead of MOVB, avoiding an unnecessary sign extension. This is most
      significant in runtime.save_g, reducing the size from 8 to 7
      instructions.
      
      Change-Id: Iaa2121464b5309e1f27fd91b19b5603c7aaf619d
      Reviewed-on: https://go-review.googlesource.com/c/144217
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      e41fbc79
    • Lynn Boger's avatar
      internal/bytealg: improve asm for memequal on ppc64x · 6994731e
      Lynn Boger authored
      This includes two changes to the memequal function.
      
      Previously the asm implementation on ppc64x for Equal called the internal
      function memequal using a BL, whereas the other asm implementations for
      bytes functions on ppc64x used BR. The BR is preferred because the BL
      causes the calling function to stack a frame. This changes Equal so it
      uses BR and is consistent with the others.
      
      This also uses vsx instructions where possible to improve performance
      of the compares for sizes over 32.
      
      Here are results from the sizes affected:
      
      Equal/32             8.40ns ± 0%     7.66ns ± 0%    -8.81%  (p=0.029 n=4+4)
      Equal/4K              193ns ± 0%      144ns ± 0%   -25.39%  (p=0.029 n=4+4)
      Equal/4M              346µs ± 0%      277µs ± 0%   -20.08%  (p=0.029 n=4+4)
      Equal/64M            7.66ms ± 1%     7.27ms ± 0%    -5.10%  (p=0.029 n=4+4)
      
      Change-Id: Ib6ee2cdc3e5d146e2705e3338858b8e965d25420
      Reviewed-on: https://go-review.googlesource.com/c/143060
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      Reviewed-by: 's avatarCarlos Eduardo Seo <cseo@linux.vnet.ibm.com>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      6994731e
    • Carlos Eduardo Seo's avatar
      cmd/compile, runtime: add new lightweight atomics for ppc64x · 5c472132
      Carlos Eduardo Seo authored
      This change creates the infrastructure for new lightweight atomics
      primitives in runtime/internal/atomic:
      
      - LoadAcq, for load-acquire
      - StoreRel, for store-release
      - CasRel, for Compare-and-Swap-release
      
      and implements them for ppc64x. There is visible performance improvement
      in producer-consumer scenarios, like BenchmarkChanProdCons*:
      
      benchmark                           old ns/op     new ns/op     delta
      BenchmarkChanProdCons0-48           2034          2034          +0.00%
      BenchmarkChanProdCons10-48          1798          1608          -10.57%
      BenchmarkChanProdCons100-48         1596          1585          -0.69%
      BenchmarkChanProdConsWork0-48       2084          2046          -1.82%
      BenchmarkChanProdConsWork10-48      1829          1668          -8.80%
      BenchmarkChanProdConsWork100-48     1650          1650          +0.00%
      
      Fixes #21348
      
      Change-Id: I1f6ce377e4a0fe4bd7f5f775e8036f50070ad8db
      Reviewed-on: https://go-review.googlesource.com/c/142277
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      5c472132
    • Martin Möhrmann's avatar
      cmd/compile: avoid appends and allocate full slice length in copyRet · 5dbc67a9
      Martin Möhrmann authored
      passes toolstash -cmp
      
      compilebench allocs:
      name      old allocs/op   new allocs/op   delta
      Template       385k ± 0%       385k ± 0%  -0.00%  (p=0.017 n=19+20)
      Unicode        342k ± 0%       342k ± 0%    ~     (p=0.867 n=20+20)
      GoTypes       1.15M ± 0%      1.15M ± 0%  -0.00%  (p=0.008 n=20+20)
      SSA           12.1M ± 0%      12.1M ± 0%    ~     (p=0.141 n=20+19)
      Flate          234k ± 0%       234k ± 0%    ~     (p=0.125 n=20+19)
      GoParser       315k ± 0%       315k ± 0%    ~     (p=0.104 n=20+20)
      Reflect        972k ± 0%       972k ± 0%  -0.00%  (p=0.000 n=17+20)
      Tar            391k ± 0%       391k ± 0%  -0.01%  (p=0.000 n=19+20)
      XML            404k ± 0%       403k ± 0%  -0.01%  (p=0.000 n=20+19)
      
      Change-Id: Ie24f7fae7b6b85422ec1ff0240f08f0a34064d72
      Reviewed-on: https://go-review.googlesource.com/c/144038
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      5dbc67a9
    • Martin Möhrmann's avatar
      runtime: remove unused maxSliceCap function and maxElems array · 64279235
      Martin Möhrmann authored
      All uses of these have been converted to use runtime/internal/math
      functions for overflow checking.
      
      Fixes #21588
      
      Change-Id: I0ba57028e471803dc7d445e66d77a8f87edfdafb
      Reviewed-on: https://go-review.googlesource.com/c/144037
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      64279235
    • Martin Möhrmann's avatar
      runtime: use multiplication with overflow check for newarray · 1e50dd02
      Martin Möhrmann authored
      This improves performance for e.g. maps with a bucket size
      (key+value*8 bytes) larger than 32 bytes and removes loading
      a value from the maxElems array for smaller bucket sizes.
      
      name                old time/op  new time/op  delta
      MakeMap/[Byte]Byte  95.5ns ± 1%  94.7ns ± 1%  -0.78%  (p=0.013 n=9+9)
      MakeMap/[Int]Int     128ns ± 0%   121ns ± 2%  -5.63%  (p=0.000 n=6+10)
      
      Updates #21588
      
      Change-Id: I7d9eb7d49150c399c15dcab675e24bc97ff97852
      Reviewed-on: https://go-review.googlesource.com/c/143997Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      1e50dd02
    • Martin Möhrmann's avatar
      runtime: use multiplication with overflow check for makechan · 286c7ae1
      Martin Möhrmann authored
      This improves performance for channels with an element size
      larger than 32 bytes and removes loading a value from the
      maxElems array for smaller element sizes.
      
      MakeChan/Byte       88.8ns ± 6%  85.2ns ± 1%  -4.03%  (p=0.000 n=10+10)
      MakeChan/Int         100ns ± 4%    96ns ± 2%  -3.72%  (p=0.000 n=9+10)
      MakeChan/Ptr         124ns ± 3%   126ns ± 2%    ~     (p=0.068 n=10+10)
      MakeChan/Struct/0   80.5ns ± 2%  80.7ns ± 2%    ~     (p=0.697 n=10+10)
      MakeChan/Struct/32   143ns ± 4%   141ns ± 2%    ~     (p=0.221 n=10+10)
      MakeChan/Struct/40   169ns ± 2%   159ns ± 4%  -6.26%  (p=0.000 n=10+10)
      
      Updates #21588
      
      Change-Id: Ifbf12a5af2f0ec7e1d2241ecfffab020e9abec48
      Reviewed-on: https://go-review.googlesource.com/c/144017Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      286c7ae1
    • Alberto Donizetti's avatar
      cmd/compile: preallocate in, out arrays in methodfunc · 72f099c3
      Alberto Donizetti authored
      This gives a modest (but measurable) reduction in the number of
      allocations when building the compilebench packages. It's safe and
      exact (there's no heuristic or guessing, the lenghts of in and out are
      known when we enter the function), so it may be worth it.
      
      name       old time/op       new time/op       delta
      Template         236ms ±23%        227ms ± 8%    ~     (p=0.955 n=8+7)
      Unicode          112ms ± 7%        111ms ± 8%    ~     (p=0.798 n=8+8)
      GoTypes          859ms ± 6%        874ms ± 6%    ~     (p=0.442 n=8+8)
      Compiler         3.90s ±12%        3.85s ± 9%    ~     (p=0.878 n=8+8)
      SSA              12.1s ± 7%        11.9s ± 8%    ~     (p=0.798 n=8+8)
      Flate            151ms ±13%        157ms ±14%    ~     (p=0.382 n=8+8)
      GoParser         190ms ±14%        192ms ±10%    ~     (p=0.645 n=8+8)
      Reflect          554ms ± 5%        555ms ± 9%    ~     (p=0.878 n=8+8)
      Tar              220ms ±19%        212ms ± 6%    ~     (p=0.867 n=8+7)
      XML              296ms ±16%        303ms ±13%    ~     (p=0.574 n=8+8)
      
      name       old alloc/op      new alloc/op      delta
      Template        35.4MB ± 0%       35.4MB ± 0%  -0.03%  (p=0.021 n=8+8)
      Unicode         29.2MB ± 0%       29.2MB ± 0%    ~     (p=0.645 n=8+8)
      GoTypes          123MB ± 0%        123MB ± 0%  -0.02%  (p=0.001 n=7+8)
      Compiler         514MB ± 0%        514MB ± 0%    ~     (p=0.336 n=8+7)
      SSA             1.94GB ± 0%       1.94GB ± 0%  -0.00%  (p=0.004 n=8+7)
      Flate           24.5MB ± 0%       24.5MB ± 0%  -0.03%  (p=0.015 n=8+8)
      GoParser        28.7MB ± 0%       28.7MB ± 0%    ~     (p=0.279 n=8+8)
      Reflect         87.4MB ± 0%       87.4MB ± 0%  -0.02%  (p=0.000 n=8+8)
      Tar             35.2MB ± 0%       35.2MB ± 0%  -0.02%  (p=0.007 n=8+8)
      XML             47.4MB ± 0%       47.4MB ± 0%    ~     (p=0.083 n=8+8)
      
      name       old allocs/op     new allocs/op     delta
      Template          348k ± 0%         348k ± 0%  -0.15%  (p=0.000 n=8+8)
      Unicode           339k ± 0%         339k ± 0%    ~     (p=0.195 n=8+8)
      GoTypes          1.28M ± 0%        1.27M ± 0%  -0.20%  (p=0.000 n=8+8)
      Compiler         4.88M ± 0%        4.88M ± 0%  -0.15%  (p=0.000 n=8+8)
      SSA              15.2M ± 0%        15.2M ± 0%  -0.02%  (p=0.000 n=8+7)
      Flate             234k ± 0%         233k ± 0%  -0.34%  (p=0.000 n=8+8)
      GoParser          291k ± 0%         291k ± 0%  -0.13%  (p=0.000 n=8+8)
      Reflect          1.05M ± 0%        1.05M ± 0%  -0.20%  (p=0.000 n=8+8)
      Tar               344k ± 0%         343k ± 0%  -0.22%  (p=0.000 n=8+8)
      XML               430k ± 0%         429k ± 0%  -0.24%  (p=0.000 n=8+8)
      
      Change-Id: I0044b99079ef211003325a7f136e35b55cc5cb74
      Reviewed-on: https://go-review.googlesource.com/c/143638Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      72f099c3
    • Clément Chigot's avatar
      net: fix TestInterfaceMulticastAddrs for AIX · e850b375
      Clément Chigot authored
      This commit disables checkMulticastStats for AIX operating system.
      
      Change-Id: If8d0fb609a0dcf75b7bb5c3871cfb6fad76a0a92
      Reviewed-on: https://go-review.googlesource.com/c/144102
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e850b375
    • diplozoon's avatar
      cmd/go: remove unnecessary else conditions · 0d656934
      diplozoon authored
      Fixes golint warning about "if block ends with a return statement, so drop this else and outdent its block".
      
      Change-Id: I6fc8724f586efcb6e2ed92ee36be421d3e9a8c80
      Reviewed-on: https://go-review.googlesource.com/c/144137Reviewed-by: 's avatarRalph Corderoy <ralph@inputplus.co.uk>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0d656934
    • Hana Kim's avatar
      cmd/go/internal/modload: fix use of //go:linkname · c9bc1340
      Hana Kim authored
      I can't find the exact rule about space before compiler directive
      openings from
      https://golang.org/cmd/compile/#hdr-Compiler_Directives
      but it seems like the compiler doesn't recognize it
      as a compiler directive if it is preceded by space.
      Removing the space made the //go:linkname in the __gomod__.go file
      working as intended.
      
      Manually tested.
      
      Update #26404
      
      Change-Id: I589f7203a628b2fa6238d82878029e0f098091b6
      Reviewed-on: https://go-review.googlesource.com/c/143977Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c9bc1340
    • Clément Chigot's avatar
      cmd/link: add new loading package for XCOFF files · b171b281
      Clément Chigot authored
      This commit adds the new package cmd/link/internal/loadxcoff.
      
      It also adds a new symbol kind in cmd/link/internal/sym package, which
      aims to represent TOC entries for XCOFF files.
      
      cmd/dist is updated to add this new package and cmd/internal/xcoff during
      the bootstrap.
      
      Updates: #25893
      
      Change-Id: I42b6578cf0ba4cc28ad4aa98122a91ab1d1bbf6e
      Reviewed-on: https://go-review.googlesource.com/c/138728
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      b171b281
    • Peter Weinberger's avatar
      internal/traceparser: provide parser that uses less space and parses segments of… · daaf361f
      Peter Weinberger authored
      internal/traceparser: provide parser that uses less space and parses segments of runtime trace files
      
      Traceparser generally takes 20-30% less space than internal/trace. The only
      user of these pakcages is cmd/trace, and the new package lets it handle some
      trace files that were too large. The new parser will also convert segments
      of the raw trace file (e.g. the last 10 seconds) to Events. Trace files from
      go 1.8 and before are not supported.
      
      Change-Id: If83fa183246db8f75182ccd3ba8df07673c0ebd0
      Reviewed-on: https://go-review.googlesource.com/c/137635
      Run-TryBot: Peter Weinberger <pjw@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      daaf361f
    • Iskander Sharipov's avatar
      cmd/compile/internal/gc: remove dead code from stringtoarraylit · 5ddb2091
      Iskander Sharipov authored
      The code path for []byte is unused.
      Rename function to stringtoruneslit to reflect change in the behavior.
      
      Note that removed code had a bug in it,
      it used [0] index instead of [i] inside a loop body.
      
      Change-Id: I58ece5d9d3835887b014446f8a7d3e7fc2fdcaa3
      Reviewed-on: https://go-review.googlesource.com/c/125796
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      5ddb2091
    • Martin Möhrmann's avatar
      runtime: use multiplication with overflow check for makeslice · 05166bf5
      Martin Möhrmann authored
      This improves performance for slices with an element size larger
      than 32 bytes and removes loading a value from the maxElems
      array for smaller element sizes.
      
      name                 old time/op  new time/op  delta
      MakeSlice/Byte       18.0ns ± 4%  18.0ns ± 2%     ~     (p=0.575 n=20+17)
      MakeSlice/Int16      21.8ns ± 2%  21.6ns ± 1%   -0.63%  (p=0.035 n=20+19)
      MakeSlice/Int        42.0ns ± 2%  41.6ns ± 1%     ~     (p=0.121 n=20+18)
      MakeSlice/Ptr        62.6ns ± 2%  62.4ns ± 2%     ~     (p=0.491 n=20+18)
      MakeSlice/Struct/24  57.4ns ± 3%  56.0ns ± 2%   -2.40%  (p=0.000 n=19+19)
      MakeSlice/Struct/32  62.1ns ± 2%  60.6ns ± 3%   -2.43%  (p=0.000 n=20+20)
      MakeSlice/Struct/40  77.3ns ± 3%  68.9ns ± 3%  -10.91%  (p=0.000 n=20+20)
      
      Updates #21588
      
      Change-Id: Ie12807bf8f77c0e15453413f47e3d7de771b798f
      Reviewed-on: https://go-review.googlesource.com/c/142377
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      05166bf5
    • Martin Möhrmann's avatar
      runtime: use multiplication with overflow check for growslice · 3b091bf6
      Martin Möhrmann authored
      This improves performance for slices with an element size larger
      than 32 bytes and removes loading a value from the maxElems
      array for smaller element sizes.
      
      name                 old time/op  new time/op  delta
      GrowSlice/Byte       41.4ns ± 2%  41.5ns ± 1%    ~     (p=0.366 n=10+9)
      GrowSlice/Int16      51.1ns ± 2%  51.0ns ± 2%    ~     (p=0.985 n=10+10)
      GrowSlice/Int        64.0ns ± 1%  64.2ns ± 1%    ~     (p=0.180 n=10+10)
      GrowSlice/Ptr        90.8ns ± 1%  90.7ns ± 1%    ~     (p=0.858 n=9+10)
      GrowSlice/Struct/24   108ns ± 0%   108ns ± 2%    ~     (p=0.488 n=8+9)
      GrowSlice/Struct/32   118ns ± 2%   117ns ± 2%    ~     (p=0.327 n=10+10)
      GrowSlice/Struct/40   159ns ± 1%   148ns ± 1%  -6.87%  (p=0.000 n=10+9)
      
      Updates #21588
      
      Change-Id: I443b82972d379b1befa791f9ee468b3adc6bb760
      Reviewed-on: https://go-review.googlesource.com/c/143798
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3b091bf6
    • Martin Möhrmann's avatar
      runtime: use multiplication with overflow check for makemap · e85b8db6
      Martin Möhrmann authored
      This improves performance for maps with a bucket size
      (key+value*8 bytes) larger than 32 bytes and removes loading
      a value from the maxElems array for smaller bucket sizes.
      
      name                old time/op  new time/op  delta
      MakeMap/[Byte]Byte  93.5ns ± 1%  91.8ns ± 1%  -1.83%  (p=0.000 n=10+10)
      MakeMap/[Int]Int     134ns ± 1%   127ns ± 2%  -5.61%  (p=0.000 n=9+10)
      
      Updates #21588
      
      Change-Id: I53f77186769c4bd0f2b90f3c6c17df643b060e39
      Reviewed-on: https://go-review.googlesource.com/c/143797
      Run-TryBot: Martin Möhrmann <martisch@uos.de>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e85b8db6
    • Clément Chigot's avatar
      internal/syscall/unix, net: improve interface_aix.go · 93eded02
      Clément Chigot authored
      This commit improves the interface_aix.go file, based on feedbacks about
      CL 138724.
      
      To retrieve MTU, ioctl is needed. It's implemented inside
      internal/syscall/unix.
      
      Change-Id: Ic583d26b93935a32a5f1eb5a2170b86e80a4a85e
      Reviewed-on: https://go-review.googlesource.com/c/142157
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      93eded02