1. 06 May, 2016 24 commits
  2. 05 May, 2016 16 commits
    • David Chase's avatar
      cmd/compile: repair MININT conversion bug in arm softfloat · 6db98a3c
      David Chase authored
      Negative-case conversion code was wrong for minimum int32,
      used negate-then-widen instead of widen-then-negate.
      
      Test already exists; this fixes the failure.
      
      Fixes #15563.
      
      Change-Id: I4b0b3ae8f2c9714bdcc405d4d0b1502ccfba2b40
      Reviewed-on: https://go-review.googlesource.com/22830
      Run-TryBot: David Chase <drchase@google.com>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      6db98a3c
    • Alan Donovan's avatar
      go/token: document postcondition of SetLines · 5f83bf60
      Alan Donovan authored
      Change-Id: Ie163deade396b3e298a93845b9ca4d52333ea82a
      Reviewed-on: https://go-review.googlesource.com/22831Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      5f83bf60
    • Richard Miller's avatar
      os/exec: re-enable TestExtraFiles for plan9 · 5bf9b39a
      Richard Miller authored
      This test should now succeed after CL 22610 which fixes issue #7118
      
      Change-Id: Ie785a84d77b27c832a1ddd81699bf25dab24b97d
      Reviewed-on: https://go-review.googlesource.com/22640Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarDavid du Colombier <0intro@gmail.com>
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5bf9b39a
    • Richard Miller's avatar
      syscall: simplify closing of extra fds in plan9 StartProcess · 639a20da
      Richard Miller authored
      Reviving earlier work by @ality in https://golang.org/cl/57890043
      to make the closing of extra file descriptors in syscall.StartProcess
      less race-prone. Instead of making a list of open fds in the parent
      before forking, the child can read through the list of open fds and
      close the ones not explicitly requested.  Also eliminate the
      complication of keeping open any extra fds which were inherited by
      the parent when it started.
      
      This CL will be followed by one to eliminate the ForkLock in plan9,
      which is now redundant.
      
      Fixes #5605
      
      Change-Id: I6b4b942001baa54248b656c52dced3b62021c486
      Reviewed-on: https://go-review.googlesource.com/22610
      Run-TryBot: David du Colombier <0intro@gmail.com>
      Reviewed-by: default avatarDavid du Colombier <0intro@gmail.com>
      639a20da
    • Andrew Gerrand's avatar
      doc: update broken links in release notes · 9b05ae61
      Andrew Gerrand authored
      Fixes #15559
      
      Change-Id: Ie58650f35e32c1f49669134b62876357abcdc583
      Reviewed-on: https://go-review.googlesource.com/22823Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      9b05ae61
    • Robert Griesemer's avatar
      cmd/compile: verify imported types after they are fully imported · 8650c230
      Robert Griesemer authored
      Fixes #15548.
      
      Change-Id: I1dfa9c8739a4b6d5e4c737c1a1e09e80e045b7aa
      Reviewed-on: https://go-review.googlesource.com/22803Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      8650c230
    • Emmanuel Odeke's avatar
      runtime: print signal name in panic, if name is known · 1a7fc235
      Emmanuel Odeke authored
      Adds a small function signame that infers a signal name
      from the signal table, otherwise will fallback to using
      hex(sig) as previously. No signal table is present for
      Windows hence it will always print the hex value.
      
      Sample code and new result:
      ```go
      package main
      
      import (
        "fmt"
        "time"
      )
      
      func main() {
        defer func() {
          if err := recover(); err != nil {
            fmt.Printf("err=%v\n", err)
          }
        }()
      
        ticker := time.Tick(1e9)
        for {
          <-ticker
        }
      }
      ```
      
      ```shell
      $ go run main.go &
      $ kill -11 <pid>
      fatal error: unexpected signal during runtime execution
      [signal SIGSEGV: segmentation violation code=0x1 addr=0xb01dfacedebac1e
      pc=0xc71db]
      ...
      ```
      
      Fixes #13969
      
      Change-Id: Ie6be312eb766661f1cea9afec352b73270f27f9d
      Reviewed-on: https://go-review.googlesource.com/22753Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      1a7fc235
    • Russ Cox's avatar
      net: fix hostLookupOrder("") · fafd792d
      Russ Cox authored
      Fixes #13623.
      
      Change-Id: I1bd96aa7b6b715e4dbdcf0c37c2d29228df6565c
      Reviewed-on: https://go-review.googlesource.com/18329Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      fafd792d
    • Lynn Boger's avatar
      sync/atomic, runtime/internal/atomic: improve ppc64x atomics · eeca3ba9
      Lynn Boger authored
      The following performance improvements have been made to the
      low-level atomic functions for ppc64le & ppc64:
      
      - For those cases containing a lwarx and stwcx (or other sizes):
      sync, lwarx, maybe something, stwcx, loop to sync, sync, isync
      The sync is moved before (outside) the lwarx/stwcx loop, and the
       sync after is removed, so it becomes:
      sync, lwarx, maybe something, stwcx, loop to lwarx, isync
      
      - For the Or8 and And8, the shifting and manipulation of the
      address to the word aligned version were removed and the
      instructions were changed to use lbarx, stbcx instead of
      register shifting, xor, then lwarx, stwcx.
      
      - New instructions LWSYNC, LBAR, STBCC were tested and added.
      runtime/atomic_ppc64x.s was changed to use the LWSYNC opcode
      instead of the WORD encoding.
      
      Fixes #15469
      
      Ran some of the benchmarks in the runtime and sync directories.
      Some results varied from run to run but the trend was improvement
      based on best times for base and new:
      
      runtime.test:
      BenchmarkChanNonblocking-128         0.88          0.89          +1.14%
      BenchmarkChanUncontended-128         569           511           -10.19%
      BenchmarkChanContended-128           63110         53231         -15.65%
      BenchmarkChanSync-128                691           598           -13.46%
      BenchmarkChanSyncWork-128            11355         11649         +2.59%
      BenchmarkChanProdCons0-128           2402          2090          -12.99%
      BenchmarkChanProdCons10-128          1348          1363          +1.11%
      BenchmarkChanProdCons100-128         1002          746           -25.55%
      BenchmarkChanProdConsWork0-128       2554          2720          +6.50%
      BenchmarkChanProdConsWork10-128      1909          1804          -5.50%
      BenchmarkChanProdConsWork100-128     1624          1580          -2.71%
      BenchmarkChanCreation-128            237           212           -10.55%
      BenchmarkChanSem-128                 705           667           -5.39%
      BenchmarkChanPopular-128             5081190       4497566       -11.49%
      
      BenchmarkCreateGoroutines-128             532           473           -11.09%
      BenchmarkCreateGoroutinesParallel-128     35.0          34.7          -0.86%
      BenchmarkCreateGoroutinesCapture-128      4923          4200          -14.69%
      
      sync.test:
      BenchmarkUncontendedSemaphore-128      112           94.2          -15.89%
      BenchmarkContendedSemaphore-128        133           128           -3.76%
      BenchmarkMutexUncontended-128          1.90          1.67          -12.11%
      BenchmarkMutex-128                     353           310           -12.18%
      BenchmarkMutexSlack-128                304           283           -6.91%
      BenchmarkMutexWork-128                 554           541           -2.35%
      BenchmarkMutexWorkSlack-128            567           556           -1.94%
      BenchmarkMutexNoSpin-128               275           242           -12.00%
      BenchmarkMutexSpin-128                 1129          1030          -8.77%
      BenchmarkOnce-128                      1.08          0.96          -11.11%
      BenchmarkPool-128                      29.8          27.4          -8.05%
      BenchmarkPoolOverflow-128              40564         36583         -9.81%
      BenchmarkSemaUncontended-128           3.14          2.63          -16.24%
      BenchmarkSemaSyntNonblock-128          1087          1069          -1.66%
      BenchmarkSemaSyntBlock-128             897           893           -0.45%
      BenchmarkSemaWorkNonblock-128          1034          1028          -0.58%
      BenchmarkSemaWorkBlock-128             949           886           -6.64%
      
      Change-Id: I4403fb29d3cd5254b7b1ce87a216bd11b391079e
      Reviewed-on: https://go-review.googlesource.com/22549Reviewed-by: default avatarMichael Munday <munday@ca.ibm.com>
      Reviewed-by: default avatarMinux Ma <minux@golang.org>
      eeca3ba9
    • Shenghou Ma's avatar
      context: use https in docs · 0960c7c7
      Shenghou Ma authored
      Change-Id: I9354712768702e3b083c77f30165a34cb414d686
      Reviewed-on: https://go-review.googlesource.com/22810Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      0960c7c7
    • Josh Bleecher Snyder's avatar
      cmd/compile: optimize lookupVarOutgoing · bc1989f1
      Josh Bleecher Snyder authored
      If b has exactly one predecessor, as happens
      frequently with static calls, we can make
      lookupVarOutgoing generate less garbage.
      
      Instead of generating a value that is just
      going to be an OpCopy and then get eliminated,
      loop. This can lead to lots of looping.
      However, this loop is way cheaper than generating
      lots of ssa.Values and then eliminating them.
      
      For a subset of the code in #15537:
      
      Before:
      
             28.31 real        36.17 user         1.68 sys
      2282450944  maximum resident set size
      
      After:
      
              9.63 real        11.66 user         0.51 sys
       638144512  maximum resident set size
      
      Updates #15537.
      
      Excitingly, it appears that this also helps
      regular code:
      
      name       old time/op      new time/op      delta
      Template        288ms ± 6%       276ms ± 7%   -4.13%        (p=0.000 n=21+24)
      Unicode         143ms ± 8%       141ms ±10%     ~           (p=0.287 n=24+25)
      GoTypes         932ms ± 4%       874ms ± 4%   -6.20%        (p=0.000 n=23+22)
      Compiler        4.89s ± 4%       4.58s ± 4%   -6.46%        (p=0.000 n=22+23)
      MakeBash        40.2s ±13%       39.8s ± 9%     ~           (p=0.648 n=23+23)
      
      name       old user-ns/op   new user-ns/op   delta
      Template   388user-ms ±10%  373user-ms ± 5%   -3.80%        (p=0.000 n=24+25)
      Unicode    203user-ms ± 6%  202user-ms ± 7%     ~           (p=0.492 n=22+24)
      GoTypes    1.29user-s ± 4%  1.17user-s ± 4%   -9.67%        (p=0.000 n=25+23)
      Compiler   6.86user-s ± 5%  6.28user-s ± 4%   -8.49%        (p=0.000 n=25+25)
      
      name       old alloc/op     new alloc/op     delta
      Template       51.5MB ± 0%      47.6MB ± 0%   -7.47%        (p=0.000 n=22+25)
      Unicode        37.2MB ± 0%      37.1MB ± 0%   -0.21%        (p=0.000 n=25+25)
      GoTypes         166MB ± 0%       138MB ± 0%  -16.83%        (p=0.000 n=25+25)
      Compiler        756MB ± 0%       628MB ± 0%  -16.96%        (p=0.000 n=25+23)
      
      name       old allocs/op    new allocs/op    delta
      Template         450k ± 0%        445k ± 0%   -1.02%        (p=0.000 n=25+25)
      Unicode          356k ± 0%        356k ± 0%     ~           (p=0.374 n=24+25)
      GoTypes         1.31M ± 0%       1.25M ± 0%   -4.18%        (p=0.000 n=25+25)
      Compiler        5.29M ± 0%       5.02M ± 0%   -5.15%        (p=0.000 n=25+23)
      
      It also seems to help in other cases in which
      phi insertion is a pain point (#14774, #14934).
      
      Change-Id: Ibd05ed7b99d262117ece7bb250dfa8c3d1cc5dd2
      Reviewed-on: https://go-review.googlesource.com/22790Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      bc1989f1
    • Cherry Zhang's avatar
      cmd/compile/internal/gc: skip TestFP on mips64x · 6ccab441
      Cherry Zhang authored
      The legacy mips64 backend doesn't handle large uint->float conversion
      correctly. See #15552.
      
      Change-Id: I84ceeaa95cc4e85f09cc46dfb30ab5d151f6b205
      Reviewed-on: https://go-review.googlesource.com/22800Reviewed-by: default avatarMinux Ma <minux@golang.org>
      6ccab441
    • Cherry Zhang's avatar
      cmd/compile/internal/gc: remove duplicated TestFP · bfa89c3c
      Cherry Zhang authored
      TestFp and TestFP are same, remove one.
      
      Change-Id: Iffdece634cd4572421974496298925e7c6ac13a9
      Reviewed-on: https://go-review.googlesource.com/22799Reviewed-by: default avatarMinux Ma <minux@golang.org>
      Run-TryBot: Minux Ma <minux@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      bfa89c3c
    • Keith Randall's avatar
      cmd/compile: enable constant-time CFG editing · 4fa05002
      Keith Randall authored
      Provide indexes along with block pointers for Preds
      and Succs arrays.  This allows us to splice edges in
      and out of those arrays in constant time.
      
      Fixes worst-case O(n^2) behavior in deadcode and fuse.
      
      benchmark                     old ns/op      new ns/op     delta
      BenchmarkFuse1-8              2065           2057          -0.39%
      BenchmarkFuse10-8             9408           9073          -3.56%
      BenchmarkFuse100-8            105238         76277         -27.52%
      BenchmarkFuse1000-8           3982562        1026750       -74.22%
      BenchmarkFuse10000-8          301220329      12824005      -95.74%
      BenchmarkDeadCode1-8          1588           1566          -1.39%
      BenchmarkDeadCode10-8         4333           4250          -1.92%
      BenchmarkDeadCode100-8        32031          32574         +1.70%
      BenchmarkDeadCode1000-8       590407         468275        -20.69%
      BenchmarkDeadCode10000-8      17822890       5000818       -71.94%
      BenchmarkDeadCode100000-8     1388706640     78021127      -94.38%
      BenchmarkDeadCode200000-8     5372518479     168598762     -96.86%
      
      Change-Id: Iccabdbb9343fd1c921ba07bbf673330a1c36ee17
      Reviewed-on: https://go-review.googlesource.com/22589Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4fa05002
    • Cherry Zhang's avatar
      runtime: skip TestCgoCallbackGC on linux/mips64x · bcd4b84b
      Cherry Zhang authored
      Builder is too slow. This test passed on builder machines but took
      15+ min.
      
      Change-Id: Ief9d67ea47671a57e954e402751043bc1ce09451
      Reviewed-on: https://go-review.googlesource.com/22798Reviewed-by: default avatarMinux Ma <minux@golang.org>
      Run-TryBot: Minux Ma <minux@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      bcd4b84b
    • Cherry Zhang's avatar
      cmd/link: fix external linker argument for mips64 · 3c4ebd20
      Cherry Zhang authored
      I overlooked it when rebasing CL 19803.
      
      Change-Id: Ife9d6bcc6a772715d137af903c64bafac0cdb216
      Reviewed-on: https://go-review.googlesource.com/22797Reviewed-by: default avatarMinux Ma <minux@golang.org>
      3c4ebd20