1. 23 Oct, 2018 23 commits
    • 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
    • ChrisALiles's avatar
      cmd/compile: use proved bounds to remove signed division fix-ups · 13d5cd78
      ChrisALiles authored
      prove is able to find 94 occurrences in std cmd where a divisor
      can't have the value -1. The change removes
      the extraneous fix-up code for these cases.
      
      Fixes #25239
      
      Change-Id: Ic184de971f47cc57c702eb72805b8e291c14035d
      Reviewed-on: https://go-review.googlesource.com/c/130215
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      13d5cd78
    • Ian Lance Taylor's avatar
      cmd/dist: copy cmd/internal/xcoff to bootstrap directory · 47cc59f3
      Ian Lance Taylor authored
      Fixes build.
      
      Change-Id: Id3d78ae9e4669371b4ebf29f69217d0809ffb829
      Reviewed-on: https://go-review.googlesource.com/c/143917
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      47cc59f3
    • Alexandre Maari's avatar
      text/template: removed truncation of context in error message · 0cc4c297
      Alexandre Maari authored
      Fixes #27930
      
      Change-Id: I31ad3fdb74d74152268c59ae4c651cc4c8c1716d
      Reviewed-on: https://go-review.googlesource.com/c/142217Reviewed-by: 's avatarRob Pike <r@golang.org>
      Run-TryBot: Rob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0cc4c297
  2. 22 Oct, 2018 14 commits
    • Ian Lance Taylor's avatar
      cmd/go: update private copy of goosList · cc558fed
      Ian Lance Taylor authored
      This copies the change to goosList in CL 138115 to the private copy in
      cmd/go.
      
      The change introducing the private copy was apparently not made with
      Gerrit, but can be seen at
      https://github.com/golang/vgo/commit/08359e782fb601567c57f56beb540841c2416d92.
      That change says "This is adapted from code in go/build and the rest
      of cmd/go. At some point, we should deduplicate them."
      
      Doing another copy for now, rather than something more complex
      involving cmd/dist, pending that deduplication.
      
      Change-Id: I9b6e1f63a3a68c002b60a9a97aa367c5cc7801c9
      Reviewed-on: https://go-review.googlesource.com/c/143759
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      cc558fed
    • Clément Chigot's avatar
      cmd/cgo: add AIX operating system · ce4ef9ad
      Clément Chigot authored
      This commit adds AIX operating system to cmd/cgo package for ppc64
      architecture.
      
      It doesn't fully adapt cgo tool to AIX. But it allows to use
      go tool cgo -godefs which is really usefull for others packages.
      
      Update: #25893
      
      Change-Id: I38e289cf0122d143ba100986d08229b51b03ddfc
      Reviewed-on: https://go-review.googlesource.com/c/138731
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      ce4ef9ad
    • Rob Pike's avatar
      encoding/gob: delete out of memory test · 956af978
      Rob Pike authored
      Now that the library allows much larger data, it can kill
      machines with less memory.
      
      Fixes #28321
      
      Change-Id: I98e1a5fdf812fd75adfb22bf01542423de405fe2
      Reviewed-on: https://go-review.googlesource.com/c/143817Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarDmitri Shuralyov <dmitshur@golang.org>
      956af978
    • Robert Griesemer's avatar
      go/types: report error for invalid use of ... in parameter lists · 553237aa
      Robert Griesemer authored
      The parser accepts ...T types in parameter lists whereever a type
      is permitted; this matches the syntax and allows for more tolerant
      parsing and error recovery.
      
      go/types on the other hand assumed that the parser would report
      those errors and assumed any outstanding such errors would be due
      to otherwise manipulated ASTs leading to invalid ASTs.
      
      go/types further assumed that a parameter list (a, b, c ...int)
      was permitted (a couple of tests used such parameter lists).
      
      With this CL, go/types now correctly refuses invalid parameter lists.
      
      Fixes #28281.
      
      Change-Id: Ib788255f7b7819fdb972c7801bb153a53ce2ddf7
      Reviewed-on: https://go-review.googlesource.com/c/143857
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      553237aa
    • Clément Chigot's avatar
      cmd/go: add AIX operating system · 9258c3f9
      Clément Chigot authored
      This commit adds AIX operating system to cmd/go package for ppc64
      architecture.
      
      Updates: #25893
      
      Change-Id: I2605d10a7833fa2eb197f6db4a52d5919cf93614
      Reviewed-on: https://go-review.googlesource.com/c/138732
      Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9258c3f9
    • Genevieve Luyt's avatar
      doc: use the new log functions · b917bdd3
      Genevieve Luyt authored
      The log interface was changed in https://golang.org/cl/2419042.
      
      Change-Id: I3eaddd8a5cfcae961db16555fb1b0ce6770b6334
      Reviewed-on: https://go-review.googlesource.com/c/143777Reviewed-by: 's avatarRob Pike <r@golang.org>
      b917bdd3
    • Robert Griesemer's avatar
      cmd/compile: s/eqtype/types.Identical/ (fix build) · ddf83eeb
      Robert Griesemer authored
      TBR=khr
      
      Change-Id: Ia5a08f1acd9f37c466829754990733330264f546
      Reviewed-on: https://go-review.googlesource.com/c/143758Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      ddf83eeb
    • Robert Griesemer's avatar
      go/types: copy embedded methods unchanged when completing interfaces · e9b39417
      Robert Griesemer authored
      The existing code adjusted the receivers of embedded interface methods
      to match the embedding interface type. That required cloning (shallow
      copying) the embedded methods and destroyed their object identity in
      the process. Don't do this anymore. The consequence to clients is that
      they might see different methods of an interface having different
      receiver types; they are always the type of the interface that explicitly
      declared the method (which is what one usually would want, anyway).
      
      Fixes #28282.
      
      Change-Id: I2e6f1497f46affdf7510547a64601de3787367db
      Reviewed-on: https://go-review.googlesource.com/c/143757Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      e9b39417
    • Alessandro Arzilli's avatar
      cmd/compile,cmd/link: remove statictmp variables from symbol table. · ffbf479a
      Alessandro Arzilli authored
      Removes statictmp variables from debug_info and the final symbol table.
      
      Fixes #27800
      
      Change-Id: I302c59a04bc3f460e7085fef241f937bbf30421d
      Reviewed-on: https://go-review.googlesource.com/c/142577
      Run-TryBot: Alessandro Arzilli <alessandro.arzilli@gmail.com>
      Run-TryBot: Heschi Kreinick <heschi@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarHeschi Kreinick <heschi@google.com>
      ffbf479a
    • Keith Randall's avatar
      cmd/compile: in append(f()), type convert appended items · dca769dc
      Keith Randall authored
      The second and subsequent return values from f() need to be
      converted to the element type of the first return value from f()
      (which must be a slice).
      
      Fixes #22327
      
      Change-Id: I5c0a424812c82c1b95b6d124c5626cfc4408bdb6
      Reviewed-on: https://go-review.googlesource.com/c/142718Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      dca769dc
    • fanzha02's avatar
      cmd/internal/obj/arm64: reclassify 32-bit/64-bit constants · 86ce1cb0
      fanzha02 authored
      Current assembler saves constants in Offset which type is int64,
      causing 32-bit constants have a incorrect class. This CL reclassifies
      constants when opcodes are 32-bit variant, like MOVW, ANDW and
      ADDW, etc. Besides, this CL encodes some constants of ADDCON class
      as MOVs instructions.
      
      This CL changes the assembler behavior as follows.
      
      1. go assembler ADDW $MOVCON, Rn, Rd
         previous version: MOVD $MOVCON, Rtmp; ADDW Rtmp, Rn, Rd
         current version: MOVW $MOVCON, Rtmp; ADDW Rtmp, Rn, Rd
      
      2. go assembly MOVW $0xaaaaffff, R1
         previous version: treats $0xaaaaffff as VCON, encodes it as MOVW 0x994, R1 (loads it from pool).
         current version: treats $0xaaaaffff as MOVCON, and encodes it into MOVW instructions.
      
      3. go assembly MOVD $0x210000, R1
         previous version: treats $0x210000 as ADDCON, loads it from pool
         current version: treats $0x210000 as MOVCON, and encodes it into MOVD instructions.
      
      Add the test cases.
      
      1. Binary size before/after.
      binary                          size change
      pkg/linux_arm64                 -1.534KB
      pkg/tool/linux_arm64            -0.718KB
      go                              -0.32KB
      gofmt                           no change
      
      2. go1 benchmark result.
      name                     old time/op    new time/op    delta
      BinaryTree17-8              6.26s ± 1%     6.28s ± 1%     ~     (p=0.105 n=10+10)
      Fannkuch11-8                5.40s ± 0%     5.39s ± 0%   -0.29%  (p=0.028 n=9+10)
      FmtFprintfEmpty-8          94.5ns ± 0%    95.0ns ± 0%   +0.51%  (p=0.000 n=10+9)
      FmtFprintfString-8          163ns ± 1%     159ns ± 1%   -2.06%  (p=0.000 n=10+9)
      FmtFprintfInt-8             200ns ± 1%     196ns ± 1%   -1.99%  (p=0.000 n=9+10)
      FmtFprintfIntInt-8          292ns ± 3%     284ns ± 1%   -2.87%  (p=0.001 n=10+9)
      FmtFprintfPrefixedInt-8     422ns ± 1%     420ns ± 1%   -0.59%  (p=0.015 n=10+10)
      FmtFprintfFloat-8           458ns ± 0%     463ns ± 1%   +1.19%  (p=0.000 n=9+10)
      FmtManyArgs-8              1.37µs ± 1%    1.35µs ± 1%   -1.85%  (p=0.000 n=10+10)
      GobDecode-8                15.5ms ± 1%    15.3ms ± 1%   -1.82%  (p=0.000 n=10+10)
      GobEncode-8                11.7ms ± 5%    11.7ms ± 2%     ~     (p=0.549 n=10+9)
      Gzip-8                      622ms ± 0%     624ms ± 0%   +0.23%  (p=0.000 n=10+9)
      Gunzip-8                   73.6ms ± 0%    73.8ms ± 1%     ~     (p=0.077 n=9+9)
      HTTPClientServer-8          115µs ± 1%     115µs ± 1%     ~     (p=0.796 n=10+10)
      JSONEncode-8               31.1ms ± 2%    28.7ms ± 1%   -7.98%  (p=0.000 n=10+9)
      JSONDecode-8                145ms ± 0%     145ms ± 1%     ~     (p=0.447 n=9+10)
      Mandelbrot200-8            9.67ms ± 0%    9.60ms ± 0%   -0.76%  (p=0.000 n=9+9)
      GoParse-8                  7.56ms ± 1%    7.58ms ± 0%   +0.21%  (p=0.035 n=10+9)
      RegexpMatchEasy0_32-8       208ns ±10%     222ns ± 0%     ~     (p=0.531 n=10+6)
      RegexpMatchEasy0_1K-8       699ns ± 4%     694ns ± 4%     ~     (p=0.868 n=10+10)
      RegexpMatchEasy1_32-8       186ns ± 8%     190ns ±12%     ~     (p=0.955 n=10+10)
      RegexpMatchEasy1_1K-8      1.13µs ± 1%    1.05µs ± 2%   -6.64%  (p=0.000 n=10+10)
      RegexpMatchMedium_32-8      316ns ± 7%     288ns ± 1%   -8.68%  (p=0.000 n=10+7)
      RegexpMatchMedium_1K-8     90.2µs ± 0%    85.5µs ± 2%   -5.19%  (p=0.000 n=10+10)
      RegexpMatchHard_32-8       5.53µs ± 0%    3.90µs ± 0%  -29.52%  (p=0.000 n=10+10)
      RegexpMatchHard_1K-8        119µs ± 0%     124µs ± 0%   +4.29%  (p=0.000 n=9+10)
      Revcomp-8                   1.07s ± 0%     1.07s ± 0%     ~     (p=0.094 n=9+9)
      Template-8                  162ms ± 1%     160ms ± 2%     ~     (p=0.089 n=10+10)
      TimeParse-8                 756ns ± 2%     763ns ± 1%     ~     (p=0.158 n=10+10)
      TimeFormat-8                758ns ± 1%     746ns ± 1%   -1.52%  (p=0.000 n=10+10)
      
      name                     old speed      new speed      delta
      GobDecode-8              49.4MB/s ± 1%  50.3MB/s ± 1%   +1.84%  (p=0.000 n=10+10)
      GobEncode-8              65.6MB/s ± 5%  65.4MB/s ± 2%     ~     (p=0.549 n=10+9)
      Gzip-8                   31.2MB/s ± 0%  31.1MB/s ± 0%   -0.24%  (p=0.000 n=9+9)
      Gunzip-8                  264MB/s ± 0%   263MB/s ± 1%     ~     (p=0.073 n=9+9)
      JSONEncode-8             62.3MB/s ± 2%  67.7MB/s ± 1%   +8.67%  (p=0.000 n=10+9)
      JSONDecode-8             13.4MB/s ± 0%  13.4MB/s ± 1%     ~     (p=0.508 n=9+10)
      GoParse-8                7.66MB/s ± 1%  7.64MB/s ± 0%   -0.23%  (p=0.049 n=10+9)
      RegexpMatchEasy0_32-8     154MB/s ± 9%   143MB/s ± 3%     ~     (p=0.303 n=10+7)
      RegexpMatchEasy0_1K-8    1.46GB/s ± 4%  1.47GB/s ± 4%     ~     (p=0.912 n=10+10)
      RegexpMatchEasy1_32-8     172MB/s ± 9%   170MB/s ±12%     ~     (p=0.971 n=10+10)
      RegexpMatchEasy1_1K-8     908MB/s ± 1%   972MB/s ± 2%   +7.12%  (p=0.000 n=10+10)
      RegexpMatchMedium_32-8   3.17MB/s ± 7%  3.46MB/s ± 1%   +9.14%  (p=0.000 n=10+7)
      RegexpMatchMedium_1K-8   11.3MB/s ± 0%  12.0MB/s ± 2%   +5.51%  (p=0.000 n=10+10)
      RegexpMatchHard_32-8     5.78MB/s ± 0%  8.21MB/s ± 0%  +41.93%  (p=0.000 n=9+10)
      RegexpMatchHard_1K-8     8.62MB/s ± 0%  8.27MB/s ± 0%   -4.11%  (p=0.000 n=9+10)
      Revcomp-8                 237MB/s ± 0%   237MB/s ± 0%     ~     (p=0.081 n=9+9)
      Template-8               12.0MB/s ± 1%  12.1MB/s ± 2%     ~     (p=0.072 n=10+10)
      
      Change-Id: I080801f520366b42d5f9699954bd33106976a81b
      Reviewed-on: https://go-review.googlesource.com/c/120661
      Run-TryBot: Ben Shi <powerman1st@163.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      86ce1cb0
    • Carlos Eduardo Seo's avatar
      cmd/compile: intrinsify math/big.mulWW on ppc64x · 1e8ecefc
      Carlos Eduardo Seo authored
      This change implements mulWW as an intrinsic for ppc64x. Performance
      numbers below:
      
      name                            old time/op    new time/op    delta
      QuoRem                            4.54µs ±45%    3.22µs ± 0%  -29.22%  (p=0.029 n=4+4)
      ModSqrt225_Tonelli                 765µs ± 3%     757µs ± 0%   -1.02%  (p=0.029 n=4+4)
      ModSqrt225_3Mod4                   231µs ± 0%     231µs ± 0%   -0.10%  (p=0.029 n=4+4)
      ModSqrt231_Tonelli                 789µs ± 0%     788µs ± 0%   -0.14%  (p=0.029 n=4+4)
      ModSqrt231_5Mod8                   267µs ± 0%     267µs ± 0%   -0.13%  (p=0.029 n=4+4)
      Sqrt                              49.5µs ±17%    45.3µs ± 0%   -8.48%  (p=0.029 n=4+4)
      IntSqr/1                          32.2ns ±22%    24.2ns ± 0%  -24.79%  (p=0.029 n=4+4)
      IntSqr/2                          60.6ns ± 0%    60.9ns ± 0%   +0.50%  (p=0.029 n=4+4)
      IntSqr/3                          82.8ns ± 0%    83.3ns ± 0%   +0.51%  (p=0.029 n=4+4)
      IntSqr/5                           122ns ± 0%     121ns ± 0%   -1.22%  (p=0.029 n=4+4)
      IntSqr/8                           227ns ± 0%     226ns ± 0%   -0.44%  (p=0.029 n=4+4)
      IntSqr/10                          300ns ± 0%     298ns ± 0%   -0.67%  (p=0.029 n=4+4)
      IntSqr/20                         1.02µs ± 0%    0.89µs ± 0%  -13.08%  (p=0.029 n=4+4)
      IntSqr/30                         1.73µs ± 0%    1.51µs ± 0%  -12.73%  (p=0.029 n=4+4)
      IntSqr/50                         3.69µs ± 1%    3.29µs ± 0%  -10.70%  (p=0.029 n=4+4)
      IntSqr/80                         7.64µs ± 0%    7.04µs ± 0%   -7.91%  (p=0.029 n=4+4)
      IntSqr/100                        11.1µs ± 0%    10.3µs ± 0%   -7.04%  (p=0.029 n=4+4)
      IntSqr/200                        37.9µs ± 0%    36.4µs ± 0%   -4.13%  (p=0.029 n=4+4)
      IntSqr/300                        69.4µs ± 0%    66.0µs ± 0%   -4.94%  (p=0.029 n=4+4)
      IntSqr/500                         174µs ± 0%     168µs ± 0%   -3.10%  (p=0.029 n=4+4)
      IntSqr/800                         347µs ± 0%     333µs ± 0%   -4.06%  (p=0.029 n=4+4)
      IntSqr/1000                        524µs ± 0%     507µs ± 0%   -3.21%  (p=0.029 n=4+4)
      
      Change-Id: If067452f5b6579ad3a2e9daa76a7ffe6fceae1bb
      Reviewed-on: https://go-review.googlesource.com/c/143217
      Run-TryBot: Giovanni Bajo <rasky@develer.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarGiovanni Bajo <rasky@develer.com>
      1e8ecefc
    • Rob Pike's avatar
      encoding/gob: increase "tooBig" from 1GB to 8GB on 64-bit machines · 3bf9b77c
      Rob Pike authored
      A little shift magic makes it easy to adjust the maximum buffer
      size on machines with larger integers.
      
      Fixes #27635
      
      Change-Id: I1f26b07a363fbb9730df2377052475fa88bbb781
      Reviewed-on: https://go-review.googlesource.com/c/143678
      Run-TryBot: Rob Pike <r@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      3bf9b77c
    • Rob Pike's avatar
      doc: tweak example in Effective Go · 7c2718b1
      Rob Pike authored
      A prior attempt at addressing the issue got bogged down in an
      endless conversation around the subtleties of Read semantics.
      Let's not go there.
      
      Instead, we put the issue to bed, perhaps not in perfect comfort
      but well enough, by moving a line of the example so that even
      if there is a "benign" error as the issue suggests, the loop
      terminates with n and err correctly set.
      
      Fixes #27818
      
      Change-Id: I4a32d56c9e782f17578565d90b22ce531e3d8667
      Reviewed-on: https://go-review.googlesource.com/c/143677Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      7c2718b1
  3. 21 Oct, 2018 1 commit
  4. 20 Oct, 2018 2 commits