1. 30 Jan, 2014 8 commits
    • Rémy Oudompheng's avatar
      cmd/gc: do not consider length zero arrays as comparable. · 502958ff
      Rémy Oudompheng authored
      Array values are comparable if values of the array element type
      are comparable.
      
      Fixes #6526.
      
      LGTM=khr
      R=rsc, bradfitz, khr
      CC=golang-codereviews
      https://golang.org/cl/58580043
      502958ff
    • Ian Lance Taylor's avatar
      cmd/ld: fix bug with "runtime/cgo" in external link mode · 1683dab7
      Ian Lance Taylor authored
      In external link mode the linker explicitly adds the string
      constant "runtime/cgo".  It adds the string constant using the
      same symbol name as the compiler, but a different format.  The
      compiler assumes that the string data immediately follows the
      string header, but the linker puts the two in different
      sections.  The result is bad string data when the compiler
      sees "runtime/cgo" used as a string constant.
      
      The compiler assumption is in datastring in [568]g/gobj.c.
      The linker layout is in addstrdata in ld/data.c.  The compiler
      assumption is valid for string literals.  The linker is not
      creating a string literal, so its assumption is also valid.
      
      There are a few ways to avoid this problem.  This patch fixes
      it by only doing the fake import of runtime/cgo if necessary,
      and by only creating the string symbol if necessary.
      
      Fixes #7234.
      
      LGTM=dvyukov
      R=golang-codereviews, dvyukov, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/58410043
      1683dab7
    • David du Colombier's avatar
      net/http: temporarily disable the failing tests on Plan 9 · 73b0d84c
      David du Colombier authored
      Update #7237
      
      LGTM=bradfitz
      R=jas, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/57190045
      73b0d84c
    • Dmitriy Vyukov's avatar
      runtime: increase page size to 8K · e48751e2
      Dmitriy Vyukov authored
      Tcmalloc uses 8K, 32K and 64K pages, and in custom setups 256K pages.
      Only Chromium uses 4K pages today (in "slow but small" configuration).
      The general tendency is to increase page size, because it reduces
      metadata size and DTLB pressure.
      This change reduces GC pause by ~10% and slightly improves other metrics.
      
      json-1
      allocated                 8037492      8038689      +0.01%
      allocs                     105762       105573      -0.18%
      cputime                 158400000    155800000      -1.64%
      gc-pause-one              4412234      4135702      -6.27%
      gc-pause-total            2647340      2398707      -9.39%
      rss                      54923264     54525952      -0.72%
      sys-gc                    3952624      3928048      -0.62%
      sys-heap                 46399488     46006272      -0.85%
      sys-other                 5597504      5290304      -5.49%
      sys-stack                  393216       393216      +0.00%
      sys-total                56342832     55617840      -1.29%
      time                    158478890    156046916      -1.53%
      virtual-mem             256548864    256593920      +0.02%
      
      garbage-1
      allocated                 2991113      2986259      -0.16%
      allocs                      62844        62652      -0.31%
      cputime                  16330000     15860000      -2.88%
      gc-pause-one            789108229    725555211      -8.05%
      gc-pause-total            3945541      3627776      -8.05%
      rss                    1143660544   1132253184      -1.00%
      sys-gc                   65609600     65806208      +0.30%
      sys-heap               1032388608   1035599872      +0.31%
      sys-other                37501632     22777664     -39.26%
      sys-stack                 8650752      8781824      +1.52%
      sys-total              1144150592   1132965568      -0.98%
      time                     16364602     15891994      -2.89%
      virtual-mem            1327296512   1313746944      -1.02%
      
      This is the exact reincarnation of already LGTMed:
      https://golang.org/cl/45770044
      which must not break darwin/freebsd after:
      https://golang.org/cl/56630043
      TBR=iant
      
      LGTM=khr, iant
      R=iant, khr
      CC=golang-codereviews
      https://golang.org/cl/58230043
      e48751e2
    • Brad Fitzpatrick's avatar
      net/http: use a struct instead of a string in transport conn cache key · ae8251b0
      Brad Fitzpatrick authored
      The Transport's idle connection cache is keyed by a string,
      for pre-Go 1.0 reasons.  Ever since Go has been able to use
      structs as map keys, there's been a TODO in the code to use
      structs instead of allocating strings. This change does that.
      
      Saves 3 allocatins and ~100 bytes of garbage per client
      request. But because string hashing is so fast these days
      (thanks, Keith), the performance is a wash: what we gain
      on GC and not allocating, we lose in slower hashing. (hashing
      structs of strings is slower than 1 string)
      
      This seems a bit faster usually, but I've also seen it be a
      bit slower. But at least it's how I've wanted it now, and it
      the allocation improvements are consistent.
      
      LGTM=adg
      R=adg
      CC=golang-codereviews
      https://golang.org/cl/58260043
      ae8251b0
    • Rémy Oudompheng's avatar
      encoding/gob: fix two crashes on corrupted data. · 7a73f327
      Rémy Oudompheng authored
      Fixes #6323.
      
      LGTM=r
      R=r
      CC=golang-codereviews
      https://golang.org/cl/56870043
      7a73f327
    • Jeff Sickel's avatar
      net: net: better IPv4 stack probe on Plan 9 · 1e89eb2c
      Jeff Sickel authored
      LGTM=mischief, mikioh.mikioh
      R=golang-codereviews, 0intro, mischief, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/53960044
      1e89eb2c
    • Rob Pike's avatar
      cmd/8g: don't crash if Prog->u.branch is nil · 289d4639
      Rob Pike authored
      The code is copied from cmd/6g.
      Empirically, all branch targets are nil in this code so
      something is still wrong, but at least this stops 8g -S
      from crashing.
      
      Update #7178
      
      LGTM=dave, iant
      R=iant, dave
      CC=golang-codereviews
      https://golang.org/cl/58400043
      289d4639
  2. 29 Jan, 2014 5 commits
  3. 28 Jan, 2014 10 commits
  4. 27 Jan, 2014 11 commits
  5. 25 Jan, 2014 2 commits
  6. 24 Jan, 2014 4 commits
    • Dmitriy Vyukov's avatar
      runtime: combine small NoScan allocations · 1fa70294
      Dmitriy Vyukov authored
      Combine NoScan allocations < 16 bytes into a single memory block.
      Reduces number of allocations on json/garbage benchmarks by 10+%.
      
      json-1
      allocated                 8039872      7949194      -1.13%
      allocs                     105774        93776     -11.34%
      cputime                 156200000    100700000     -35.53%
      gc-pause-one              4908873      3814853     -22.29%
      gc-pause-total            2748969      2899288      +5.47%
      rss                      52674560     43560960     -17.30%
      sys-gc                    3796976      3256304     -14.24%
      sys-heap                 43843584     35192832     -19.73%
      sys-other                 5589312      5310784      -4.98%
      sys-stack                  393216       393216      +0.00%
      sys-total                53623088     44153136     -17.66%
      time                    156193436    100886714     -35.41%
      virtual-mem             256548864    256540672      -0.00%
      
      garbage-1
      allocated                 2996885      2932982      -2.13%
      allocs                      62904        55200     -12.25%
      cputime                  17470000     17400000      -0.40%
      gc-pause-one            932757485    925806143      -0.75%
      gc-pause-total            4663787      4629030      -0.75%
      rss                    1151074304   1133670400      -1.51%
      sys-gc                   66068352     65085312      -1.49%
      sys-heap               1039728640   1024065536      -1.51%
      sys-other                38038208     37485248      -1.45%
      sys-stack                 8650752      8781824      +1.52%
      sys-total              1152485952   1135417920      -1.48%
      time                     17478088     17418005      -0.34%
      virtual-mem            1343709184   1324204032      -1.45%
      
      LGTM=iant, bradfitz
      R=golang-codereviews, dave, iant, rsc, bradfitz
      CC=golang-codereviews, khr
      https://golang.org/cl/38750047
      1fa70294
    • Dmitriy Vyukov's avatar
      sync: scalable Pool · f8e0057b
      Dmitriy Vyukov authored
      Introduce fixed-size P-local caches.
      When local caches overflow/underflow a batch of items
      is transferred to/from global mutex-protected cache.
      
      benchmark                    old ns/op    new ns/op    delta
      BenchmarkPool                    50554        22423  -55.65%
      BenchmarkPool-4                 400359         5904  -98.53%
      BenchmarkPool-16                403311         1598  -99.60%
      BenchmarkPool-32                367310         1526  -99.58%
      
      BenchmarkPoolOverlflow            5214         3633  -30.32%
      BenchmarkPoolOverlflow-4         42663         9539  -77.64%
      BenchmarkPoolOverlflow-8         46919        11385  -75.73%
      BenchmarkPoolOverlflow-16        39454        13048  -66.93%
      
      BenchmarkSprintfEmpty                    84           63  -25.68%
      BenchmarkSprintfEmpty-2                 371           32  -91.13%
      BenchmarkSprintfEmpty-4                 465           22  -95.25%
      BenchmarkSprintfEmpty-8                 565           12  -97.77%
      BenchmarkSprintfEmpty-16                498            5  -98.87%
      BenchmarkSprintfEmpty-32                492            4  -99.04%
      
      BenchmarkSprintfString                  259          229  -11.58%
      BenchmarkSprintfString-2                574          144  -74.91%
      BenchmarkSprintfString-4                651           77  -88.05%
      BenchmarkSprintfString-8                868           47  -94.48%
      BenchmarkSprintfString-16               825           33  -95.96%
      BenchmarkSprintfString-32               825           30  -96.28%
      
      BenchmarkSprintfInt                     213          188  -11.74%
      BenchmarkSprintfInt-2                   448          138  -69.20%
      BenchmarkSprintfInt-4                   624           52  -91.63%
      BenchmarkSprintfInt-8                   691           31  -95.43%
      BenchmarkSprintfInt-16                  724           18  -97.46%
      BenchmarkSprintfInt-32                  718           16  -97.70%
      
      BenchmarkSprintfIntInt                  311          282   -9.32%
      BenchmarkSprintfIntInt-2                333          145  -56.46%
      BenchmarkSprintfIntInt-4                642          110  -82.87%
      BenchmarkSprintfIntInt-8                832           42  -94.90%
      BenchmarkSprintfIntInt-16               817           24  -97.00%
      BenchmarkSprintfIntInt-32               805           22  -97.17%
      
      BenchmarkSprintfPrefixedInt             309          269  -12.94%
      BenchmarkSprintfPrefixedInt-2           245          168  -31.43%
      BenchmarkSprintfPrefixedInt-4           598           99  -83.36%
      BenchmarkSprintfPrefixedInt-8           770           67  -91.23%
      BenchmarkSprintfPrefixedInt-16          829           54  -93.49%
      BenchmarkSprintfPrefixedInt-32          824           50  -93.83%
      
      BenchmarkSprintfFloat                   418          398   -4.78%
      BenchmarkSprintfFloat-2                 295          203  -31.19%
      BenchmarkSprintfFloat-4                 585          128  -78.12%
      BenchmarkSprintfFloat-8                 873           60  -93.13%
      BenchmarkSprintfFloat-16                884           33  -96.24%
      BenchmarkSprintfFloat-32                881           29  -96.62%
      
      BenchmarkManyArgs                      1097         1069   -2.55%
      BenchmarkManyArgs-2                     705          567  -19.57%
      BenchmarkManyArgs-4                     792          319  -59.72%
      BenchmarkManyArgs-8                     963          172  -82.14%
      BenchmarkManyArgs-16                   1115          103  -90.76%
      BenchmarkManyArgs-32                   1133           90  -92.03%
      
      LGTM=rsc
      R=golang-codereviews, bradfitz, minux.ma, gobot, rsc
      CC=golang-codereviews
      https://golang.org/cl/46010043
      f8e0057b
    • Dmitriy Vyukov's avatar
      runtime: do not zero terminate strings · 9fa9613e
      Dmitriy Vyukov authored
      On top of "tiny allocator" (cl/38750047), reduces number of allocs by 1% on json.
      No code must rely on zero termination. So will also make debugging simpler,
      by uncovering issues earlier.
      
      json-1
      allocated                 7949686      7915766      -0.43%
      allocs                      93778        92790      -1.05%
      time                    100957795     97250949      -3.67%
      rest of the metrics are too noisy.
      
      LGTM=r
      R=golang-codereviews, r, bradfitz, iant
      CC=golang-codereviews
      https://golang.org/cl/40370061
      9fa9613e
    • Russ Cox's avatar
      cmd/gc: add zeroing to enable precise stack accounting · a81692e2
      Russ Cox authored
      There is more zeroing than I would like right now -
      temporaries used for the new map and channel runtime
      calls need to be eliminated - but it will do for now.
      
      This CL only has an effect if you are building with
      
              GOEXPERIMENT=precisestack ./all.bash
      
      (or make.bash). It costs about 5% in the overall time
      spent in all.bash. That number will come down before
      we make it on by default, but this should be enough for
      Keith to try using the precise maps for copying stacks.
      
      amd64 only (and it's not really great generated code).
      
      TBR=khr, iant
      CC=golang-codereviews
      https://golang.org/cl/56430043
      a81692e2