1. 19 Nov, 2014 1 commit
  2. 18 Nov, 2014 10 commits
  3. 17 Nov, 2014 2 commits
  4. 16 Nov, 2014 1 commit
    • David du Colombier's avatar
      [dev.cc] cmd/8g: work around "out of fixed registers" on Plan 9 · 7aa89ea7
      David du Colombier authored
      This change works around the "out of fixed registers"
      issue with the Plan 9 C compiler on 386, introduced by
      the Bits change to uint64 in CL 169060043.
      
      The purpose of this CL is to be able to properly
      follow the conversion of the Plan 9 runtime to Go
      on the Plan 9 builders.
      
      This CL could be reverted once the Go compilers will
      be converted to Go.
      
      Thanks to Nick Owens for investigating this issue.
      
      LGTM=rsc
      R=rsc
      CC=austin, golang-codereviews, mischief
      https://golang.org/cl/177860043
      7aa89ea7
  5. 15 Nov, 2014 1 commit
  6. 14 Nov, 2014 11 commits
  7. 13 Nov, 2014 7 commits
    • Austin Clements's avatar
      [dev.power64] 9g: implement regopt · 743bdf61
      Austin Clements authored
      This adds registerization support to 9g equivalent to what the
      other compilers have.
      
      LGTM=rsc
      R=rsc, dave
      CC=golang-codereviews
      https://golang.org/cl/174980043
      743bdf61
    • Austin Clements's avatar
      [dev.power64] 9l: remove enum as's tag for c2go · 231b8d61
      Austin Clements authored
      None of the other compilers have a tag for this enum.
      Cleaning all of this up to use proper types will happen after
      the conversion.
      
      LGTM=minux, rsc
      R=rsc, minux
      CC=golang-codereviews
      https://golang.org/cl/166690043
      231b8d61
    • Austin Clements's avatar
      [dev.power64] 6g,8g: remove unnecessary and incorrect reg use scanning · c3dadb3d
      Austin Clements authored
      Previously, the 6g and 8g registerizers scanned for used
      registers beyond the end of a region being considered for
      registerization.  This ancient artifact was copied from the C
      compilers, where it was probably necessary to track implicitly
      used registers.  In the Go compilers it's harmless (because it
      can only over-restrict the set of available registers), but no
      longer necessary because the Go compilers correctly track
      register use/set information.  The consequences of this extra
      scan were (at least) that 1) we would not consider allocating
      the AX register if there was a deferproc call in the future
      because deferproc uses AX as a return register, so we see the
      use of AX, but don't track that AX is set by the CALL, and 2)
      we could not consider allocating the DX register if there was
      a MUL in the future because MUL implicitly sets DX and (thanks
      to an abuse of copyu in this code) we would also consider DX
      used.
      
      This commit fixes these problems by nuking this code.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/174110043
      c3dadb3d
    • Joel Sing's avatar
      [dev.cc] runtime: make SIGSYS notifiable on freebsd (again) · b2ec4cf5
      Joel Sing authored
      This was originally done to the C port in rev 17d3b45534b5 and
      seemingly got lost during the conversion.
      
      LGTM=bradfitz
      R=rsc, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/167700043
      b2ec4cf5
    • Aram Hăvărneanu's avatar
      [dev.cc] runtime: convert Solaris port to Go · e088e162
      Aram Hăvărneanu authored
      Memory management was consolitated with the BSD ports, since
      it was almost identical.
      
      Assembly thunks are gone, being replaced by the new //go:linkname
      feature.
      
      This change supersedes CL 138390043 (runtime: convert solaris
      netpoll to Go), which was previously reviewed and tested.
      
      This change is only the first step, the port now builds,
      but doesn't run. Binaries fail to exec:
      
          ld.so.1: 6.out: fatal: 6.out: TLS requirement failure : TLS support is unavailable
          Killed
      
      This seems to happen because binaries don't link with libc.so
      anymore. We will have to solve that in a different CL.
      
      Also this change is just a rough translation of the original
      C code, cleanup will come in a different CL.
      
      [This CL is part of the removal of C code from package runtime.
      See golang.org/s/dev.cc for an overview.]
      
      LGTM=rsc
      R=rsc, dave
      CC=golang-codereviews, iant, khr, minux, r, rlh
      https://golang.org/cl/174960043
      e088e162
    • Alex Brainman's avatar
      [dev.cc] runtime: convert mem_windows.c to Go · a0862a17
      Alex Brainman authored
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/175000043
      a0862a17
    • Alex Brainman's avatar
      [dev.cc] runtime: add missing cb_max const · e5d01a5f
      Alex Brainman authored
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/169490043
      e5d01a5f
  8. 12 Nov, 2014 7 commits
    • Austin Clements's avatar
      [dev.power64] liblink: improve documentation of struct Prog · 8c060d93
      Austin Clements authored
      LGTM=dave, rsc
      R=rsc, dave
      CC=golang-codereviews
      https://golang.org/cl/169460043
      8c060d93
    • Joel Sing's avatar
      [dev.cc] [dev.cc] runtime: fix freebsd cgo __progname export · 37cae806
      Joel Sing authored
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/174050043
      37cae806
    • Austin Clements's avatar
      [dev.power64] 9g: proginfo fixes · 60f66aa8
      Austin Clements authored
      For D_OREG addresses, store the used registers in regindex
      instead of reguse because they're really part of addressing.
      
      Add implicit register use/set for DUFFZERO/DUFFCOPY.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/174050044
      60f66aa8
    • Russ Cox's avatar
      [dev.cc] runtime: delete scalararg, ptrarg; rename onM to systemstack · 656be317
      Russ Cox authored
      Scalararg and ptrarg are not "signal safe".
      Go code filling them out can be interrupted by a signal,
      and then the signal handler runs, and if it also ends up
      in Go code that uses scalararg or ptrarg, now the old
      values have been smashed.
      For the pieces of code that do need to run in a signal handler,
      we introduced onM_signalok, which is really just onM
      except that the _signalok is meant to convey that the caller
      asserts that scalarg and ptrarg will be restored to their old
      values after the call (instead of the usual behavior, zeroing them).
      
      Scalararg and ptrarg are also untyped and therefore error-prone.
      
      Go code can always pass a closure instead of using scalararg
      and ptrarg; they were only really necessary for C code.
      And there's no more C code.
      
      For all these reasons, delete scalararg and ptrarg, converting
      the few remaining references to use closures.
      
      Once those are gone, there is no need for a distinction between
      onM and onM_signalok, so replace both with a single function
      equivalent to the current onM_signalok (that is, it can be called
      on any of the curg, g0, and gsignal stacks).
      
      The name onM and the phrase 'm stack' are misnomers,
      because on most system an M has two system stacks:
      the main thread stack and the signal handling stack.
      
      Correct the misnomer by naming the replacement function systemstack.
      
      Fix a few references to "M stack" in code.
      
      The main motivation for this change is to eliminate scalararg/ptrarg.
      Rick and I have already seen them cause problems because
      the calling sequence m.ptrarg[0] = p is a heap pointer assignment,
      so it gets a write barrier. The write barrier also uses onM, so it has
      all the same problems as if it were being invoked by a signal handler.
      We worked around this by saving and restoring the old values
      and by calling onM_signalok, but there's no point in keeping this nice
      home for bugs around any longer.
      
      This CL also changes funcline to return the file name as a result
      instead of filling in a passed-in *string. (The *string signature is
      left over from when the code was written in and called from C.)
      That's arguably an unrelated change, except that once I had done
      the ptrarg/scalararg/onM cleanup I started getting false positives
      about the *string argument escaping (not allowed in package runtime).
      The compiler is wrong, but the easiest fix is to write the code like
      Go code instead of like C code. I am a bit worried that the compiler
      is wrong because of some use of uninitialized memory in the escape
      analysis. If that's the reason, it will go away when we convert the
      compiler to Go. (And if not, we'll debug it the next time.)
      
      LGTM=khr
      R=r, khr
      CC=austin, golang-codereviews, iant, rlh
      https://golang.org/cl/174950043
      656be317
    • Russ Cox's avatar
      [dev.cc] runtime/cgo: add comment about import _ "unsafe" · e98f2d59
      Russ Cox authored
      LGTM=bradfitz, r
      R=r, bradfitz
      CC=golang-codereviews
      https://golang.org/cl/167650043
      e98f2d59
    • Austin Clements's avatar
      [dev.power64] 9g: fix width check and width calculation for OADDR · c1e8c57c
      Austin Clements authored
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/174970043
      c1e8c57c
    • Russ Cox's avatar
      [dev.cc] runtime/cgo: fix freebsd build? · a9695a5d
      Russ Cox authored
      Last try and then someone with a FreeBSD has to do it.
      
      TBR=r
      CC=golang-codereviews
      https://golang.org/cl/171590043
      a9695a5d