1. 05 May, 2016 13 commits
    • 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: 's 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: 's 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: 's avatarMichael Munday <munday@ca.ibm.com>
      Reviewed-by: 's 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: 's 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: 's 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: 's 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: 's 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: 's 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: 's 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: 's avatarMinux Ma <minux@golang.org>
      3c4ebd20
    • Ian Lance Taylor's avatar
      runtime: put tracebackctxt C functions in .c file · 34f97d28
      Ian Lance Taylor authored
      Since tracebackctxt.go uses //export functions, the C functions can't be
      externally visible in the C comment. The code was using attributes to
      work around that, but that failed on Windows.
      
      Change-Id: If4449fd8209a8998b4f6855ea89e5db1471b2981
      Reviewed-on: https://go-review.googlesource.com/22786Reviewed-by: 's avatarMinux Ma <minux@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      34f97d28
    • Alex Brainman's avatar
      debug/pe: unexport newly introduced identifiers · 57be1607
      Alex Brainman authored
      CLs 22181, 22332 and 22336 intorduced new functionality to be used
      in cmd/link (see issue #15345 for details). But we didn't have chance
      to use new functionality yet. Unexport newly introduced identifiers,
      so we don't have to commit to the API until we actually tried it.
      
      Rename File.COFFSymbols into File._COFFSymbols,
      COFFSymbol.FullName into COFFSymbol._FullName,
      Section.Relocs into Section._Relocs,
      Reloc into _Relocs,
      File.StringTable into File._StringTable and
      StringTable into _StringTable.
      
      Updates #15345
      
      Change-Id: I770eeb61f855de85e0c175225d5d1c006869b9ec
      Reviewed-on: https://go-review.googlesource.com/22720Reviewed-by: 's avatarDavid Crawshaw <crawshaw@golang.org>
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      57be1607
    • Nigel Tao's avatar
      compress/flate: distinguish between base and min match length. · 27d0d849
      Nigel Tao authored
      Change-Id: I93db5cd86e3fb568e4444cad95268ba4a02ce8a0
      Reviewed-on: https://go-review.googlesource.com/22787Reviewed-by: 's avatarNigel Tao <nigeltao@golang.org>
      27d0d849
  2. 04 May, 2016 24 commits
  3. 03 May, 2016 3 commits