1. 28 Feb, 2011 4 commits
  2. 26 Feb, 2011 1 commit
    • Nigel Tao's avatar
      compress/lzw: don't use a closure in NewReader, which avoids having · fdbbb066
      Nigel Tao authored
      to move some variables from the stack to the heap.
      
      Sorted benchmark runs on my 2007-era Mac Mini (GOARCH=amd64, GOOS=linux):
      
      Before:
      lzw.BenchmarkDecoder        2000        878176 ns/op
      lzw.BenchmarkDecoder        2000        878415 ns/op
      lzw.BenchmarkDecoder        2000        880352 ns/op
      lzw.BenchmarkDecoder        2000        898445 ns/op
      lzw.BenchmarkDecoder        2000        901728 ns/op
      
      After:
      lzw.BenchmarkDecoder        2000        859065 ns/op
      lzw.BenchmarkDecoder        2000        859402 ns/op
      lzw.BenchmarkDecoder        2000        860035 ns/op
      lzw.BenchmarkDecoder        2000        860555 ns/op
      lzw.BenchmarkDecoder        2000        861109 ns/op
      
      The ratio of before/after median times is 1.024.
      
      The runtime.MemStats.Mallocs delta per loop drops from 109 to 104.
      
      R=r, r2, dfc
      CC=golang-dev
      https://golang.org/cl/4253043
      fdbbb066
  3. 25 Feb, 2011 17 commits
  4. 24 Feb, 2011 10 commits
  5. 23 Feb, 2011 8 commits
    • Alex Brainman's avatar
      net: *netFD.Read to return os.EOF on eof (fixes windows build) · 162d510d
      Alex Brainman authored
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/4210041
      162d510d
    • Brad Fitzpatrick's avatar
      http: set method GET on Get() requests · c7978584
      Brad Fitzpatrick authored
      R=adg, bradfitzwork
      CC=golang-dev
      https://golang.org/cl/4229042
      c7978584
    • Russ Cox's avatar
      build: remove _gcc_main.c during make clean · 8b8d5e9e
      Russ Cox authored
      R=r, r2
      CC=golang-dev
      https://golang.org/cl/4226043
      8b8d5e9e
    • Russ Cox's avatar
      runtime: always run stackalloc on scheduler stack · b5dfac45
      Russ Cox authored
      Avoids deadlocks like the one below, in which a stack split happened
      in order to call lock(&stacks), but then the stack unsplit cannot run
      because stacks is now locked.
      
      The only code calling stackalloc that wasn't on a scheduler
      stack already was malg, which creates a new goroutine.
      
      runtime.futex+0x23 /home/rsc/g/go/src/pkg/runtime/linux/amd64/sys.s:139
             runtime.futex()
      futexsleep+0x50 /home/rsc/g/go/src/pkg/runtime/linux/thread.c:51
             futexsleep(0x5b0188, 0x300000003, 0x100020000, 0x4159e2)
      futexlock+0x85 /home/rsc/g/go/src/pkg/runtime/linux/thread.c:119
             futexlock(0x5b0188, 0x5b0188)
      runtime.lock+0x56 /home/rsc/g/go/src/pkg/runtime/linux/thread.c:158
             runtime.lock(0x5b0188, 0x7f0d27b4a000)
      runtime.stackfree+0x4d /home/rsc/g/go/src/pkg/runtime/malloc.goc:336
             runtime.stackfree(0x7f0d27b4a000, 0x1000, 0x8, 0x7fff37e1e218)
      runtime.oldstack+0xa6 /home/rsc/g/go/src/pkg/runtime/proc.c:705
             runtime.oldstack()
      runtime.lessstack+0x22 /home/rsc/g/go/src/pkg/runtime/amd64/asm.s:224
             runtime.lessstack()
      ----- lessstack called from goroutine 2 -----
      runtime.lock+0x56 /home/rsc/g/go/src/pkg/runtime/linux/thread.c:158
             runtime.lock(0x5b0188, 0x40a5e2)
      runtime.stackalloc+0x55 /home/rsc/g/go/src/pkg/runtime/malloc.c:316
             runtime.stackalloc(0x1000, 0x4055b0)
      runtime.malg+0x3d /home/rsc/g/go/src/pkg/runtime/proc.c:803
             runtime.malg(0x1000, 0x40add9)
      runtime.newproc1+0x12b /home/rsc/g/go/src/pkg/runtime/proc.c:854
             runtime.newproc1(0xf840027440, 0x7f0d27b49230, 0x0, 0x49f238, 0x40, ...)
      runtime.newproc+0x2f /home/rsc/g/go/src/pkg/runtime/proc.c:831
             runtime.newproc(0x0, 0xf840027440, 0xf800000010, 0x44b059)
      ...
      
      R=r, r2
      CC=golang-dev
      https://golang.org/cl/4216045
      b5dfac45
    • Russ Cox's avatar
      runtime: omit breakpoint during terminal panic · 59ce067d
      Russ Cox authored
      A terminal panic (one that prints a stack trace and exits)
      has been calling runtime.breakpoint before calling exit,
      so that if running under a debugger, the debugger can
      take control.  When not running under a debugger, though,
      this causes an additional SIGTRAP on Unix and pop-up
      dialogs on Windows.
      
      Support for debugging Go programs has gotten good
      enough that we can rely on the debugger to set its own
      breakpoint on runtime.exit if it wants to look around.
      
      R=r, r2
      CC=golang-dev
      https://golang.org/cl/4222043
      59ce067d
    • Brad Fitzpatrick's avatar
      http: introduce start of Client and ClientTransport · e0a2c5d4
      Brad Fitzpatrick authored
      Much yet to come, but this is a safe first step, introducing
      an in-the-future configurable Client object (where policy for
      cookies, auth, redirects will live) as well as introducing a
      ClientTransport interface for sending requests.
      
      The CL intentionally ignores everything around the creation
      and configuration of Clients and merely ports/wraps the old
      interfaces to/around Client/ClientTransport.
      
      R=rsc, dsymonds, nigeltao, bradfitzwork
      CC=golang-dev
      https://golang.org/cl/4182086
      e0a2c5d4
    • Russ Cox's avatar
      runtime: pass to signal handler value of g at time of signal · 690291a2
      Russ Cox authored
      The existing code assumed that signals only arrived
      while executing on the goroutine stack (g == m->curg),
      not while executing on the scheduler stack (g == m->g0).
      
      Most of the signal handling trampolines correctly saved
      and restored g already, but the sighandler C code did not
      have access to it.
      
      Some rewriting of assembly to make the various
      implementations as similar as possible.
      
      Will need to change Windows too but I don't
      understand how sigtramp gets called there.
      
      R=r
      CC=golang-dev
      https://golang.org/cl/4203042
      690291a2
    • Russ Cox's avatar
      runtime: traceback through active lessstack · 4b376ef3
      Russ Cox authored
      With this change, a panic trace due to a signal arriving while
      running on the scheduler stack during a lessstack
      (a stack unsplit) will trace through the lessstack to show
      the state of the goroutine that was unsplitting its stack.
      
      R=r
      CC=golang-dev
      https://golang.org/cl/4206042
      4b376ef3