1. 13 Feb, 2014 27 commits
  2. 12 Feb, 2014 13 commits
    • Dave Cheney's avatar
      debug/macho: add test file for CL 60190043 · 95150867
      Dave Cheney authored
      From the description of CL 60190043
      
      debug/macho: Add support for opening fat/universal binaries.
      
      New testdata was created from existing using:
      $ lipo gcc-386-darwin-exec gcc-amd64-darwin-exec -create -output
      fat-gcc-386-amd64-darwin-exec
      
      Update #7250
      
      LGTM=iant
      R=golang-codereviews, gobot, dsymonds, iant
      CC=golang-codereviews
      https://golang.org/cl/61720044
      95150867
    • Brad Fitzpatrick's avatar
      crypto/md5: always test the portable block function too · 72f0ed42
      Brad Fitzpatrick authored
      So it doesn't bitrot.
      
      Like the sha1 version (https://golang.org/cl/62270043)
      
      LGTM=agl
      R=agl
      CC=golang-codereviews
      https://golang.org/cl/62420043
      72f0ed42
    • Russ Cox's avatar
      runtime: fix non-concurrent sweep · 73a30435
      Russ Cox authored
      State of the world:
      
      CL 46430043 introduced a new concurrent sweep but is broken.
      
      CL 62360043 made the new sweep non-concurrent
      to try to fix the world while we understand what's wrong with
      the concurrent version.
      
      This CL fixes the non-concurrent form to run finalizers.
      This CL is just a band-aid to get the build green again.
      
      Dmitriy is working on understanding and then fixing what's
      wrong with the concurrent sweep.
      
      TBR=dvyukov
      CC=golang-codereviews
      https://golang.org/cl/62370043
      73a30435
    • Adam Langley's avatar
      A+C: Kyle Isom (individual CLA) · b2cac62f
      Adam Langley authored
      Generated by addca.
      
      R=gobot
      CC=golang-codereviews
      https://golang.org/cl/57680047
      b2cac62f
    • Dmitriy Vyukov's avatar
      runtime: temporary disable concurrent GC sweep · 3cac829f
      Dmitriy Vyukov authored
      We see failures on builders, e.g.:
      http://build.golang.org/log/70bb28cd6bcf8c4f49810a011bb4337a61977bf4
      
      LGTM=rsc, dave
      R=rsc, dave
      CC=golang-codereviews
      https://golang.org/cl/62360043
      3cac829f
    • Anthony Martin's avatar
      cmd/cc, cmd/gc, cmd/ld: consolidate print format routines · 2cae0591
      Anthony Martin authored
      We now use the %A, %D, %P, and %R routines from liblink
      across the board.
      
      Fixes #7178.
      Fixes #7055.
      
      LGTM=iant
      R=golang-codereviews, gobot, rsc, dave, iant, remyoudompheng
      CC=golang-codereviews
      https://golang.org/cl/49170043
      2cae0591
    • Brad Fitzpatrick's avatar
      crypto/sha1: always test the portable block function too · 14c5c8a9
      Brad Fitzpatrick authored
      So it doesn't bitrot.
      
      LGTM=agl
      R=golang-codereviews, agl
      CC=golang-codereviews
      https://golang.org/cl/62270043
      14c5c8a9
    • Dmitriy Vyukov's avatar
      runtime: more precise mprof sampling · bf0d71af
      Dmitriy Vyukov authored
      Better sampling of objects that are close in size to sampling rate.
      See the comment for details.
      
      LGTM=rsc
      R=golang-codereviews, rsc
      CC=golang-codereviews
      https://golang.org/cl/43830043
      bf0d71af
    • Dmitriy Vyukov's avatar
      runtime: improve cpu profiles for GC/syscalls/cgo · 5e72fae9
      Dmitriy Vyukov authored
      Current "System->etext" is not very informative.
      Add parent "GC" frame.
      Replace un-unwindable syscall/cgo frames with Go stack that leads to the call.
      
      LGTM=rsc
      R=rsc, alex.brainman, ality
      CC=golang-codereviews
      https://golang.org/cl/61270043
      5e72fae9
    • Nick Craig-Wood's avatar
      An ARM version of sha1block.go with a big improvement in throughput · 44c252bd
      Nick Craig-Wood authored
      (up to 2.8x).
      
      This is a partially unrolled version which performs better for small
      hashes and only sacrifices a small amount of ultimate speed to a fully
      unrolled version which uses 5k of code.
      
      Code size
      
        Before 1636 bytes
        After 1880 bytes
        15% larger
      
      Benchmarks on Samsung Exynos 5 ARMv7 Chromebook
      
      benchmark              old ns/op    new ns/op    delta
      BenchmarkHash8Bytes         1907         1136  -40.43%
      BenchmarkHash1K            20280         7547  -62.79%
      BenchmarkHash8K           148469        52576  -64.59%
      
      benchmark               old MB/s     new MB/s  speedup
      BenchmarkHash8Bytes         4.19         7.04    1.68x
      BenchmarkHash1K            50.49       135.68    2.69x
      BenchmarkHash8K            55.18       155.81    2.82x
      
      LGTM=dave, agl
      R=dave, bradfitz, agl, adg, nick
      CC=golang-codereviews
      https://golang.org/cl/56990044
      44c252bd
    • Dmitriy Vyukov's avatar
      runtime: refactor level-triggered IO support · 2ea859a7
      Dmitriy Vyukov authored
      Remove GOOS_solaris ifdef from netpoll code,
      instead introduce runtime edge/level triggered IO flag.
      Replace armread/armwrite with a single arm(mode) function,
      that's how all other interfaces look like and these functions
      will need to do roughly the same thing anyway.
      
      LGTM=rsc
      R=golang-codereviews, dave, rsc
      CC=golang-codereviews
      https://golang.org/cl/55500044
      2ea859a7
    • Dmitriy Vyukov's avatar
      runtime: refactor chan code · e1ee0482
      Dmitriy Vyukov authored
      1. Make internal chan functions static.
      2. Move selgen local variable instead of a member of G struct.
      3. Change "bool *pres/selected" parameter of chansend/chanrecv to "bool block",
         which is simpler, faster and less code.
      -37 lines total.
      
      LGTM=rsc
      R=golang-codereviews, dave, gobot, rsc
      CC=bradfitz, golang-codereviews, iant, khr
      https://golang.org/cl/58610043
      e1ee0482
    • Dmitriy Vyukov's avatar
      runtime: concurrent GC sweep · 3c3be622
      Dmitriy Vyukov authored
      Moves sweep phase out of stoptheworld by adding
      background sweeper goroutine and lazy on-demand sweeping.
      
      It turned out to be somewhat trickier than I expected,
      because there is no point in time when we know size of live heap
      nor consistent number of mallocs and frees.
      So everything related to next_gc, mprof, memstats, etc becomes trickier.
      
      At the end of GC next_gc is conservatively set to heap_alloc*GOGC,
      which is much larger than real value. But after every sweep
      next_gc is decremented by freed*GOGC. So when everything is swept
      next_gc becomes what it should be.
      
      For mprof I had to introduce 3-generation scheme (allocs, revent_allocs, prev_allocs),
      because by the end of GC we know number of frees for the *previous* GC.
      
      Significant caution is required to not cross yet-unknown real value of next_gc.
      This is achieved by 2 means:
      1. Whenever I allocate a span from MCentral, I sweep a span in that MCentral.
      2. Whenever I allocate N pages from MHeap, I sweep until at least N pages are
      returned to heap.
      This provides quite strong guarantees that heap does not grow when it should now.
      
      http-1
      allocated                    7036         7033      -0.04%
      allocs                         60           60      +0.00%
      cputime                     51050        46700      -8.52%
      gc-pause-one             34060569      1777993     -94.78%
      gc-pause-total               2554          133     -94.79%
      latency-50                 178448       170926      -4.22%
      latency-95                 284350       198294     -30.26%
      latency-99                 345191       220652     -36.08%
      rss                     101564416    101007360      -0.55%
      sys-gc                    6606832      6541296      -0.99%
      sys-heap                 88801280     87752704      -1.18%
      sys-other                 7334208      7405928      +0.98%
      sys-stack                  524288       524288      +0.00%
      sys-total               103266608    102224216      -1.01%
      time                        50339        46533      -7.56%
      virtual-mem             292990976    293728256      +0.25%
      
      garbage-1
      allocated                 2983818      2990889      +0.24%
      allocs                      62880        62902      +0.03%
      cputime                  16480000     16190000      -1.76%
      gc-pause-one            828462467    487875135     -41.11%
      gc-pause-total            4142312      2439375     -41.11%
      rss                    1151709184   1153712128      +0.17%
      sys-gc                   66068352     66068352      +0.00%
      sys-heap               1039728640   1039728640      +0.00%
      sys-other                37776064     40770176      +7.93%
      sys-stack                 8781824      8781824      +0.00%
      sys-total              1152354880   1155348992      +0.26%
      time                     16496998     16199876      -1.80%
      virtual-mem            1409564672   1402281984      -0.52%
      
      LGTM=rsc
      R=golang-codereviews, sameer, rsc, iant, jeremyjackins, gobot
      CC=golang-codereviews, khr
      https://golang.org/cl/46430043
      3c3be622