1. 03 Nov, 2017 17 commits
    • Keith Randall's avatar
      bytes: add more page boundary tests · 3043c355
      Keith Randall authored
      Make sure Index and IndexByte don't read past the queried byte slice.
      
      Hopefully will be helpful for CL 33597.
      
      Also remove the code which maps/unmaps the Go heap.
      Much safer to play with protection bits off-heap.
      
      Change-Id: I50d73e879b2d83285e1bc7c3e810efe4c245fe75
      Reviewed-on: https://go-review.googlesource.com/75890Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      3043c355
    • Lynn Boger's avatar
      cmd/compile: add rules to improve consecutive byte loads and stores on ppc64le · bb1fd3b5
      Lynn Boger authored
      This adds new rules to recognize consecutive byte loads and
      stores and lowers them to loads and stores such as lhz, lwz, ld,
      sth, stw, std. This change only covers the little endian cases
      on little endian machines, such as is found in encoding/binary
      UintXX or PutUintXX for little endian. Big endian will be done
      later.
      
      Updates were also made to binary_test.go to allow the benchmark
      for Uint and PutUint to actually use those functions because
      the way they were written, those functions were being
      optimized out.
      
      Testcases were also added to cmd/compile/internal/gc/asm_test.go.
      
      Updates #22496
      
      The following improvement can be found in golang.org/x/crypto
      
      poly1305:
      
      Benchmark64-16              142           114           -19.72%
      Benchmark1K-16              1717          1424          -17.06%
      Benchmark64Unaligned-16     142           113           -20.42%
      Benchmark1KUnaligned-16     1721          1428          -17.02%
      
      chacha20poly1305:
      
      BenchmarkChacha20Poly1305Open_64-16     1012       885   -12.55%
      BenchmarkChacha20Poly1305Seal_64-16     971        836   -13.90%
      BenchmarkChacha20Poly1305Open_1350-16   11113      9539  -14.16%
      BenchmarkChacha20Poly1305Seal_1350-16   11013      9392  -14.72%
      BenchmarkChacha20Poly1305Open_8K-16     61074      53431 -12.51%
      BenchmarkChacha20Poly1305Seal_8K-16     61214      54806 -10.47%
      
      Other improvements of around 10% found in crypto/tls.
      
      Results after updating encoding/binary/binary_test.go:
      
      BenchmarkLittleEndianPutUint64-16     1.87      0.93      -50.27%
      BenchmarkLittleEndianPutUint32-16     1.19      0.93      -21.85%
      BenchmarkLittleEndianPutUint16-16     1.16      1.03      -11.21%
      
      Change-Id: I7bbe2fbcbd11362d58662fecd907a0c07e6ca2fb
      Reviewed-on: https://go-review.googlesource.com/74410
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMichael Munday <mike.munday@ibm.com>
      bb1fd3b5
    • Hana (Hyang-Ah) Kim's avatar
      runtime/pprof: use new profile format for block/mutex profiles · f99d14e0
      Hana (Hyang-Ah) Kim authored
      Unlike the legacy text format that outputs the count and the number of
      cycles, the pprof tool expects contention profiles to include the count
      and the delay time measured in nanoseconds. printCountCycleProfile
      performs the conversion from cycles to nanoseconds.
      (See parseContention function in
       cmd/vendor/github.com/google/pprof/profile/legacy_profile.go)
      
      Fixes #21474
      
      Change-Id: I8e8fb6ea803822d7eaaf9ecf1df3e236ad225a7b
      Reviewed-on: https://go-review.googlesource.com/64410
      Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      f99d14e0
    • Russ Cox's avatar
      cmd/go: make test binary builds reproducible · 14f2bfd3
      Russ Cox authored
      The name of the temporary directory containing _testmain.go
      was leaking into the binary.
      
      Found with GODEBUG=gocacheverify=1 go test std.
      
      Change-Id: I5b35f049b564f3eb65c6a791ee785d15255c7885
      Reviewed-on: https://go-review.googlesource.com/75630
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      14f2bfd3
    • Russ Cox's avatar
      cmd/go: prefer $GOTMPDIR over operating system tmp dir for temp files · efb1a752
      Russ Cox authored
      We build and run executables in the work directory,
      and some users have $TMPDIR set noexec.
      
      Fixes #8451.
      
      Change-Id: I76bf2ddec84e9cb37ad9a6feb53a1a84b47aa263
      Reviewed-on: https://go-review.googlesource.com/75475
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      efb1a752
    • Russ Cox's avatar
      cmd/go: do not print "go install" in errors from other commands · 2ff3e9c8
      Russ Cox authored
      Fixes #20251.
      
      Change-Id: I312a9534248668c8b3b4cf979591ed1a49e509e1
      Reviewed-on: https://go-review.googlesource.com/75474
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      2ff3e9c8
    • David du Colombier's avatar
      cmd/vendor/github.com/google/pprof: refresh from upstream · f2503e61
      David du Colombier authored
      Updating to commit 79c4198ef7bd1069f8f56501fc05f0f1d2c33d8a
      from github.com/google/pprof
      
      Fixes #22561.
      
      Change-Id: Ib92fd443ccc067aef7214e59f594db7f2521535b
      Reviewed-on: https://go-review.googlesource.com/75870
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      f2503e61
    • Russ Cox's avatar
      cmd/go: cache built packages · de4b6ebf
      Russ Cox authored
      This CL adds caching of built package files in $GOCACHE, so that
      a second build with a particular configuration will be able to reuse
      the work done in the first build of that configuration, even if the
      first build was only "go build" and not "go install", or even if there
      was an intervening "go install" that wiped out the installed copy of
      the first build.
      
      The benchjuju benchmark runs go build on a specific revision of jujud 10 times.
      
      Before this CL:
      
      	102.72u 15.29s 21.98r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	105.99u 15.55s 22.71r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	106.49u 15.70s 22.82r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	107.09u 15.72s 22.94r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	108.19u 15.85s 22.78r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	108.92u 16.00s 23.02r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	109.25u 15.82s 23.05r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	109.57u 15.96s 23.11r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	109.86u 15.97s 23.17r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	110.50u 16.05s 23.37r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      
      After this CL:
      
      	113.66u 17.00s 24.17r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.85u 0.68s 3.49r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.98u 0.72s 3.63r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	4.07u 0.72s 3.57r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.98u 0.70s 3.43r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	4.58u 0.70s 3.58r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.90u 0.70s 3.46r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.85u 0.71s 3.52r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.70u 0.69s 3.64r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      	3.79u 0.68s 3.41r 	 go build -o /tmp/jujud github.com/juju/juju/cmd/jujud ...
      
      This CL reduces the overall all.bash time from 4m22s to 4m17s on my laptop.
      Not much faster, but also not slower.
      
      See also #4719, #20137, #20372.
      
      Change-Id: I101d5363f8c55bf4825167a5f6954862739bf000
      Reviewed-on: https://go-review.googlesource.com/75473
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      de4b6ebf
    • Russ Cox's avatar
      cmd/go: disable implicit $GOCACHE when clearing $HOME in test · 5e35954a
      Russ Cox authored
      Change-Id: Ie9967c8aaf7cf2e90a442937df21b1218f7ae26f
      Reviewed-on: https://go-review.googlesource.com/75472
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      5e35954a
    • Russ Cox's avatar
      cmd/go: add README and access log to cache directory · 3392c071
      Russ Cox authored
      The README is there to help people who stumble across the directory.
      
      The access log is there to help us evaluate potential algorithms for
      managing and pruning cache directories. For now the management
      is manual: users have to run "go clean -cache" if they want the cache
      to get smaller.
      
      As a low-resolution version of the access log, we also update the
      mtime on each cache file as they are used by the go command.
      A simple refinement of go clean -cache would be to delete
      (perhaps automatically) cache files that have not been used in more
      than one day, or some suitable time period.
      
      Change-Id: I1dd6309952942169d71256c4b50b723583d21fca
      Reviewed-on: https://go-review.googlesource.com/75471
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      3392c071
    • Russ Cox's avatar
      cmd/go: add "go clean -cache" · a2b44023
      Russ Cox authored
      Give users a way to remove their caches.
      
      Change-Id: I0b041aa54b318e98605675f168fed54ab9b6fd14
      Reviewed-on: https://go-review.googlesource.com/75470
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      a2b44023
    • Gabriel Aszalos's avatar
      runtime: clarify GOROOT return value in documentation · d6ebbef8
      Gabriel Aszalos authored
      The current GOROOT documentation could indicate that changing the
      environment variable at runtime would affect the return value of
      GOROOT. This is false as the returned value is the one used for the
      build. This CL aims to clarify the confusion.
      
      Fixes #22302
      
      Change-Id: Ib68c30567ac864f152d2da31f001a98531fc9757
      Reviewed-on: https://go-review.googlesource.com/75751Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      d6ebbef8
    • isharipo's avatar
      cmd/internal/obj/x86: add most missing AVX1/2 insts · 39de58ba
      isharipo authored
      This change applies x86avxgen output.
      https://go-review.googlesource.com/c/arch/+/66972
      As an effect, many new AVX instructions are now available.
      
      One of the side-effects of this patch is
      sorted AXXX (A-enum) constants.
      
      Some AVX1/2 instructions still not added due to:
      1. x86.csv V0.2 does not list them;
      2. partially because of (1), test suite does not contain tests for
         these instructions.
      
      Change-Id: I90430d773974ca5c995d6950d90e2c62ec88ef47
      Reviewed-on: https://go-review.googlesource.com/75490
      Run-TryBot: Iskander Sharipov <iskander.sharipov@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      39de58ba
    • Ben Shi's avatar
      cmd/internal/obj/arm: add BFC/BFI to arm's assembler · 1ac88469
      Ben Shi authored
      BFC (Bit Field Clear) and BFI (Bit Field Insert) were
      introduced in ARMv6T2, and the compiler can use them
      to do further optimization.
      
      Change-Id: I5a3fbcd2c2400c9bf4b939da6366c854c744c27f
      Reviewed-on: https://go-review.googlesource.com/72891
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      1ac88469
    • Alberto Donizetti's avatar
      cmd/dist: fix bad LC_TIME assumption in 'date' invocation · 6de53832
      Alberto Donizetti authored
      With GOBUILDTIMELOGFILE set, make.bash logs the starting time using
      
        $ echo $(date) > file
      
      and expects to be able to read the date back with
      
        time.Parse(time.UnixDate)
      
      but in some locales the default date format is not the same as
      time.UnixDate; for example on LC_TIME="en_GB.UTF-8"
      
        $ locale date_fmt
        %a %e %b %H:%M:%S %Z %Y
      
      Fix this by setting LC_TIME=C before the date command invocation.
      
      Fixes #22541
      
      Change-Id: I59bf944bb868e2acdd816c7e35134780cdbfc6a6
      Reviewed-on: https://go-review.googlesource.com/75370
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      6de53832
    • Zhengyu He's avatar
      runtime: fix GNU/Linux getproccount if sched_getaffinity does not return a multiple of 8 · eaf60360
      Zhengyu He authored
      The current code can potentially return a smaller processor count on a
      linux kernel when its cpumask_size (controlled by both kernel config and
      boot parameter) is not a multiple of the pointer size, because
      r/sys.PtrSize will be rounded down. Since sched_getaffinity returns the
      size in bytes, we can just allocate the buf as a byte array to avoid the
      extra calculation with the pointer size and roundups.
      
      Change-Id: I0c21046012b88d8a56b5dd3dde1d158d94f8eea9
      Reviewed-on: https://go-review.googlesource.com/75591
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      eaf60360
    • Alex Brainman's avatar
      cmd/link: restore windows stack commit size back to 4KB · 923299a6
      Alex Brainman authored
      CL 49331 increased windows stack commit size to 2MB by mistake.
      Revert that change.
      
      Fixes #22439
      
      Change-Id: I919e549e87da326f4ba45890b4d32f6d7046186f
      Reviewed-on: https://go-review.googlesource.com/74490
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      923299a6
  2. 02 Nov, 2017 23 commits