1. 04 Apr, 2014 8 commits
    • Jan Ziak's avatar
      cmd/gc: check duplicate keys in maps with interface{} key type · 3072df5c
      Jan Ziak authored
      Fixes #7214
      
      LGTM=rsc
      R=golang-codereviews, bradfitz, rsc
      CC=golang-codereviews, minux.ma
      https://golang.org/cl/82080044
      3072df5c
    • Rémy Oudompheng's avatar
      cmd/6g, cmd/8g: disable Duff's device on NaCl. · c6a41a35
      Rémy Oudompheng authored
      Native Client forbids jumps/calls to arbitrary locations and
      enforces a particular alignement, which makes the Duff's device
      ineffective.
      
      LGTM=khr
      R=rsc, dave, khr
      CC=golang-codereviews
      https://golang.org/cl/84400043
      c6a41a35
    • Alex Brainman's avatar
      net: fix format string in TestAcceptIgnoreSomeErrors · e25d73d7
      Alex Brainman authored
      LGTM=mikioh.mikioh
      R=golang-codereviews, mikioh.mikioh
      CC=golang-codereviews
      https://golang.org/cl/84340043
      e25d73d7
    • Alex Brainman's avatar
      os/exec: always try appropriate command extensions during Cmd.Start on windows · df8ec65b
      Alex Brainman authored
      Update #7362
      Fixes #7377
      Fixes #7570
      
      LGTM=rsc
      R=golang-codereviews, rsc
      CC=golang-codereviews
      https://golang.org/cl/83020043
      df8ec65b
    • Mikio Hara's avatar
      net: drop unnecessary indirection from PacketConn tests · 72dbc4cc
      Mikio Hara authored
      LGTM=iant
      R=golang-codereviews, iant
      CC=golang-codereviews
      https://golang.org/cl/83880043
      72dbc4cc
    • Mikio Hara's avatar
      cmd/gc: fix build · 22bc710f
      Mikio Hara authored
      LGTM=minux.ma
      R=rsc, minux.ma
      CC=golang-codereviews
      https://golang.org/cl/84260043
      22bc710f
    • Russ Cox's avatar
      cmd/gc, runtime: make GODEBUG=gcdead=1 mode work with liveness · 28f1868f
      Russ Cox authored
      Trying to make GODEBUG=gcdead=1 work with liveness
      and in particular ambiguously live variables.
      
      1. In the liveness computation, mark all ambiguously live
      variables as live for the entire function, except the entry.
      They are zeroed directly after entry, and we need them not
      to be poisoned thereafter.
      
      2. In the liveness computation, compute liveness (and deadness)
      for all parameters, not just pointer-containing parameters.
      Otherwise gcdead poisons untracked scalar parameters and results.
      
      3. Fix liveness debugging print for -live=2 to use correct bitmaps.
      (Was not updated for compaction during compaction CL.)
      
      4. Correct varkill during map literal initialization.
      Was killing the map itself instead of the inserted value temp.
      
      5. Disable aggressive varkill cleanup for call arguments if
      the call appears in a defer or go statement.
      
      6. In the garbage collector, avoid bug scanning empty
      strings. An empty string is two zeros. The multiword
      code only looked at the first zero and then interpreted
      the next two bits in the bitmap as an ordinary word bitmap.
      For a string the bits are 11 00, so if a live string was zero
      length with a 0 base pointer, the poisoning code treated
      the length as an ordinary word with code 00, meaning it
      needed poisoning, turning the string into a poison-length
      string with base pointer 0. By the same logic I believe that
      a live nil slice (bits 11 01 00) will have its cap poisoned.
      Always scan full multiword struct.
      
      7. In the runtime, treat both poison words (PoisonGC and
      PoisonStack) as invalid pointers that warrant crashes.
      
      Manual testing as follows:
      
      - Create a script called gcdead on your PATH containing:
      
              #!/bin/bash
              GODEBUG=gcdead=1 GOGC=10 GOTRACEBACK=2 exec "$@"
      - Now you can build a test and then run 'gcdead ./foo.test'.
      - More importantly, you can run 'go test -short -exec gcdead std'
         to run all the tests.
      
      Fixes #7676.
      
      While here, enable the precise scanning of slices, since that was
      disabled due to bugs like these. That now works, both with and
      without gcdead.
      
      Fixes #7549.
      
      LGTM=khr
      R=khr
      CC=golang-codereviews
      https://golang.org/cl/83410044
      28f1868f
    • Mikio Hara's avatar
      net: don't export netFD closeRead and closeWrite methods · ebe5f203
      Mikio Hara authored
      LGTM=iant
      R=iant
      CC=golang-codereviews
      https://golang.org/cl/83910043
      ebe5f203
  2. 03 Apr, 2014 20 commits
  3. 02 Apr, 2014 12 commits
    • Dave Cheney's avatar
      cmd/pack: fix format string error in log message · 1aaea50c
      Dave Cheney authored
      Fixes #7693.
      
      pack.go:347: possible formatting directive in Fatal call
      
      LGTM=iant
      R=golang-codereviews, iant
      CC=golang-codereviews
      https://golang.org/cl/83310045
      1aaea50c
    • Brad Fitzpatrick's avatar
      crypto/tls: deflake TestConnReadNonzeroAndEOF · 84db9e09
      Brad Fitzpatrick authored
      Fixes #7683
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/83080048
      84db9e09
    • Russ Cox's avatar
      runtime: revert change to PoisonPtr value · 81bc9b3f
      Russ Cox authored
      Submitted accidentally in CL 83630044.
      Fixes various builds.
      
      TBR=khr
      CC=golang-codereviews
      https://golang.org/cl/83100047
      81bc9b3f
    • Russ Cox's avatar
      cmd/gc, cmd/ld, runtime: compact liveness bitmaps · 4676fae5
      Russ Cox authored
      Reduce footprint of liveness bitmaps by about 5x.
      
      1. Mark all liveness bitmap symbols as 4-byte aligned
      (they were aligned to a larger size by default).
      
      2. The bitmap data is a bitmap count n followed by n bitmaps.
      Each bitmap begins with its own count m giving the number
      of bits. All the m's are the same for the n bitmaps.
      Emit this bitmap length once instead of n times.
      
      3. Many bitmaps within a function have the same bit values,
      but each call site was given a distinct bitmap. Merge duplicate
      bitmaps so that no bitmap is written more than once.
      
      4. Many functions end up with the same aggregate bitmap data.
      We used to name the bitmap data funcname.gcargs and funcname.gclocals.
      Instead, name it gclocals.<md5 of data> and mark it dupok so
      that the linker coalesces duplicate sets. This cut the bitmap
      data remaining after step 3 by 40%; I was not expecting it to
      be quite so dramatic.
      
      Applied to "go build -ldflags -w code.google.com/p/go.tools/cmd/godoc":
      
                      bitmaps           pclntab           binary on disk
      before this CL  1326600           1985854           12738268
      4-byte align    1154288 (0.87x)   1985854 (1.00x)   12566236 (0.99x)
      one bitmap len   782528 (0.54x)   1985854 (1.00x)   12193500 (0.96x)
      dedup bitmap     414748 (0.31x)   1948478 (0.98x)   11787996 (0.93x)
      dedup bitmap set 245580 (0.19x)   1948478 (0.98x)   11620060 (0.91x)
      
      While here, remove various dead blocks of code from plive.c.
      
      Fixes #6929.
      Fixes #7568.
      
      LGTM=khr
      R=khr
      CC=golang-codereviews
      https://golang.org/cl/83630044
      4676fae5
    • David du Colombier's avatar
      cmd/8g, cmd/gc: fix warnings on Plan 9 · 9f9c9abb
      David du Colombier authored
      warning: src/cmd/8g/ggen.c:35 non-interruptable temporary
      warning: src/cmd/gc/walk.c:656 set and not used: l
      warning: src/cmd/gc/walk.c:658 set and not used: l
      
      LGTM=minux.ma
      R=golang-codereviews, minux.ma
      CC=golang-codereviews
      https://golang.org/cl/83660043
      9f9c9abb
    • Russ Cox's avatar
      cmd/gc: shorten even more temporary lifetimes · 96d90d09
      Russ Cox authored
      1. Use n->alloc, not n->left, to hold the allocated temp being
      passed from orderstmt/orderexpr to walk.
      
      2. Treat method values the same as closures.
      
      3. Use killed temporary for composite literal passed to
      non-escaping function argument.
      
      4. Clean temporaries promptly in if and for statements.
      
      5. Clean temporaries promptly in select statements.
      As part of this, move all the temporary-generating logic
      out of select.c into order.c, so that the temporaries can
      be reclaimed.
      
      With the new temporaries, can re-enable the 1-entry
      select optimization. Fixes issue 7672.
      
      While we're here, fix a 1-line bug in select processing
      turned up by the new liveness test (but unrelated; select.c:72).
      Fixes #7686.
      
      6. Clean temporaries (but not particularly promptly) in switch
      and range statements.
      
      7. Clean temporary used during convT2E/convT2I.
      
      8. Clean temporaries promptly during && and || expressions.
      
      ---
      
      CL 81940043 reduced the number of ambiguously live temps
      in the godoc binary from 860 to 711.
      
      CL 83090046 reduced the number from 711 to 121.
      
      This CL reduces the number from 121 to 23.
      
      15 the 23 that remain are in fact ambiguously live.
      The final 8 could be fixed but are not trivial and
      not common enough to warrant work at this point
      in the release cycle.
      
      These numbers only count ambiguously live temps,
      not ambiguously live user-declared variables.
      There are 18 such variables in the godoc binary after this CL,
      so a total of 41 ambiguously live temps or user-declared
      variables.
      
      The net effect is that zeroing anything on entry to a function
      should now be a rare event, whereas earlier it was the
      common case.
      
      This is good enough for Go 1.3, and probably good
      enough for future releases too.
      
      Fixes #7345.
      
      LGTM=khr
      R=khr
      CC=golang-codereviews
      https://golang.org/cl/83000048
      96d90d09
    • Keith Randall's avatar
      cmd/gc: Don't zero more than we need. · 47acf167
      Keith Randall authored
      Don't merge with the zero range, we may
      end up zeroing more than we need.
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/83430044
      47acf167
    • Mikio Hara's avatar
      net: enable unixpacket test on available platforms · e88e7ed6
      Mikio Hara authored
      DragonFlyBSD, FreeBSD 9 and beyond, NetBSD 6 and beyond, and
      Solaris (illumos) support AF_UNIX+SOCK_SEQPACKET socket.
      
      LGTM=dave
      R=golang-codereviews, dave
      CC=golang-codereviews
      https://golang.org/cl/83390043
      e88e7ed6
    • Mikio Hara's avatar
      net: make WriteTo, WriteToUnix and WriteMsgUnix fail when connectionless-mode… · 67a51810
      Mikio Hara authored
      net: make WriteTo, WriteToUnix and WriteMsgUnix fail when connectionless-mode UnixConn is already connected
      
      This CL tries to fill the gap between Linux and other Unix-like systems
      in the same way UDPConn already did.
      
      Fixes #7677.
      
      LGTM=iant
      R=golang-codereviews, iant
      CC=golang-codereviews
      https://golang.org/cl/83330045
      67a51810
    • Dmitriy Vyukov's avatar
      runtime: ignore pointers to global objects in SetFinalizer · f4ef6977
      Dmitriy Vyukov authored
      Update #7656
      
      LGTM=rsc
      R=rsc, iant
      CC=golang-codereviews
      https://golang.org/cl/82560043
      f4ef6977
    • Keith Randall's avatar
      runtime: zero at start of frame more efficiently. · 383963b5
      Keith Randall authored
      Use Duff's device for zeroing.  Combine adjacent regions.
      
      Update #7680
      Update #7624
      
      LGTM=rsc
      R=rsc
      CC=golang-codereviews
      https://golang.org/cl/83200045
      383963b5
    • Russ Cox's avatar
      cmd/5g, cmd/8g: fix build · 9c8f11ff
      Russ Cox authored
      Botched during CL 83090046.
      
      TBR=khr
      CC=golang-codereviews
      https://golang.org/cl/83070046
      9c8f11ff