1. 28 Feb, 2011 1 commit
    • Russ Cox's avatar
      runtime: idle goroutine · 582fd17e
      Russ Cox authored
      This functionality might be used in environments
      where programs are limited to a single thread,
      to simulate a select-driven network server.  It is
      not exposed via the standard runtime API.
      
      R=r, r2
      CC=golang-dev
      https://golang.org/cl/4254041
      582fd17e
  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 11 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
    • Russ Cox's avatar
      5g: fix optimizer bug · 63c24081
      Russ Cox authored
      same as in issue below, never fixed on ARM
      
      changeset:   5498:3fa1372ca694
      user:        Ken Thompson <ken@golang.org>
      date:        Thu May 20 17:31:28 2010 -0700
      
      description:
      fix issue 798
      cannot allocate an audomatic temp
      while real registers are allocated.
      there is a chance that the automatic
      will be allocated to one of the
      allocated registers. the fix is to
      not registerize such variables.
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/1202042
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/4226042
      63c24081
    • Robert Griesemer's avatar
      sync: make package comment appear · 9fc0f159
      Robert Griesemer authored
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4220044
      9fc0f159
    • Rob Pike's avatar
      gob: protect against pure recursive types. · c9b90c9d
      Rob Pike authored
      There are further changes required for things like
      recursive map types.  Recursive struct types work
      but the mechanism needs generalization.  The
      case handled in this CL is pathological since it
      cannot be represented at all by gob, so it should
      be handled separately. (Prior to this CL, encode
      would recur forever.)
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/4206041
      c9b90c9d