1. 21 Mar, 2013 5 commits
    • Dmitriy Vyukov's avatar
      runtime: explicitly remove fd's from epoll waitset before close() · 44840786
      Dmitriy Vyukov authored
      Fixes #5061.
      
      Current code relies on the fact that fd's are automatically removed from epoll set when closed. However, it is not true. Underlying file description is removed from epoll set only when *all* fd's referring to it are closed.
      
      There are 2 bad consequences:
      1. Kernel delivers notifications on already closed fd's.
      2. The following sequence of events leads to error:
         - add fd1 to epoll
         - dup fd1 = fd2
         - close fd1 (not removed from epoll since we've dup'ed the fd)
         - dup fd2 = fd1 (get the same fd as fd1)
         - add fd1 to epoll = EEXIST
      
      So, if fd can be potentially dup'ed of fork'ed, it's necessary to explicitly remove the fd from epoll set.
      
      R=golang-dev, bradfitz, dave
      CC=golang-dev
      https://golang.org/cl/7870043
      44840786
    • Dmitriy Vyukov's avatar
      runtime: faster parallel GC · d4c80d19
      Dmitriy Vyukov authored
      Use per-thread work buffers instead of global mutex-protected pool. This eliminates contention from parallel scan phase.
      
      benchmark                             old ns/op    new ns/op    delta
      garbage.BenchmarkTree2-8               97100768     71417553  -26.45%
      garbage.BenchmarkTree2LastPause-8     970931485    714103692  -26.45%
      garbage.BenchmarkTree2Pause-8         469127802    345029253  -26.45%
      garbage.BenchmarkParser-8            2880950854   2715456901   -5.74%
      garbage.BenchmarkParserLastPause-8    137047399    103336476  -24.60%
      garbage.BenchmarkParserPause-8         80686028     58922680  -26.97%
      
      R=golang-dev, 0xe2.0x9a.0x9b, dave, adg, rsc, iant
      CC=golang-dev
      https://golang.org/cl/7816044
      d4c80d19
    • Rémy Oudompheng's avatar
      cmd/gc: implement more cases in racewalk. · 656bc3eb
      Rémy Oudompheng authored
      Add missing CLOSUREVAR in switch.
      Mark MAKE, string conversion nodes as impossible.
      Control statements do not need instrumentation.
      Instrument COM and LROT nodes.
      Instrument map length.
      
      Update #4228
      
      R=dvyukov, golang-dev
      CC=golang-dev
      https://golang.org/cl/7504047
      656bc3eb
    • Brad Fitzpatrick's avatar
      crypto/tls: use method values · 76d5e2ce
      Brad Fitzpatrick authored
      Currently fails with a compiler error, though.
      
      R=golang-dev, agl, rsc
      CC=golang-dev
      https://golang.org/cl/7933043
      76d5e2ce
    • Russ Cox's avatar
      cmd/gc: fix escape analysis of method values · 38e9b077
      Russ Cox authored
      R=ken2
      CC=golang-dev
      https://golang.org/cl/7518050
      38e9b077
  2. 20 Mar, 2013 17 commits
  3. 19 Mar, 2013 18 commits