1. 08 Nov, 2018 12 commits
  2. 07 Nov, 2018 6 commits
    • diplozoon's avatar
      cmd/go: add /v2 to go.mod require example · 0b071e40
      diplozoon authored
      I added /v2 to go.mod require example
      
      Fixes #28374
      
      Change-Id: I74cca374838d106eb79acb9189a02fe9443962c0
      Reviewed-on: https://go-review.googlesource.com/c/144917Reviewed-by: 's avatarBryan C. Mills <bcmills@google.com>
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0b071e40
    • Keith Randall's avatar
      syscall: implement syscalls on Darwin using libSystem · a3b01440
      Keith Randall authored
      There are still some references to the bare Syscall functions
      in the stdlib. I will root those out in a following CL.
      (This CL is big enough as it is.)
      Most are in vendor directories:
      
      cmd/vendor/golang.org/x/sys/unix/
      vendor/golang_org/x/net/route/syscall.go
      syscall/bpf_bsd.go
      syscall/exec_unix.go
      syscall/flock.go
      
      Update #17490
      
      Change-Id: I69ab707811530c26b652b291cadee92f5bf5c1a4
      Reviewed-on: https://go-review.googlesource.com/c/141639
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarElias Naur <elias.naur@gmail.com>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      a3b01440
    • Robert Griesemer's avatar
      go/types: avoid certain problems with recursive alias type declarations · 0fcd4050
      Robert Griesemer authored
      It is possible to create certain recursive type declarations involving
      alias types which cause the type-checker to produce an (invalid) type
      for the alias because it is not yet available. By type-checking alias
      declarations in a 2nd phase, the problem is mitigated a bit since it
      requires more convoluted alias declarations for the problem to appear.
      
      Also re-enable testing of fixedbugs/issue27232.go again (which was the
      original cause for this change).
      
      Updates #28576.
      
      Change-Id: If6f9656a95262e6575b01c4a003094d41551564b
      Reviewed-on: https://go-review.googlesource.com/c/147597Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      0fcd4050
    • fanzha02's avatar
      cmd/internal/obj/arm64: encode large constants into MOVZ/MOVN and MOVK instructions · 644ddaa8
      fanzha02 authored
      Current assembler gets large constants from constant pool, this CL
      gets rid of the pool by using MOVZ/MOVN and MOVK to load large
      constants.
      
      This CL changes the assembler behavior as follows.
      
      1. go assembly  1, MOVD $0x1111222233334444, R1
                      2, MOVD $0x1111ffff1111ffff, R1
         previous version: MOVD 0x9a4, R1 (loads constant from pool).
         optimized version: 1, MOVD $0x4444, R1; MOVK $(0x3333<<16), R1; MOVK $(0x2222<<32), R1;
         MOVK $(0x1111<<48), R1. 2, MOVN $(0xeeee<<16), R1; MOVK $(0x1111<<48), R1.
      
      Add test cases, and below are binary size comparison and bechmark results.
      
      1. Binary size before/after
      binary                 size change
      pkg/linux_arm64        +25.4KB
      pkg/tool/linux_arm64   -2.9KB
      go                     -2KB
      gofmt                  no change
      
      2. compiler benchmark.
      name       old time/op       new time/op       delta
      Template         574ms ±21%        577ms ±14%     ~     (p=0.853 n=10+10)
      Unicode          327ms ±29%        353ms ±23%     ~     (p=0.360 n=10+8)
      GoTypes          1.97s ± 8%        2.04s ±11%     ~     (p=0.143 n=10+10)
      Compiler         9.13s ± 9%        9.25s ± 8%     ~     (p=0.684 n=10+10)
      SSA              29.2s ± 5%        27.0s ± 4%   -7.40%  (p=0.000 n=10+10)
      Flate            402ms ±40%        308ms ± 6%  -23.29%  (p=0.004 n=10+10)
      GoParser         470ms ±26%        382ms ±10%  -18.82%  (p=0.000 n=9+10)
      Reflect          1.36s ±16%        1.17s ± 7%  -13.92%  (p=0.001 n=9+10)
      Tar              561ms ±19%        466ms ±15%  -17.08%  (p=0.000 n=9+10)
      XML              745ms ±20%        679ms ±20%     ~     (p=0.123 n=10+10)
      StdCmd           35.5s ± 6%        37.2s ± 3%   +4.81%  (p=0.001 n=9+8)
      
      name       old user-time/op  new user-time/op  delta
      Template         625ms ±14%        660ms ±18%     ~     (p=0.343 n=10+10)
      Unicode          355ms ±10%        373ms ±20%     ~     (p=0.346 n=9+10)
      GoTypes          2.39s ± 8%        2.37s ± 5%     ~     (p=0.897 n=10+10)
      Compiler         11.1s ± 4%        11.4s ± 2%   +2.63%  (p=0.010 n=10+9)
      SSA              35.4s ± 3%        34.9s ± 2%     ~     (p=0.113 n=10+9)
      Flate            402ms ±13%        371ms ±30%     ~     (p=0.089 n=10+9)
      GoParser         513ms ± 8%        489ms ±24%   -4.76%  (p=0.039 n=9+9)
      Reflect          1.52s ±12%        1.41s ± 5%   -7.32%  (p=0.001 n=9+10)
      Tar              607ms ±10%        558ms ± 8%   -7.96%  (p=0.009 n=9+10)
      XML              828ms ±10%        789ms ±12%     ~     (p=0.059 n=10+10)
      
      name       old text-bytes    new text-bytes    delta
      HelloSize        714kB ± 0%        712kB ± 0%   -0.23%  (p=0.000 n=10+10)
      CmdGoSize       8.26MB ± 0%       8.25MB ± 0%   -0.14%  (p=0.000 n=10+10)
      
      name       old data-bytes    new data-bytes    delta
      HelloSize       10.5kB ± 0%       10.5kB ± 0%     ~     (all equal)
      CmdGoSize        258kB ± 0%        258kB ± 0%     ~     (all equal)
      
      name       old bss-bytes     new bss-bytes     delta
      HelloSize        125kB ± 0%        125kB ± 0%     ~     (all equal)
      CmdGoSize        146kB ± 0%        146kB ± 0%     ~     (all equal)
      
      name       old exe-bytes     new exe-bytes     delta
      HelloSize       1.18MB ± 0%       1.18MB ± 0%     ~     (all equal)
      CmdGoSize       11.2MB ± 0%       11.2MB ± 0%   -0.13%  (p=0.000 n=10+10)
      
      3. go1 benckmark.
      name                   old time/op    new time/op    delta
      BinaryTree17              6.60s ±18%     7.36s ±22%    ~     (p=0.222 n=5+5)
      Fannkuch11                4.04s ± 0%     4.05s ± 0%    ~     (p=0.421 n=5+5)
      FmtFprintfEmpty          91.8ns ±14%    91.2ns ± 9%    ~     (p=0.667 n=5+5)
      FmtFprintfString          145ns ± 0%     151ns ± 6%    ~     (p=0.397 n=4+5)
      FmtFprintfInt             169ns ± 0%     176ns ± 5%  +4.14%  (p=0.016 n=4+5)
      FmtFprintfIntInt          229ns ± 2%     243ns ± 6%    ~     (p=0.143 n=5+5)
      FmtFprintfPrefixedInt     343ns ± 0%     350ns ± 3%  +1.92%  (p=0.048 n=5+5)
      FmtFprintfFloat           400ns ± 3%     394ns ± 3%    ~     (p=0.063 n=5+5)
      FmtManyArgs              1.04µs ± 0%    1.05µs ± 0%  +1.62%  (p=0.029 n=4+4)
      GobDecode                13.9ms ± 4%    13.9ms ± 5%    ~     (p=1.000 n=5+5)
      GobEncode                10.6ms ± 4%    10.6ms ± 5%    ~     (p=0.421 n=5+5)
      Gzip                      567ms ± 1%     563ms ± 4%    ~     (p=0.548 n=5+5)
      Gunzip                   60.2ms ± 1%    60.4ms ± 0%    ~     (p=0.056 n=5+5)
      HTTPClientServer          114µs ± 4%     108µs ± 7%    ~     (p=0.095 n=5+5)
      JSONEncode               18.4ms ± 2%    17.8ms ± 2%  -3.06%  (p=0.016 n=5+5)
      JSONDecode                105ms ± 1%     103ms ± 2%    ~     (p=0.056 n=5+5)
      Mandelbrot200            5.48ms ± 0%    5.49ms ± 0%    ~     (p=0.841 n=5+5)
      GoParse                  6.05ms ± 1%    6.05ms ± 2%    ~     (p=1.000 n=5+5)
      RegexpMatchEasy0_32       143ns ± 1%     146ns ± 4%  +2.10%  (p=0.048 n=4+5)
      RegexpMatchEasy0_1K       499ns ± 1%     492ns ± 2%    ~     (p=0.079 n=5+5)
      RegexpMatchEasy1_32       137ns ± 0%     136ns ± 1%  -0.73%  (p=0.016 n=4+5)
      RegexpMatchEasy1_1K       826ns ± 4%     823ns ± 2%    ~     (p=0.841 n=5+5)
      RegexpMatchMedium_32      224ns ± 5%     233ns ± 8%    ~     (p=0.119 n=5+5)
      RegexpMatchMedium_1K     59.6µs ± 0%    59.3µs ± 1%  -0.66%  (p=0.016 n=4+5)
      RegexpMatchHard_32       3.29µs ± 3%    3.26µs ± 1%    ~     (p=0.889 n=5+5)
      RegexpMatchHard_1K       98.8µs ± 2%    99.0µs ± 0%    ~     (p=0.690 n=5+5)
      Revcomp                   1.02s ± 1%     1.01s ± 1%    ~     (p=0.095 n=5+5)
      Template                  135ms ± 5%     131ms ± 1%    ~     (p=0.151 n=5+5)
      TimeParse                 591ns ± 0%     593ns ± 0%  +0.20%  (p=0.048 n=5+5)
      TimeFormat                655ns ± 2%     607ns ± 0%  -7.42%  (p=0.016 n=5+4)
      [Geo mean]               93.5µs         93.8µs       +0.23%
      
      name                   old speed      new speed      delta
      GobDecode              55.1MB/s ± 4%  55.1MB/s ± 4%    ~     (p=1.000 n=5+5)
      GobEncode              72.4MB/s ± 4%  72.3MB/s ± 5%    ~     (p=0.421 n=5+5)
      Gzip                   34.2MB/s ± 1%  34.5MB/s ± 4%    ~     (p=0.548 n=5+5)
      Gunzip                  322MB/s ± 1%   321MB/s ± 0%    ~     (p=0.056 n=5+5)
      JSONEncode              106MB/s ± 2%   109MB/s ± 2%  +3.16%  (p=0.016 n=5+5)
      JSONDecode             18.5MB/s ± 1%  18.8MB/s ± 2%    ~     (p=0.056 n=5+5)
      GoParse                9.57MB/s ± 1%  9.57MB/s ± 2%    ~     (p=0.952 n=5+5)
      RegexpMatchEasy0_32     223MB/s ± 1%   221MB/s ± 0%  -1.10%  (p=0.029 n=4+4)
      RegexpMatchEasy0_1K    2.05GB/s ± 1%  2.08GB/s ± 2%    ~     (p=0.095 n=5+5)
      RegexpMatchEasy1_32     232MB/s ± 0%   234MB/s ± 1%  +0.76%  (p=0.016 n=4+5)
      RegexpMatchEasy1_1K    1.24GB/s ± 4%  1.24GB/s ± 2%    ~     (p=0.841 n=5+5)
      RegexpMatchMedium_32   4.45MB/s ± 5%  4.20MB/s ± 1%  -5.63%  (p=0.000 n=5+4)
      RegexpMatchMedium_1K   17.2MB/s ± 0%  17.3MB/s ± 1%  +0.66%  (p=0.016 n=4+5)
      RegexpMatchHard_32     9.73MB/s ± 3%  9.83MB/s ± 1%    ~     (p=0.889 n=5+5)
      RegexpMatchHard_1K     10.4MB/s ± 2%  10.3MB/s ± 0%    ~     (p=0.635 n=5+5)
      Revcomp                 249MB/s ± 1%   252MB/s ± 1%    ~     (p=0.095 n=5+5)
      Template               14.4MB/s ± 4%  14.8MB/s ± 1%    ~     (p=0.151 n=5+5)
      [Geo mean]             62.1MB/s       62.3MB/s       +0.34%
      
      Fixes #10108
      
      Change-Id: I79038f3c4c2ff874c136053d1a2b1c8a5a9cfac5
      Reviewed-on: https://go-review.googlesource.com/c/118796Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      644ddaa8
    • Elias Naur's avatar
      internal/traceparser: skip test on iOS · ac277d92
      Elias Naur authored
      Change-Id: Ifc9581ba82a13f507c288282b517ebf8a5f93b4e
      Reviewed-on: https://go-review.googlesource.com/c/148058
      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>
      ac277d92
    • Hana (Hyang-Ah) Kim's avatar
      cmd/vendor: update github.com/google/pprof · c0a40e4f
      Hana (Hyang-Ah) Kim authored
      Sync @ fde099a (Oct 26, 2018)
      
      Also update misc/nacl/testzip.proto to include new testdata.
      Change-Id: If41590be9f395a591056e89a417b589c4ba71b1a
      Reviewed-on: https://go-review.googlesource.com/c/147979
      Run-TryBot: Hyang-Ah Hana Kim <hyangah@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      c0a40e4f
  3. 06 Nov, 2018 15 commits
    • Diogo Pinela's avatar
      go/internal/gcimporter: ensure tests pass even if GOROOT is read-only · 1100df58
      Diogo Pinela authored
      This mainly entails writing compiler output files to a temporary
      directory, as well as the corrupted files in TestVersionHandling.
      
      Updates #28387
      
      Change-Id: I6b3619a91fff27011c7d73daa4febd14a6c5c348
      Reviewed-on: https://go-review.googlesource.com/c/146119
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      1100df58
    • David Chase's avatar
      cmd/compile: update TestNexting golden file for Delve · 6fc47916
      David Chase authored
      This change updates the expected output of the delve debugging session
      in the TestNexting internal/ssa test, aligning it with the changes
      introduced in CL 147360 and earlier.
      
      Change-Id: I1cc788d02433624a36f4690f24201569d765e5d3
      Reviewed-on: https://go-review.googlesource.com/c/147998
      Run-TryBot: David Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      6fc47916
    • Alberto Donizetti's avatar
      cmd/compile: update TestNexting golden file · 7cd2a51c
      Alberto Donizetti authored
      This change updates the expected output of the gdb debugging session
      in the TestNexting internal/ssa test, aligning it with the changes
      introduced in CL 147360.
      
      Fixes the longtest builder.
      
      Change-Id: I5b5c22e1cf5e205967ff8359dc6c1485c815428e
      Reviewed-on: https://go-review.googlesource.com/c/147957
      Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Reviewed-by: 's avatarDavid Chase <drchase@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      7cd2a51c
    • Daniel Martí's avatar
      cmd/go: make 'go test -h' print two lines · ca33f33b
      Daniel Martí authored
      Like every other command's -h flag. To achieve this, pass the command's
      usage function to the cmdflag package, since that package is used by
      multiple commands and cannot directly access *base.Command.
      
      This also lets us get rid of testFlag1 and testFlag2, and instead have
      contiguous raw strings for the test and testflag help docs.
      
      Fixes #26999.
      
      Change-Id: I2ebd66835ee61fa83270816a01fa312425224bb3
      Reviewed-on: https://go-review.googlesource.com/c/144558
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAlan Donovan <adonovan@google.com>
      ca33f33b
    • Alberto Donizetti's avatar
      cmd/compile: add new format to known_formats · 9c772522
      Alberto Donizetti authored
      This change fixes a TestFormat failure in fmt_test by adding a
      recently introduced new known format (%q for syntax.Error).
      
      Fixes #28621
      
      Change-Id: I026ec88c334549a957a692c1652a860c57e23dae
      Reviewed-on: https://go-review.googlesource.com/c/147837Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9c772522
    • Cherry Zhang's avatar
      cmd/asm: rename R18 to R18_PLATFORM on ARM64 · 35c05542
      Cherry Zhang authored
      In ARM64 ABI, R18 is the "platform register", the use of which is
      OS specific. The OS could choose to reserve this register. In
      practice, it seems fine to use R18 on Linux but not on darwin (iOS).
      
      Rename R18 to R18_PLATFORM to prevent accidental use. There is no
      R18 usage within the standard library (besides tests, which are
      updated).
      
      Fixes #26110
      
      Change-Id: Icef7b9549e2049db1df307a0180a3c90a12d7a84
      Reviewed-on: https://go-review.googlesource.com/c/147218
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      35c05542
    • Keith Randall's avatar
      cmd/compile: don't deadcode eliminate labels · 95a4f793
      Keith Randall authored
      Dead-code eliminating labels is tricky because there might
      be gotos that can still reach them.
      
      Bug probably introduced with CL 91056
      
      Fixes #28616
      
      Change-Id: I6680465134e3486dcb658896f5172606cc51b104
      Reviewed-on: https://go-review.googlesource.com/c/147817
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarIskander Sharipov <iskander.sharipov@intel.com>
      95a4f793
    • Alan Donovan's avatar
      cmd/vendor: add x/tools/go/analysis/cmd/vet-lite + deps · 8b469209
      Alan Donovan authored
      This change adds the vet-lite command (the future cmd/vet) and all its
      dependencies from x/tools, but not its tests and their dependencies.
      It was created with these commands:
      
        $ (cd $GOPATH/src/golang.org/x/tools && git checkout c76e1ad)
        $ cd GOROOT/src/cmd
        $ govendor add $(go list -deps golang.org/x/tools/go/analysis/cmd/vet-lite | grep golang.org/x/tools)
        $ rm -fr $(find vendor/golang.org/x/tools/ -name testdata)
        $ rm $(find vendor/golang.org/x/tools/ -name \*_test.go)
      
      I feel sure I am holding govendor wrong. Please advise.
      
      A followup CL will make cmd/vet behave like vet-lite, initially just
      for users that opt in, and soon after for all users, at which point
      cmd/vet will be replaced in its entirety by a copy of vet-lite's small
      main.go.
      
      In the meantime, anyone can try the new tool using these commands:
      
       $ go build cmd/vendor/golang.org/x/tools/go/analysis/cmd/vet-lite
       $ export GOVETTOOL=$(which vet-lite)
       $ go vet your/project/...
      
      Change-Id: Iea168111a32ce62f82f9fb706385ca0f368bc869
      Reviewed-on: https://go-review.googlesource.com/c/147444Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      8b469209
    • Lynn Boger's avatar
      runtime: improve performance of memclr, memmove on ppc64x · aa9bcea3
      Lynn Boger authored
      This improves the asm implementations for memmove and memclr on
      ppc64x through use of vsx loads and stores when size is >= 32 bytes.
      For memclr, dcbz is used when the size is >= 512 and aligned to 128.
      
      Memclr/64       13.3ns ± 0%     10.7ns ± 0%   -19.55%  (p=0.000 n=8+7)
      Memclr/96       14.9ns ± 0%     11.4ns ± 0%   -23.49%  (p=0.000 n=8+8)
      Memclr/128      16.3ns ± 0%     12.3ns ± 0%   -24.54%  (p=0.000 n=8+8)
      Memclr/160      17.3ns ± 0%     13.0ns ± 0%   -24.86%  (p=0.000 n=8+8)
      Memclr/256      20.0ns ± 0%     15.3ns ± 0%   -23.62%  (p=0.000 n=8+8)
      Memclr/512      34.2ns ± 0%     10.2ns ± 0%   -70.20%  (p=0.000 n=8+8)
      Memclr/4096      178ns ± 0%       23ns ± 0%   -87.13%  (p=0.000 n=8+8)
      Memclr/65536    2.67µs ± 0%     0.30µs ± 0%   -88.89%  (p=0.000 n=7+8)
      Memclr/1M       43.2µs ± 0%     10.0µs ± 0%   -76.85%  (p=0.000 n=8+8)
      Memclr/4M        173µs ± 0%       40µs ± 0%   -76.88%  (p=0.000 n=8+8)
      Memclr/8M        349µs ± 0%       82µs ± 0%   -76.58%  (p=0.000 n=8+8)
      Memclr/16M       701µs ± 7%      672µs ± 0%    -4.05%  (p=0.040 n=8+7)
      Memclr/64M      2.70ms ± 0%     2.67ms ± 0%    -0.96%  (p=0.000 n=8+7)
      
      Memmove/32      6.59ns ± 0%    5.84ns ± 0%  -11.34%  (p=0.029 n=4+4)
      Memmove/64      7.91ns ± 0%    6.97ns ± 0%  -11.92%  (p=0.029 n=4+4)
      Memmove/128     10.5ns ± 0%     8.8ns ± 0%  -16.24%  (p=0.029 n=4+4)
      Memmove/256     21.0ns ± 0%    12.9ns ± 0%  -38.57%  (p=0.029 n=4+4)
      Memmove/512     28.4ns ± 0%    26.2ns ± 0%   -7.75%  (p=0.029 n=4+4)
      Memmove/1024    48.2ns ± 1%    39.4ns ± 0%  -18.26%  (p=0.029 n=4+4)
      Memmove/2048    85.4ns ± 0%    69.0ns ± 0%  -19.20%  (p=0.029 n=4+4)
      Memmove/4096     159ns ± 0%     128ns ± 0%  -19.50%  (p=0.029 n=4+4)
      
      Change-Id: I8c1adf88790845bf31444a15249456006eb5bf8b
      Reviewed-on: https://go-review.googlesource.com/c/141217
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMichael Munday <mike.munday@ibm.com>
      aa9bcea3
    • Clément Chigot's avatar
      cmd/compile/internal/gc: update cgo_import_dynamic for AIX · e1978a2d
      Clément Chigot authored
      On AIX, cmd/link needs two information in order to generate a dynamic
      import, the library and its object needed. Currently, cmd/link isn't
      able to retrieve this object only with the name of the library.
      Therefore, the library pattern in cgo_import_dynamic must be
      "lib.a/obj.o".
      
      Change-Id: Ib8b8aaa9807c9fa6af46ece4e312d58073ed6ec1
      Reviewed-on: https://go-review.googlesource.com/c/146957
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      e1978a2d
    • Raghavendra Nagaraj's avatar
      reflect: fix StructOf panics from too many methods in embedded fields · 0e4a0b93
      Raghavendra Nagaraj authored
      Previously we panicked if the number of methods present for an embedded
      field was >= 32. This change removes that limit and now StructOf
      dynamically calls itself to create space for the number of methods.
      
      Fixes #25402
      
      Change-Id: I3b1deb119796d25f7e6eee1cdb126327b49a0b5e
      GitHub-Last-Rev: 16da71ad6b23563f3ed26f1914adf41e3d42de69
      GitHub-Pull-Request: golang/go#26865
      Reviewed-on: https://go-review.googlesource.com/c/128479
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      0e4a0b93
    • Mikio Hara's avatar
      net/http: update bundled SOCKS client · 510eea2d
      Mikio Hara authored
      Updates socks_bundle.go to git rev 26e67e7 for:
      - 26e67e7 internal/socks: fix socket descriptor leakage in Dialer.Dial
      
      Change-Id: I9ab27a85504d77f1ca2e97cb005f5e37fd3c3ff4
      Reviewed-on: https://go-review.googlesource.com/c/147717
      Run-TryBot: Mikio Hara <mikioh.public.networking@gmail.com>
      Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      510eea2d
    • Josh Bleecher Snyder's avatar
      cmd/compile: loop in disjoint OpOffPtr check · c1a16b7d
      Josh Bleecher Snyder authored
      We collapse OpOffPtrs during generic rewrites.
      However, we also use disjoint at the same time.
      Instead of waiting for all OpOffPtrs to be collapsed
      before the disjointness rules can kick in,
      burrow through all OpOffPtrs immediately.
      
      Change-Id: I60d0a70a9b4605b1817db7c4aab0c0d789651c90
      Reviewed-on: https://go-review.googlesource.com/c/145206
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: 's avatarMichael Munday <mike.munday@ibm.com>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      c1a16b7d
    • Michael Stapelberg's avatar
      net: update zoneCache on cache misses to cover appearing interfaces · 9fc22d29
      Michael Stapelberg authored
      performance differences are in measurement noise as per benchcmp:
      
      benchmark                            old ns/op     new ns/op     delta
      BenchmarkUDP6LinkLocalUnicast-12     5012          5009          -0.06%
      
      Fixes #28535
      
      Change-Id: Id022e2ed089ce8388a2398e755848ec94e77e653
      Reviewed-on: https://go-review.googlesource.com/c/146941
      Run-TryBot: Mikio Hara <mikioh.public.networking@gmail.com>
      Reviewed-by: 's avatarMikio Hara <mikioh.public.networking@gmail.com>
      9fc22d29
    • Josh Bleecher Snyder's avatar
      cmd/compile: shrink specialized convT2x call sites · 5848b6c9
      Josh Bleecher Snyder authored
      convT2E16 and other specialized type-to-interface routines
      accept a type/itab argument and return a complete interface value.
      However, we know enough in the routine to do without the type.
      And the caller can construct the interface value using the type.
      
      Doing so shrinks the call sites of ten of the specialized convT2x routines.
      It also lets us unify the empty and non-empty interface routines.
      
      Cuts 12k off cmd/go.
      
      name                         old time/op  new time/op  delta
      ConvT2ESmall-8               2.96ns ± 2%  2.34ns ± 4%  -21.01%  (p=0.000 n=175+189)
      ConvT2EUintptr-8             3.00ns ± 3%  2.34ns ± 4%  -22.02%  (p=0.000 n=189+187)
      ConvT2ELarge-8               21.3ns ± 7%  21.5ns ± 5%   +1.02%  (p=0.000 n=200+197)
      ConvT2ISmall-8               2.99ns ± 4%  2.33ns ± 3%  -21.95%  (p=0.000 n=193+184)
      ConvT2IUintptr-8             3.02ns ± 3%  2.33ns ± 3%  -22.82%  (p=0.000 n=198+190)
      ConvT2ILarge-8               21.7ns ± 5%  22.2ns ± 4%   +2.31%  (p=0.000 n=199+198)
      ConvT2Ezero/zero/16-8        2.96ns ± 2%  2.33ns ± 3%  -21.11%  (p=0.000 n=174+187)
      ConvT2Ezero/zero/32-8        2.96ns ± 1%  2.35ns ± 4%  -20.62%  (p=0.000 n=163+193)
      ConvT2Ezero/zero/64-8        2.99ns ± 2%  2.34ns ± 4%  -21.78%  (p=0.000 n=183+188)
      ConvT2Ezero/zero/str-8       3.27ns ± 3%  2.54ns ± 3%  -22.32%  (p=0.000 n=195+192)
      ConvT2Ezero/zero/slice-8     3.46ns ± 4%  2.81ns ± 3%  -18.96%  (p=0.000 n=197+164)
      ConvT2Ezero/zero/big-8       88.4ns ±20%  90.0ns ±20%   +1.84%  (p=0.000 n=196+198)
      ConvT2Ezero/nonzero/16-8     12.6ns ± 3%  12.3ns ± 3%   -2.34%  (p=0.000 n=167+196)
      ConvT2Ezero/nonzero/32-8     12.3ns ± 4%  11.9ns ± 3%   -2.95%  (p=0.000 n=187+193)
      ConvT2Ezero/nonzero/64-8     14.2ns ± 6%  13.8ns ± 5%   -2.94%  (p=0.000 n=198+199)
      ConvT2Ezero/nonzero/str-8    27.2ns ± 5%  26.8ns ± 5%   -1.33%  (p=0.000 n=200+198)
      ConvT2Ezero/nonzero/slice-8  33.3ns ± 8%  33.1ns ± 6%   -0.82%  (p=0.000 n=199+200)
      ConvT2Ezero/nonzero/big-8    88.8ns ±22%  90.2ns ±18%   +1.58%  (p=0.000 n=200+199)
      
      
      Neligible toolspeed impact.
      
      name        old alloc/op      new alloc/op      delta
      Template         35.4MB ± 0%       35.3MB ± 0%  -0.06%  (p=0.008 n=5+5)
      Unicode          29.1MB ± 0%       29.1MB ± 0%    ~     (p=0.310 n=5+5)
      GoTypes           122MB ± 0%        122MB ± 0%  -0.08%  (p=0.008 n=5+5)
      Compiler          514MB ± 0%        513MB ± 0%  -0.02%  (p=0.008 n=5+5)
      SSA              1.94GB ± 0%       1.94GB ± 0%  -0.01%  (p=0.008 n=5+5)
      Flate            24.2MB ± 0%       24.2MB ± 0%    ~     (p=0.548 n=5+5)
      GoParser         28.5MB ± 0%       28.5MB ± 0%  -0.05%  (p=0.016 n=5+5)
      Reflect          86.3MB ± 0%       86.2MB ± 0%  -0.02%  (p=0.008 n=5+5)
      Tar              34.9MB ± 0%       34.9MB ± 0%    ~     (p=0.095 n=5+5)
      XML              47.1MB ± 0%       47.1MB ± 0%  -0.05%  (p=0.008 n=5+5)
      [Geo mean]       81.0MB            81.0MB       -0.03%
      
      name        old allocs/op     new allocs/op     delta
      Template           349k ± 0%         349k ± 0%  -0.08%  (p=0.008 n=5+5)
      Unicode            340k ± 0%         340k ± 0%    ~     (p=0.111 n=5+5)
      GoTypes           1.28M ± 0%        1.28M ± 0%  -0.09%  (p=0.008 n=5+5)
      Compiler          4.92M ± 0%        4.92M ± 0%  -0.08%  (p=0.008 n=5+5)
      SSA               15.3M ± 0%        15.3M ± 0%  -0.03%  (p=0.008 n=5+5)
      Flate              233k ± 0%         233k ± 0%    ~     (p=0.500 n=5+5)
      GoParser           292k ± 0%         292k ± 0%  -0.06%  (p=0.008 n=5+5)
      Reflect           1.05M ± 0%        1.05M ± 0%  -0.02%  (p=0.008 n=5+5)
      Tar                344k ± 0%         343k ± 0%  -0.06%  (p=0.008 n=5+5)
      XML                430k ± 0%         429k ± 0%  -0.08%  (p=0.008 n=5+5)
      [Geo mean]         809k              809k       -0.05%
      
      name        old object-bytes  new object-bytes  delta
      Template          507kB ± 0%        507kB ± 0%  -0.04%  (p=0.008 n=5+5)
      Unicode           225kB ± 0%        225kB ± 0%    ~     (all equal)
      GoTypes          1.85MB ± 0%       1.85MB ± 0%  -0.08%  (p=0.008 n=5+5)
      Compiler         6.75MB ± 0%       6.75MB ± 0%  +0.01%  (p=0.008 n=5+5)
      SSA              21.4MB ± 0%       21.4MB ± 0%  -0.02%  (p=0.008 n=5+5)
      Flate             328kB ± 0%        328kB ± 0%  -0.03%  (p=0.008 n=5+5)
      GoParser          403kB ± 0%        402kB ± 0%  -0.06%  (p=0.008 n=5+5)
      Reflect          1.41MB ± 0%       1.41MB ± 0%  -0.03%  (p=0.008 n=5+5)
      Tar               457kB ± 0%        457kB ± 0%  -0.05%  (p=0.008 n=5+5)
      XML               601kB ± 0%        600kB ± 0%  -0.16%  (p=0.008 n=5+5)
      [Geo mean]       1.05MB            1.04MB       -0.05%
      
      
      Change-Id: I677a4108c0ecd32617549294036aa84f9214c4fe
      Reviewed-on: https://go-review.googlesource.com/c/147360
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      Reviewed-by: 's avatarMartin Möhrmann <moehrmann@google.com>
      5848b6c9
  4. 05 Nov, 2018 7 commits
    • Josh Bleecher Snyder's avatar
      cmd/compile: copy all fields during SubstAny · 9e619739
      Josh Bleecher Snyder authored
      Consider these functions:
      
      func f(a any) int
      func g(a any) int
      
      Prior to this change, since f and g have identical signatures,
      they would share a single generated func type.
      
      types.SubstAny makes a shallow type copy, even after instantiation,
      f and g share a single generated Result type.
      So if you instantiate f with any=T, call dowidth,
      instantiate g with any=U, and call dowidth,
      and if sizeof(T) != sizeof(U),
      then the Offset of the result for f is now wrong.
      
      I don't believe this happens at all right now, but it bit me hard when
      experimenting with some other compiler changes.
      And it's hard to debug. It results in rare stack corruption, causing
      problems far from the actual source of the problem.
      
      To fix this, change SubstAny to make deep copies of TSTRUCTs.
      
      name        old alloc/op      new alloc/op      delta
      Template         35.3MB ± 0%       35.4MB ± 0%  +0.23%  (p=0.008 n=5+5)
      Unicode          29.1MB ± 0%       29.1MB ± 0%  +0.16%  (p=0.008 n=5+5)
      GoTypes           122MB ± 0%        122MB ± 0%  +0.16%  (p=0.008 n=5+5)
      Compiler          513MB ± 0%        514MB ± 0%  +0.19%  (p=0.008 n=5+5)
      SSA              1.94GB ± 0%       1.94GB ± 0%  +0.01%  (p=0.008 n=5+5)
      Flate            24.2MB ± 0%       24.2MB ± 0%  +0.08%  (p=0.008 n=5+5)
      GoParser         28.5MB ± 0%       28.5MB ± 0%  +0.24%  (p=0.008 n=5+5)
      Reflect          86.2MB ± 0%       86.3MB ± 0%  +0.09%  (p=0.008 n=5+5)
      Tar              34.9MB ± 0%       34.9MB ± 0%  +0.13%  (p=0.008 n=5+5)
      XML              47.0MB ± 0%       47.1MB ± 0%  +0.18%  (p=0.008 n=5+5)
      [Geo mean]       80.9MB            81.0MB       +0.15%
      
      name        old allocs/op     new allocs/op     delta
      Template           348k ± 0%         349k ± 0%  +0.38%  (p=0.008 n=5+5)
      Unicode            340k ± 0%         340k ± 0%  +0.21%  (p=0.008 n=5+5)
      GoTypes           1.27M ± 0%        1.28M ± 0%  +0.27%  (p=0.008 n=5+5)
      Compiler          4.90M ± 0%        4.92M ± 0%  +0.36%  (p=0.008 n=5+5)
      SSA               15.3M ± 0%        15.3M ± 0%  +0.03%  (p=0.008 n=5+5)
      Flate              232k ± 0%         233k ± 0%  +0.14%  (p=0.008 n=5+5)
      GoParser           291k ± 0%         292k ± 0%  +0.42%  (p=0.008 n=5+5)
      Reflect           1.05M ± 0%        1.05M ± 0%  +0.14%  (p=0.008 n=5+5)
      Tar                343k ± 0%         344k ± 0%  +0.22%  (p=0.008 n=5+5)
      XML                428k ± 0%         430k ± 0%  +0.36%  (p=0.008 n=5+5)
      [Geo mean]         807k              809k       +0.25%
      
      Change-Id: I62134db642206cded01920dc1d8a7da61f7ca0ac
      Reviewed-on: https://go-review.googlesource.com/c/147038
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      9e619739
    • Michael Anthony Knyszek's avatar
      runtime: clean up MSpan* MCache* MCentral* in docs · 44dcb5cb
      Michael Anthony Knyszek authored
      This change cleans up references to MSpan, MCache, and MCentral in the
      docs via a bunch of sed invocations to better reflect the Go names for
      the equivalent structures (i.e. mspan, mcache, mcentral) and their
      methods (i.e. MSpan_Sweep -> mspan.sweep).
      
      Change-Id: Ie911ac975a24bd25200a273086dd835ab78b1711
      Reviewed-on: https://go-review.googlesource.com/c/147557Reviewed-by: 's avatarAustin Clements <austin@google.com>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      44dcb5cb
    • Austin Clements's avatar
      runtime: deflake TestTracebackAncestors · 9c899232
      Austin Clements authored
      TestTracebackAncestors has a ~0.1% chance of failing with more
      goroutines in the traceback than expected. This happens because
      there's a window between each goroutine starting its child and that
      goroutine actually exiting. The test captures its own stack trace
      after everything is "done", but if this happens during that window, it
      will include the goroutine that's in the process of being torn down.
      Here's an example of such a failure:
      https://build.golang.org/log/fad10d0625295eb79fa879f53b8b32b9d0596af8
      
      This CL fixes this by recording the goroutines that are expected to
      exit and removing them from the stack trace. With this fix, this test
      passed 15,000 times with no failures.
      
      Change-Id: I71e7c6282987a15e8b74188b9c585aa2ca97cbcd
      Reviewed-on: https://go-review.googlesource.com/c/147517
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      9c899232
    • Yury Smolsky's avatar
      go/doc: inspect function signature for building playground examples · f1a9f1df
      Yury Smolsky authored
      This documentation example was broken:
      https://golang.org/pkg/image/png/#example_Decode.
      It did not have the "io" package imported,
      The package was referenced in the result type of the function.
      
      The "playExample" function did not inspect
      the result types of declared functions.
      
      This CL adds inspecting of parameters and result types of functions.
      
      Fixes #28492
      Updates #9679
      
      Change-Id: I6d8b11bad2db8ea8ba69039cfaa914093bdd5132
      Reviewed-on: https://go-review.googlesource.com/c/146118
      Run-TryBot: Yury Smolsky <yury@smolsky.by>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRobert Griesemer <gri@golang.org>
      f1a9f1df
    • Ian Lance Taylor's avatar
      test: add test that gccgo failed to compile · a540aa33
      Ian Lance Taylor authored
      Updates #28601
      
      Change-Id: I734fc5ded153126d384f0df912ecd4d208005e49
      Reviewed-on: https://go-review.googlesource.com/c/147537
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      a540aa33
    • Robert Griesemer's avatar
      cmd/compile: reintroduce work-around for cyclic alias declarations · e6305380
      Robert Griesemer authored
      This change re-introduces (temporarily) a work-around for recursive
      alias type declarations, originally in https://golang.org/cl/35831/
      (intended as fix for #18640). The work-around was removed later
      for a more comprehensive cycle detection check. That check
      contained a subtle error which made the code appear to work,
      while in fact creating incorrect types internally. See #25838
      for details.
      
      By re-introducing the original work-around, we eliminate problems
      with many simple recursive type declarations involving aliases;
      specifically cases such as #27232 and #27267. However, the more
      general problem remains.
      
      This CL also fixes the subtle error (incorrect variable use when
      analyzing a type cycle) mentioned above and now issues a fatal
      error with a reference to the relevant issue (rather than crashing
      later during the compilation). While not great, this is better
      than the current status. The long-term solution will need to
      address these cycles (see #25838).
      
      As a consequence, several old test cases are not accepted anymore
      by the compiler since they happened to work accidentally only.
      This CL disables parts or all code of those test cases. The issues
      are: #18640, #23823, and #24939.
      
      One of the new test cases (fixedbugs/issue27232.go) exposed a
      go/types issue. The test case is excluded from the go/types test
      suite and an issue was filed (#28576).
      
      Updates #18640.
      Updates #23823.
      Updates #24939.
      Updates #25838.
      Updates #28576.
      
      Fixes #27232.
      Fixes #27267.
      
      Change-Id: I6c2d10da98bfc6f4f445c755fcaab17fc7b214c5
      Reviewed-on: https://go-review.googlesource.com/c/147286Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      e6305380
    • Robert Griesemer's avatar
      cmd/compile: encapsulate and document two types.Type internal fields · 3377b467
      Robert Griesemer authored
      Change-Id: I5f7d2155c2c3a47dabdf16fe46b122ede81de4fc
      Reviewed-on: https://go-review.googlesource.com/c/147284Reviewed-by: 's avatarMatthew Dempsky <mdempsky@google.com>
      3377b467