1. 07 Oct, 2016 6 commits
    • Austin Clements's avatar
      runtime: make next_gc ^0 when GC is disabled · fa9b57bb
      Austin Clements authored
      When GC is disabled, we set gcpercent to -1. However, we still use
      gcpercent to compute several values, such as next_gc and gc_trigger.
      These calculations are meaningless when gcpercent is -1 and result in
      meaningless values. This is okay in a sense because we also never use
      these values if gcpercent is -1, but they're confusing when exposed to
      the user, for example via MemStats or the execution trace. It's
      particularly unfortunate in the execution trace because it attempts to
      plot the underflowed value of next_gc, which scales all useful
      information in the heap row into oblivion.
      
      Fix this by making next_gc ^0 when gcpercent < 0. This has the
      advantage of being true in a way: next_gc is effectively infinite when
      gcpercent < 0. We can also detect this special value when updating the
      execution trace and report next_gc as 0 so it doesn't blow up the
      display of the heap line.
      
      Change-Id: I4f366e4451f8892a4908da7b2b6086bdc67ca9a9
      Reviewed-on: https://go-review.googlesource.com/30016Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      fa9b57bb
    • Keith Randall's avatar
      test: re-enable live2 test on amd64 · f8a0c15e
      Keith Randall authored
      Not sure why it was ever disabled (early SSA work?) but it passes now.
      
      Change-Id: I76439cacdbd286ce077f7e08c4d0663396a0cd8f
      Reviewed-on: https://go-review.googlesource.com/30672Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      f8a0c15e
    • Keith Randall's avatar
      cmd/compile: do regalloc check only when checkEnabled · 93d5f43a
      Keith Randall authored
      No point doing this check all the time.
      
      Fixes #15621
      
      Change-Id: I1966c061986fe98fe9ebe146d6b9738c13cef724
      Reviewed-on: https://go-review.googlesource.com/30670Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      93d5f43a
    • Russ Cox's avatar
      fmt: document and adjust Scanf space handling to eliminate a few paradoxes · 0db9518a
      Russ Cox authored
      This CL makes minor adjustment to the handling of spaces and newlines
      and then documents the result.
      
      The semantic adjustment mainly concerns the handling of a run of
      spaces following a newline in the format, like in "\n ".
      Previously, that run of spaces was ignored entirely, leading to paradoxes
      like the format "1 \n 2" not matching itself as input.
      Now, spaces following a newline in the format match zero or more
      spaces following the corresponding newline in the input.
      
      The changes to the test suite show how minor the semantic adjustments are
      and how they make the behavior more regular than previously.
      
      This CL also updates the documentation to explain the handling of
      spaces more precisely, incorporating the draft from CL 17723 but
      describing the newly introduced behavior.
      
      Fixes #13565.
      
      Change-Id: I129666e9ba42de3c28b67f75cb47488e9a4c1867
      Reviewed-on: https://go-review.googlesource.com/30611Reviewed-by: default avatarRob Pike <r@golang.org>
      0db9518a
    • Russ Cox's avatar
      fmt: add tests showing current Scanf space handling · 23606c6f
      Russ Cox authored
      There are no semantic changes here, just tests to establish
      the status quo. A followup CL will make some semantic changes,
      the (limited) scope of which should be clear from the number of
      tests that change.
      
      For #13565.
      
      Change-Id: I960749cf59d4dfe39c324875bcc575096654f883
      Reviewed-on: https://go-review.googlesource.com/30610
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRob Pike <r@golang.org>
      23606c6f
    • Matthew Dempsky's avatar
      cmd/compile: cache pointer and slice types · 78a267e3
      Matthew Dempsky authored
      Anonymous pointer and slice types are very common and identical
      anyway, so just reuse them rather than allocating new ones everywhere
      they appear.
      
      Turns out to be a small code/stack size win because SSA relies on
      gc.Type identity for reusing temporary stack slots:
      
         text	   data	    bss	    dec	    hex	filename
      6453005	 231643	 146328	6830976	 683b80	go.old
      6446660	 231643	 146328	6824631	 6822b7	go.new
      
      Saves on memory usage during compile time too, and maybe a small CPU
      time win, but the benchmarks are pretty noisy:
      
      name       old time/op     new time/op     delta
      Template       342ms ± 8%      339ms ± 9%    ~           (p=0.332 n=99+99)
      Unicode        183ms ± 9%      181ms ±11%    ~           (p=0.274 n=95+98)
      GoTypes        1.05s ± 4%      1.04s ± 3%  -1.22%        (p=0.000 n=97+95)
      Compiler       4.49s ± 7%      4.46s ± 6%    ~           (p=0.058 n=96+91)
      
      name       old user-ns/op  new user-ns/op  delta
      Template        520M ±17%       522M ±20%    ~          (p=0.544 n=98+100)
      Unicode         331M ±27%       327M ±30%    ~           (p=0.615 n=98+98)
      GoTypes        1.54G ±10%      1.53G ±12%    ~          (p=0.173 n=99+100)
      Compiler       6.33G ±10%      6.33G ±10%    ~           (p=0.682 n=98+98)
      
      name       old alloc/op    new alloc/op    delta
      Template      44.5MB ± 0%     44.1MB ± 0%  -0.80%        (p=0.000 n=97+99)
      Unicode       37.5MB ± 0%     37.3MB ± 0%  -0.44%       (p=0.000 n=98+100)
      GoTypes        126MB ± 0%      124MB ± 0%  -1.41%        (p=0.000 n=98+99)
      Compiler       518MB ± 0%      508MB ± 0%  -1.90%       (p=0.000 n=98+100)
      
      name       old allocs/op   new allocs/op   delta
      Template        441k ± 0%       434k ± 0%  -1.76%       (p=0.000 n=100+97)
      Unicode         368k ± 0%       365k ± 0%  -0.69%        (p=0.000 n=99+99)
      GoTypes        1.26M ± 0%      1.23M ± 0%  -2.27%       (p=0.000 n=100+99)
      Compiler       4.60M ± 0%      4.46M ± 0%  -2.96%       (p=0.000 n=100+99)
      
      Change-Id: I94abce5c57aed0f9c48f567b3ac24c627d4c7c91
      Reviewed-on: https://go-review.googlesource.com/30632
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      78a267e3
  2. 06 Oct, 2016 22 commits
    • Ian Lance Taylor's avatar
      runtime: fix sigset type for ppc64 big-endian GNU/Linux · 15937ccb
      Ian Lance Taylor authored
      On 64-bit big-endian GNU/Linux machines we need to treat sigset as a
      single uint64, not as a pair of uint32 values. This fix was already made
      for s390x, but not for ppc64 (which is big-endian--the little endian
      version is known as ppc64le). So copy os_linux_390.x to
      os_linux_be64.go, and use build constraints as needed.
      
      Fixes #17361
      
      Change-Id: Ia0eb18221a8f5056bf17675fcfeb010407a13fb0
      Reviewed-on: https://go-review.googlesource.com/30602
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      15937ccb
    • Robert Griesemer's avatar
      spec: clarify acceptable indices in array/slice composite literals · a016ecfd
      Robert Griesemer authored
      This simply documents the status quo accepted by cmd/compile, gccgo,
      and go/types. The new language matches the language used for indices
      of index expressions for arrays and slices.
      
      Fixes #16679.
      
      Change-Id: I65447889fbda9d222f2a9e6c10334d1b38c555f0
      Reviewed-on: https://go-review.googlesource.com/30474Reviewed-by: default avatarRob Pike <r@golang.org>
      a016ecfd
    • Robert Griesemer's avatar
      math/big: Rat.SetString to report error if input is not consumed entirely · 95a6572b
      Robert Griesemer authored
      Also, document behavior explicitly for all SetString implementations.
      
      Fixes #17001.
      
      Change-Id: Iccc882b4bc7f8b61b6092f330e405c146a80dc98
      Reviewed-on: https://go-review.googlesource.com/30472Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      95a6572b
    • Brad Fitzpatrick's avatar
      runtime: skip gdb tests on linux/ppc64 for now · 4103fedf
      Brad Fitzpatrick authored
      Updates #17366
      
      Change-Id: Ia4bd3c74c48b85f186586184a7c2b66d3b80fc9c
      Reviewed-on: https://go-review.googlesource.com/30596
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      4103fedf
    • Alexander Döring's avatar
      math/cmplx: add examples for Abs, Exp, Polar · 7b4a2246
      Alexander Döring authored
      Updates #16360
      
      Change-Id: I941519981ff5bda3a113e14fa6be718eb4d2bf83
      Reviewed-on: https://go-review.googlesource.com/30554
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      7b4a2246
    • Brad Fitzpatrick's avatar
      time: document that calendrical calculations are with no leap seconds · 1c09b4dd
      Brad Fitzpatrick authored
      Fixes #15247
      
      Change-Id: I942fb2eacd1b54bab66cc147a6b047a3ffce0b84
      Reviewed-on: https://go-review.googlesource.com/30595Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      1c09b4dd
    • Yasuhiro Matsumoto's avatar
      archive/zip: handle mtime in NTFS/UNIX/ExtendedTS extra fields · 4c79ed5f
      Yasuhiro Matsumoto authored
      Handle NTFS timestamp, UNIX timestamp, Extended extra timestamp.
      Writer supports only Extended extra timestamp field, matching most
      zip creators.
      
      Fixes #10242.
      
      Change-Id: Id665db274e63def98659231391fb77392267ac1e
      Reviewed-on: https://go-review.googlesource.com/18274
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      4c79ed5f
    • Michael Munday's avatar
      cmd/compile: fold extensions into constants on s390x · 122abe6b
      Michael Munday authored
      We insert extensions when lowering comparisons and they were
      blocking constant folding.
      
      Change-Id: I804bbf91c7606612ffe921a90853844a57e55955
      Reviewed-on: https://go-review.googlesource.com/30541Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      122abe6b
    • Simon Rawet's avatar
      time: fix AddDate with nil location · b4f3c933
      Simon Rawet authored
      AddDate now retrieves location from t.Location() to ensure that
      it never calls Date with a nil location.
      
      Added test for this bug on all Time's methods
      
      Fixes #15852
      
      Change-Id: Id2a222af56993f741ad0b802a2c3b89e8e463926
      Reviewed-on: https://go-review.googlesource.com/23561Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      Run-TryBot: Russ Cox <rsc@golang.org>
      b4f3c933
    • David Chase's avatar
      test: delete sliceopt.go · c79ba22e
      David Chase authored
      It tests the behavior of the old deleted compiler.
      
      Fixes #17362.
      
      Change-Id: Ia2fdec734c5cbe724a9de562ed71598f67244ab3
      Reviewed-on: https://go-review.googlesource.com/30593Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c79ba22e
    • Hajime Hoshi's avatar
      cmd/compile/internal/gc: unexport global variable Pc · fc47ee23
      Hajime Hoshi authored
      Change-Id: Id2a9fc1e9e70eaf5f25ddc7476061e06abcf60e4
      Reviewed-on: https://go-review.googlesource.com/30573Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      fc47ee23
    • Robert Griesemer's avatar
      go/importer: better error messages when export data is not found · 33faa4eb
      Robert Griesemer authored
      Fixes #17281.
      
      Change-Id: I4e639998dbe3baa98879f1becc37d7c4d19351e7
      Reviewed-on: https://go-review.googlesource.com/30473Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      33faa4eb
    • Cherry Zhang's avatar
      cmd/compile: intrinsify math.Sqrt when compiling "math" itself · 8aadcc55
      Cherry Zhang authored
      Fixes #17354.
      
      Change-Id: I0e018c8c3e791fc6cc1925dbbc18c2151ba9a111
      Reviewed-on: https://go-review.googlesource.com/30539
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      8aadcc55
    • Russ Cox's avatar
      math: fix Gamma(-171.5) on all platforms · 4f3a641e
      Russ Cox authored
      Using 387 mode was computing it without underflow to zero,
      apparently due to an 80-bit intermediate. Avoid underflow even
      with 64-bit floats.
      
      This eliminates the TODOs in the test suite.
      
      Fixes linux-386-387 build and fixes #11441.
      
      Change-Id: I8abaa63bfdf040438a95625d1cb61042f0302473
      Reviewed-on: https://go-review.googlesource.com/30540
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      4f3a641e
    • Richard Gibson's avatar
      encoding/json: explicitly document and test "-" key tag · 20c48c95
      Richard Gibson authored
      Struct fields can be suppressed in JSON serialization by "-" tags, but
      that doesn't preclude generation of "-" object keys.
      Document and verify the mechanism for doing so.
      
      Change-Id: I7f60e1759cfee15cb7b2447cd35fab91c5b004e6
      Reviewed-on: https://go-review.googlesource.com/21204
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      20c48c95
    • Michael Munday's avatar
      cmd/asm, cmd/internal/obj/s390x: delete unused instructions · 91706c04
      Michael Munday authored
      Deletes the following s390x instructions:
      
       - ADDME
       - ADDZE
       - SUBME
       - SUBZE
      
      They appear to be emulated PPC instructions left over from the
      porting process and I don't think they will ever be useful.
      
      Change-Id: I9b1ba78019dbd1218d0c8f8ea2903878802d1990
      Reviewed-on: https://go-review.googlesource.com/30538
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      91706c04
    • Denis Nagorny's avatar
      runtime: improve memmove for amd64 · d7507e9d
      Denis Nagorny authored
          Use AVX if available on 4th generation of Intel(TM) Core(TM) processors.
      
          (collected on E5 2609v3 @1.9GHz)
          name                        old speed      new speed       delta
          Memmove/1-6                  158MB/s ± 0%    172MB/s ± 0%    +9.09% (p=0.000 n=16+16)
          Memmove/2-6                  316MB/s ± 0%    345MB/s ± 0%    +9.09% (p=0.000 n=18+16)
          Memmove/3-6                  517MB/s ± 0%    517MB/s ± 0%      ~ (p=0.445 n=16+16)
          Memmove/4-6                  687MB/s ± 1%    690MB/s ± 0%    +0.35% (p=0.000 n=20+17)
          Memmove/5-6                  729MB/s ± 0%    729MB/s ± 0%    +0.01% (p=0.000 n=16+18)
          Memmove/6-6                  875MB/s ± 0%    875MB/s ± 0%    +0.01% (p=0.000 n=18+18)
          Memmove/7-6                 1.02GB/s ± 0%   1.02GB/s ± 1%      ~ (p=0.139 n=19+20)
          Memmove/8-6                 1.26GB/s ± 0%   1.26GB/s ± 0%    +0.00% (p=0.000 n=18+18)
          Memmove/9-6                 1.42GB/s ± 0%   1.42GB/s ± 0%    +0.00% (p=0.000 n=17+18)
          Memmove/10-6                1.58GB/s ± 0%   1.58GB/s ± 0%    +0.00% (p=0.000 n=19+19)
          Memmove/11-6                1.74GB/s ± 0%   1.74GB/s ± 0%    +0.00% (p=0.001 n=18+17)
          Memmove/12-6                1.90GB/s ± 0%   1.90GB/s ± 0%    +0.00% (p=0.000 n=19+19)
          Memmove/13-6                2.05GB/s ± 0%   2.05GB/s ± 0%    +0.00% (p=0.000 n=18+19)
          Memmove/14-6                2.21GB/s ± 0%   2.21GB/s ± 0%    +0.00% (p=0.000 n=16+20)
          Memmove/15-6                2.37GB/s ± 0%   2.37GB/s ± 0%    +0.00% (p=0.004 n=19+20)
          Memmove/16-6                2.53GB/s ± 0%   2.53GB/s ± 0%    +0.00% (p=0.000 n=16+16)
          Memmove/32-6                4.67GB/s ± 0%   4.67GB/s ± 0%    +0.00% (p=0.000 n=17+17)
          Memmove/64-6                8.67GB/s ± 0%   8.64GB/s ± 0%    -0.33% (p=0.000 n=18+17)
          Memmove/128-6               12.6GB/s ± 0%   11.6GB/s ± 0%    -8.05% (p=0.000 n=16+19)
          Memmove/256-6               16.3GB/s ± 0%   16.6GB/s ± 0%    +1.66% (p=0.000 n=20+18)
          Memmove/512-6               21.5GB/s ± 0%   24.4GB/s ± 0%   +13.35% (p=0.000 n=18+17)
          Memmove/1024-6              24.7GB/s ± 0%   33.7GB/s ± 0%   +36.12% (p=0.000 n=18+18)
          Memmove/2048-6              27.3GB/s ± 0%   43.3GB/s ± 0%   +58.77% (p=0.000 n=19+17)
          Memmove/4096-6              37.5GB/s ± 0%   50.5GB/s ± 0%   +34.56% (p=0.000 n=19+19)
          MemmoveUnalignedDst/1-6      135MB/s ± 0%    146MB/s ± 0%    +7.69% (p=0.000 n=16+14)
          MemmoveUnalignedDst/2-6      271MB/s ± 0%    292MB/s ± 0%    +7.69% (p=0.000 n=18+18)
          MemmoveUnalignedDst/3-6      438MB/s ± 0%    438MB/s ± 0%      ~ (p=0.352 n=16+19)
          MemmoveUnalignedDst/4-6      584MB/s ± 0%    584MB/s ± 0%      ~ (p=0.876 n=17+17)
          MemmoveUnalignedDst/5-6      631MB/s ± 1%    632MB/s ± 0%    +0.25% (p=0.000 n=20+17)
          MemmoveUnalignedDst/6-6      759MB/s ± 0%    759MB/s ± 0%    +0.00% (p=0.000 n=19+16)
          MemmoveUnalignedDst/7-6      885MB/s ± 0%    883MB/s ± 1%      ~ (p=0.647 n=18+20)
          MemmoveUnalignedDst/8-6     1.08GB/s ± 0%   1.08GB/s ± 0%    +0.00% (p=0.035 n=19+18)
          MemmoveUnalignedDst/9-6     1.22GB/s ± 0%   1.22GB/s ± 0%      ~ (p=0.251 n=18+17)
          MemmoveUnalignedDst/10-6    1.35GB/s ± 0%   1.35GB/s ± 0%      ~ (p=0.327 n=17+18)
          MemmoveUnalignedDst/11-6    1.49GB/s ± 0%   1.49GB/s ± 0%      ~ (p=0.531 n=18+19)
          MemmoveUnalignedDst/12-6    1.63GB/s ± 0%   1.63GB/s ± 0%      ~ (p=0.886 n=19+18)
          MemmoveUnalignedDst/13-6    1.76GB/s ± 0%   1.76GB/s ± 1%    -0.24% (p=0.006 n=18+20)
          MemmoveUnalignedDst/14-6    1.90GB/s ± 0%   1.90GB/s ± 0%      ~ (p=0.818 n=20+19)
          MemmoveUnalignedDst/15-6    2.03GB/s ± 0%   2.03GB/s ± 0%      ~ (p=0.294 n=17+16)
          MemmoveUnalignedDst/16-6    2.17GB/s ± 0%   2.17GB/s ± 0%      ~ (p=0.602 n=16+18)
          MemmoveUnalignedDst/32-6    4.05GB/s ± 0%   4.05GB/s ± 0%    +0.00% (p=0.010 n=18+17)
          MemmoveUnalignedDst/64-6    7.59GB/s ± 0%   7.59GB/s ± 0%    +0.00% (p=0.022 n=18+16)
          MemmoveUnalignedDst/128-6   11.1GB/s ± 0%   11.4GB/s ± 0%    +2.79% (p=0.000 n=18+17)
          MemmoveUnalignedDst/256-6   16.4GB/s ± 0%   16.7GB/s ± 0%    +1.59% (p=0.000 n=20+17)
          MemmoveUnalignedDst/512-6   15.7GB/s ± 0%   21.3GB/s ± 0%   +35.87% (p=0.000 n=18+20)
          MemmoveUnalignedDst/1024-6  16.0GB/s ±20%   31.5GB/s ± 0%   +96.93% (p=0.000 n=20+14)
          MemmoveUnalignedDst/2048-6  19.6GB/s ± 0%   42.1GB/s ± 0%  +115.16% (p=0.000 n=17+18)
          MemmoveUnalignedDst/4096-6  6.41GB/s ± 0%  33.18GB/s ± 0%  +417.56% (p=0.000 n=17+18)
          MemmoveUnalignedSrc/1-6      171MB/s ± 0%    166MB/s ± 0%    -3.33% (p=0.000 n=19+16)
          MemmoveUnalignedSrc/2-6      343MB/s ± 0%    342MB/s ± 1%    -0.41% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/3-6      508MB/s ± 0%    493MB/s ± 1%    -2.90% (p=0.000 n=17+17)
          MemmoveUnalignedSrc/4-6      677MB/s ± 0%    660MB/s ± 2%    -2.55% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/5-6      790MB/s ± 0%    790MB/s ± 0%      ~ (p=0.139 n=17+17)
          MemmoveUnalignedSrc/6-6      948MB/s ± 0%    946MB/s ± 1%      ~ (p=0.330 n=17+19)
          MemmoveUnalignedSrc/7-6     1.11GB/s ± 0%   1.11GB/s ± 0%    -0.05% (p=0.026 n=17+17)
          MemmoveUnalignedSrc/8-6     1.38GB/s ± 0%   1.38GB/s ± 0%      ~ (p=0.091 n=18+16)
          MemmoveUnalignedSrc/9-6     1.42GB/s ± 0%   1.40GB/s ± 1%    -1.04% (p=0.000 n=19+20)
          MemmoveUnalignedSrc/10-6    1.58GB/s ± 0%   1.56GB/s ± 1%    -1.15% (p=0.000 n=18+19)
          MemmoveUnalignedSrc/11-6    1.73GB/s ± 0%   1.71GB/s ± 1%    -1.30% (p=0.000 n=20+20)
          MemmoveUnalignedSrc/12-6    1.89GB/s ± 0%   1.87GB/s ± 1%    -1.18% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/13-6    2.05GB/s ± 0%   2.02GB/s ± 1%    -1.18% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/14-6    2.21GB/s ± 0%   2.18GB/s ± 1%    -1.14% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/15-6    2.36GB/s ± 0%   2.34GB/s ± 1%    -1.04% (p=0.000 n=17+20)
          MemmoveUnalignedSrc/16-6    2.52GB/s ± 0%   2.49GB/s ± 1%    -1.26% (p=0.000 n=19+20)
          MemmoveUnalignedSrc/32-6    4.82GB/s ± 0%   4.61GB/s ± 0%    -4.40% (p=0.000 n=19+20)
          MemmoveUnalignedSrc/64-6    5.03GB/s ± 4%   7.97GB/s ± 0%   +58.55% (p=0.000 n=20+16)
          MemmoveUnalignedSrc/128-6   11.1GB/s ± 0%   11.2GB/s ± 0%    +0.52% (p=0.000 n=17+18)
          MemmoveUnalignedSrc/256-6   16.5GB/s ± 0%   16.4GB/s ± 0%    -0.10% (p=0.000 n=20+18)
          MemmoveUnalignedSrc/512-6   21.0GB/s ± 0%   22.1GB/s ± 0%    +5.48% (p=0.000 n=14+17)
          MemmoveUnalignedSrc/1024-6  24.9GB/s ± 0%   31.9GB/s ± 0%   +28.20% (p=0.000 n=19+20)
          MemmoveUnalignedSrc/2048-6  23.3GB/s ± 0%   33.8GB/s ± 0%   +45.22% (p=0.000 n=17+19)
          MemmoveUnalignedSrc/4096-6  37.3GB/s ± 0%   42.7GB/s ± 0%   +14.30% (p=0.000 n=17+17)
      
      Change-Id: Id66aa3e499ccfb117cb99d623ef326b50d057b64
      Reviewed-on: https://go-review.googlesource.com/29590
      Run-TryBot: Denis Nagorny <denis.nagorny@intel.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      d7507e9d
    • Michael Munday's avatar
      cmd/{asm,compile}: add ANDW, ORW and XORW instructions to s390x · dd1dcf94
      Michael Munday authored
      Adds the following instructions and uses them in the SSA backend:
      
       - ANDW
       - ORW
       - XORW
      
      The instruction encodings for 32-bit operations are typically shorter,
      particularly when an immediate is used. For example, XORW $-1, R1
      only requires one instruction, whereas XOR requires two.
      
      Also removes some unused instructions (that were emulated):
      
       - ANDN
       - NAND
       - ORN
       - NOR
      
      Change-Id: Iff2a16f52004ba498720034e354be9771b10cac4
      Reviewed-on: https://go-review.googlesource.com/30291Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      dd1dcf94
    • Keith Randall's avatar
      cmd/compile: don't shuffle rematerializeable values around · 1bddd2ee
      Keith Randall authored
      Better to just rematerialize them when needed instead of
      cross-register spilling or other techniques for keeping them in
      registers.
      
      This helps for amd64 code that does 1 << x. It is better to do
        loop:
          MOVQ $1, AX  // materialize arg to SLLQ
          SLLQ CX, AX
          ...
          goto loop
      than to do
        MOVQ $1, AX    // materialize outsize of loop
        loop:
          MOVQ AX, DX  // save value that's about to be clobbered
          SLLQ CX, AX
          MOVQ DX, AX  // move it back to the correct register
          goto loop
      
      Update #16092
      
      Change-Id: If7ac290208f513061ebb0736e8a79dcb0ba338c0
      Reviewed-on: https://go-review.googlesource.com/30471
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
      1bddd2ee
    • Ian Lance Taylor's avatar
      runtime: add threadprof tag for test that starts busy thread · e5421e21
      Ian Lance Taylor authored
      The CgoExternalThreadSIGPROF test starts a thread at constructor time
      that does a busy loop. That can throw off some other tests. So only
      build that code if testprogcgo is built with the tag threadprof, and
      adjust the tests that use that code to pass that build tag.
      
      This revealed that the CgoPprofThread test was not testing what it
      should have, as it never actually started the cpuHog thread. It was
      passing because of the busy loop thread. Fix it to start the thread as
      intended.
      
      Change-Id: I087a9e4fc734a86be16a287456441afac5676beb
      Reviewed-on: https://go-review.googlesource.com/30362
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      e5421e21
    • Larz Conwell's avatar
      go/doc: hide methods on locally-declared predeclared types · 5fd6bb4c
      Larz Conwell authored
      Currently if you declare a type overwriting a predeclared type
      and export methods on it they will be exposed in godoc, even
      though the type itself is not exported. This corrects that
      by making all methods on these types hidden, since that's
      the expected output.
      
      Fixes #9860
      
      Change-Id: I14037bdcef1b4bbefcf299a143bac8bf363718e0
      Reviewed-on: https://go-review.googlesource.com/20610Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      5fd6bb4c
    • Jaana Burcu Dogan's avatar
      cmd/go: note when some Go files were ignored on no-Go-files errors · eee727d0
      Jaana Burcu Dogan authored
      It is pretty confusing when there are Go files ignored for mismatching
      build tags and similar and we output "no buildable Go files" without
      giving any other information about some Go files have been ignored.
      
      Fixes #17008.
      
      Change-Id: I1766ee86a9a7a72f6694deae3f73b47bfc9d0be5
      Reviewed-on: https://go-review.googlesource.com/29113
      Run-TryBot: Jaana Burcu Dogan <jbd@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      eee727d0
  3. 05 Oct, 2016 12 commits
    • Dmitriy Dudkin's avatar
      cmd/go: fix go get -u wildcard corner case · 6abc4a7c
      Dmitriy Dudkin authored
      Suppose you have already downloaded "foo.bar/baz", where the repo
      is for all of foo.bar/, and you then "go get -u foo.bar/...".
      The command-line wildcard expands to foo.bar/baz,
      and go get updates the foo.bar/ repo.
      Suppose that the repo update brought in foo.bar/quux,
      though, which depends on other.site/bar.
      Download does not consider foo.bar/quux, since it's
      only looking at foo.bar/baz, so it didn't download other.site/bar.
      After the download, we call importPaths(args) to decide what to install.
      That call was reevaluating the original wildcard with the new repo
      and matching foo.bar/quux, which was missing its dependency
      other.site/bar, causing a build failure.
      
      The fix in this CL is to remember the pre-download expansion
      of the argument list and pass it to the installer. Then only the things
      we tried to download get installed.
      
      The case where foo.bar/ is not even checked out yet continues to work,
      because in that case we leave the wildcard in place, and download
      reevaluates it during the download.
      
      The fix in this CL may not be the right long-term fix, but it is at least a fix.
      It may be that download should be passed all the original wildcards
      so that it can reexpand them as new code is downloaded, ideally reaching
      a fixed point. That can be left for another day.
      
      In short:
      
      - The problem is that the "install" half of "go get" was trying to install
        more than the "download" half was properly downloading.
      - The fix in this CL is to install just what was downloaded (install less).
      - It may be that a future CL should instead download what will be installed (download more).
      
      Fixes #14450.
      
      Change-Id: Ia1984761d24439549b7cff322bc0dbc262c1a653
      Reviewed-on: https://go-review.googlesource.com/19892
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6abc4a7c
    • Lynn Boger's avatar
      runtime: memclr perf improvements on ppc64x · 3107c91e
      Lynn Boger authored
      This updates runtime/memclr_ppc64x.s to improve performance,
      by unrolling loops for larger clears.
      
      Fixes #17348
      
      benchmark                    old MB/s     new MB/s     speedup
      BenchmarkMemclr/5-80         199.71       406.63       2.04x
      BenchmarkMemclr/16-80        693.66       1817.41      2.62x
      BenchmarkMemclr/64-80        2309.35      5793.34      2.51x
      BenchmarkMemclr/256-80       5428.18      14765.81     2.72x
      BenchmarkMemclr/4096-80      8611.65      27191.94     3.16x
      BenchmarkMemclr/65536-80     8736.69      28604.23     3.27x
      BenchmarkMemclr/1M-80        9304.94      27600.09     2.97x
      BenchmarkMemclr/4M-80        8705.66      27589.64     3.17x
      BenchmarkMemclr/8M-80        8575.74      23631.04     2.76x
      BenchmarkMemclr/16M-80       8443.10      19240.68     2.28x
      BenchmarkMemclr/64M-80       8390.40      9493.04      1.13x
      BenchmarkGoMemclr/5-80       263.05       630.37       2.40x
      BenchmarkGoMemclr/16-80      904.33       1148.49      1.27x
      BenchmarkGoMemclr/64-80      2830.20      8756.70      3.09x
      BenchmarkGoMemclr/256-80     6064.59      20299.46     3.35x
      
      Change-Id: Ic76c9183c8b4129ba3df512ca8b0fe6bd424e088
      Reviewed-on: https://go-review.googlesource.com/30373
      Run-TryBot: Lynn Boger <laboger@linux.vnet.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMichael Munday <munday@ca.ibm.com>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      3107c91e
    • Quentin Smith's avatar
      crypto/x509: support RHEL 7 cert bundle · ce645534
      Quentin Smith authored
      RHEL 7 introduces a new tool, update-ca-trust(8), which places the
      certificate bundle in a new location. Add this path to the list of
      locations that are searched for the certificate bundle.
      
      Fixes #15749
      
      Change-Id: Idc97f885ee48ef085f1eb4dacbd1c2cf55f94ff5
      Reviewed-on: https://go-review.googlesource.com/30375Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ce645534
    • Robert Griesemer's avatar
      cmd/compile: untyped arrays bounds representable as integers are valid · 936ae27b
      Robert Griesemer authored
      Fixes #13485.
      
      Change-Id: I11dd15c7d14fc19d42a3b48427a4cc1208b18e6a
      Reviewed-on: https://go-review.googlesource.com/30456Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      936ae27b
    • Joe Tsai's avatar
      Revert "net/http: improve performance for parsePostForm" · f6b4c889
      Joe Tsai authored
      This reverts commit 59320c39.
      
      Reasons:
      This CL was causing failures on a large regression test that we run
      within Google. The issues arises from two bugs in the CL:
      * The CL dropped support for ';' as a delimiter (see https://golang.org/issue/2210)
      * The handling of an empty string caused an empty record to be added when
      no record was added (see https://golang.org/cl/30454 for my attempted fix)
      
      The logic being added is essentially a variation of url.ParseQuery,
      but altered to accept an io.Reader instead of a string.
      Since it is duplicated (but modified) logic, there needs to be good
      tests to ensure that it's implementation doesn't drift in functionality
      from url.ParseQuery. Fixing the above issues and adding the associated
      regression tests leads to >100 lines of codes.
      For a 4% reduction in CPU time, I think this complexity and duplicated
      logic is not worth the effort.
      
      As such, I am abandoning my efforts to fix the existing issues and
      believe that reverting CL/20301 is the better course of action.
      
      Updates #14655
      
      Change-Id: Ibb5be0a5b48a16c46337e213b79467fcafee69df
      Reviewed-on: https://go-review.googlesource.com/30470
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      f6b4c889
    • Alexander Döring's avatar
      os/exec: add example for CommandContext · a9b49537
      Alexander Döring authored
      Updates #16360
      
      Change-Id: I0e0afe7a89f2ebcb3e5bbc345f77a605d3afc398
      Reviewed-on: https://go-review.googlesource.com/30103Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a9b49537
    • Jirka Daněk's avatar
      encoding/json: add struct and field name to UnmarshalTypeError message · b9fd510c
      Jirka Daněk authored
      The UnmarshalTypeError has two new fields Struct and Field,
      used when constructing the error message.
      
      Fixes #6716.
      
      Change-Id: I67da171480a9491960b3ae81893770644180f848
      Reviewed-on: https://go-review.googlesource.com/18692
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      b9fd510c
    • Quentin Smith's avatar
      syscall: relax TestUnshare · cb986def
      Quentin Smith authored
      Fixes #17224.
      
      Some systems have more than just "lo" in a fresh network namespace, due
      to IPv6. Instead of testing for exactly 3 lines of output (implying 1
      interface), just test to make sure that the unshare call resulted in
      fewer interfaces than before. This should still verify that unshare did
      something.
      
      Change-Id: Iaf84c2b0e673fc207059d62e2f4dd7583a753419
      Reviewed-on: https://go-review.googlesource.com/30372Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarJessica Frazelle <me@jessfraz.com>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      cb986def
    • Russ Cox's avatar
      encoding/json: use standard ES6 formatting for numbers during marshal · 92b3e365
      Russ Cox authored
      Change float32/float64 formatting to use non-exponential form
      for a slightly wider range, to more closely match ES6 JSON.stringify
      and other JSON generators.
      
      Most notably:
      
      	1e20 now formats as 100000000000000000000 (previously 1e+20)
      	1e-6 now formats as 0.000001 (previously 1e-06)
      	1e-7 now formats as 1e-7 (previously 1e-07)
      
      This also brings the int64 and float64 formatting in line with each other,
      for all shared representable values. For example both int64(1234567)
      and float64(1234567) now format as "1234567", where before the
      float64 formatted as "1.234567e+06".
      
      The only variation now compared to ES6 JSON.stringify is that
      Go continues to encode negative zero as "-0", not "0", so that
      the value continues to be preserved during JSON round trips.
      
      Fixes #6384.
      Fixes #14135.
      
      Change-Id: Ib0e0e009cd9181d75edc0424a28fe776bcc5bbf8
      Reviewed-on: https://go-review.googlesource.com/30371Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      92b3e365
    • Cherry Zhang's avatar
      cmd/compile: use CBZ/CBNZ instrunctions on ARM64 · b662e524
      Cherry Zhang authored
      These are conditional branches that takes a register instead of
      flags as control value.
      
      Reduce binary size by 0.7%, text size by 2.4% (cmd/go as an
      exmaple).
      
      Change-Id: I0020cfde745f9eab680b8b949ad28c87fe183afd
      Reviewed-on: https://go-review.googlesource.com/30030Reviewed-by: default avatarDavid Chase <drchase@google.com>
      b662e524
    • Cherry Zhang's avatar
      runtime, cmd/internal/obj: get rid of rewindmorestack · 4c9a3729
      Cherry Zhang authored
      In the function prologue, we emit a jump to the beginning of
      the function immediately after calling morestack. And in the
      runtime stack growing code, it decodes and emulates that jump.
      This emulation was necessary before we had per-PC SP deltas,
      since the traceback code assumed that the frame size was fixed
      for the whole function, except on the first instruction where
      it was 0. Since we now have per-PC SP deltas and PCDATA, we
      can correctly record that the frame size is 0. This makes the
      emulation unnecessary.
      
      This may be helpful for registerized calling convention, where
      there may be unspills of arguments after calling morestack. It
      also simplifies the runtime.
      
      Change-Id: I7ebee31eaee81795445b33f521ab6a79624c4ceb
      Reviewed-on: https://go-review.googlesource.com/30138Reviewed-by: default avatarDavid Chase <drchase@google.com>
      4c9a3729
    • Yasuhiro Matsumoto's avatar
      cmd/asm: close file before remove · 56b74697
      Yasuhiro Matsumoto authored
      Windows doesn't remove an open file.
      
      Fixes #17345
      
      Change-Id: I283930c7d6eb3bc09ad208191afefe989804ce32
      Reviewed-on: https://go-review.googlesource.com/30430
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      56b74697