1. 25 Mar, 2016 14 commits
    • Richard Miller's avatar
      runtime: avoid fork/exit race in plan9 · 967b9940
      Richard Miller authored
      There's a race between runtime.goexitsall killing all OS processes
      of a go program in order to exit, and runtime.newosproc forking a
      new one.  If the new process has been created but not yet stored
      its pid in m.procid, it will not be killed by goexitsall and
      deadlock results.
      
      This CL prevents the race by making the newly forked process
      check whether the program is exiting.  It also prevents a
      potential "shoot-out" if multiple goroutines call Exit at
      the same time, which could possibly lead to two processes
      killing each other and leaving the rest deadlocked.
      
      Change-Id: I3170b4a62d2461f6b029b3d6aad70373714ed53e
      Reviewed-on: https://go-review.googlesource.com/21135
      Run-TryBot: David du Colombier <0intro@gmail.com>
      Reviewed-by: default avatarMarvin Stenger <marvin.stenger94@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDavid du Colombier <0intro@gmail.com>
      967b9940
    • Dmitry Vyukov's avatar
      runtime: improve randomized stealing logic · ea0386f8
      Dmitry Vyukov authored
      During random stealing we steal 4*GOMAXPROCS times from random procs.
      One would expect that most of the time we check all procs this way,
      but due to low quality PRNG we actually miss procs with frightening
      probability. Below are modelling experiment results for 1e6 tries:
      
      GOMAXPROCS = 2 : missed 1 procs 7944 times
      
      GOMAXPROCS = 3 : missed 1 procs 101620 times
      GOMAXPROCS = 3 : missed 2 procs 3571 times
      
      GOMAXPROCS = 4 : missed 1 procs 63916 times
      GOMAXPROCS = 4 : missed 2 procs 61 times
      GOMAXPROCS = 4 : missed 3 procs 16 times
      
      GOMAXPROCS = 5 : missed 1 procs 133136 times
      GOMAXPROCS = 5 : missed 2 procs 1025 times
      GOMAXPROCS = 5 : missed 3 procs 101 times
      GOMAXPROCS = 5 : missed 4 procs 15 times
      
      GOMAXPROCS = 8 : missed 1 procs 151765 times
      GOMAXPROCS = 8 : missed 2 procs 5057 times
      GOMAXPROCS = 8 : missed 3 procs 1726 times
      GOMAXPROCS = 8 : missed 4 procs 68 times
      
      GOMAXPROCS = 12 : missed 1 procs 199081 times
      GOMAXPROCS = 12 : missed 2 procs 27489 times
      GOMAXPROCS = 12 : missed 3 procs 3113 times
      GOMAXPROCS = 12 : missed 4 procs 233 times
      GOMAXPROCS = 12 : missed 5 procs 9 times
      
      GOMAXPROCS = 16 : missed 1 procs 237477 times
      GOMAXPROCS = 16 : missed 2 procs 30037 times
      GOMAXPROCS = 16 : missed 3 procs 9466 times
      GOMAXPROCS = 16 : missed 4 procs 1334 times
      GOMAXPROCS = 16 : missed 5 procs 192 times
      GOMAXPROCS = 16 : missed 6 procs 5 times
      GOMAXPROCS = 16 : missed 7 procs 1 times
      GOMAXPROCS = 16 : missed 8 procs 1 times
      
      A missed proc won't lead to underutilization because we check all procs
      again after dropping P. But it can lead to an unpleasant situation
      when we miss a proc, drop P, check all procs, discover work, acquire P,
      miss the proc again, repeat.
      
      Improve stealing logic to cover all procs.
      Also don't enter spinning mode and try to steal when there is nobody around.
      
      Change-Id: Ibb6b122cc7fb836991bad7d0639b77c807aab4c2
      Reviewed-on: https://go-review.googlesource.com/20836Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      Reviewed-by: default avatarMarvin Stenger <marvin.stenger94@gmail.com>
      ea0386f8
    • Elias Naur's avatar
      compress/gzip: skip mtime test when GOROOT doesn't exist · 44189299
      Elias Naur authored
      Fixes the iOS builders
      
      Change-Id: I5097ca19048381ffb5a4c5ea038b7c4aa18ee4b7
      Reviewed-on: https://go-review.googlesource.com/21132Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      44189299
    • Marcel van Lohuizen's avatar
      cmd/go: remove double space in template · 4e31221b
      Marcel van Lohuizen authored
      Change-Id: I6113145baa727b9fd103765f74dc5d7af86dfdf8
      Reviewed-on: https://go-review.googlesource.com/21131
      Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      4e31221b
    • Marcel van Lohuizen's avatar
      testing: probe with N=1 · 31e5d835
      Marcel van Lohuizen authored
      Change control flow to probe with N=1. This calls benchFunc
      the same number of times as the old implementation in the
      absence of subbenchmarks.
      
      To be compatible with existing tools, benchmarking only
      prints a line for "leaf" benchmarks. This means, though, that
      the name of a benchmark can only be printed after the first
      iteration.
      
      Issue #14863
      
      Change-Id: Ic7b9b89b058f8ebb5287755f24f9e47df8c9537c
      Reviewed-on: https://go-review.googlesource.com/21043
      Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      31e5d835
    • Marcel van Lohuizen's avatar
      cmd/go: update alldocs.go · 2e79d7fb
      Marcel van Lohuizen authored
      Also added go:generate directive.
      
      Change-Id: Ib1f0eddc75e3c47a4d904786a29b964a35b18456
      Reviewed-on: https://go-review.googlesource.com/21042Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
      2e79d7fb
    • Dominik Honnef's avatar
      all: delete dead non-test code · fdba5a75
      Dominik Honnef authored
      This change removes a lot of dead code. Some of the code has never been
      used, not even when it was first commited. The rest shouldn't have
      survived refactors.
      
      This change doesn't remove unused routines helpful for debugging, nor
      does it remove code that's used in commented out blocks of code that are
      only unused temporarily. Furthermore, unused constants weren't removed
      when they were part of a set of constants from specifications.
      
      One noteworthy omission from this CL are about 1000 lines of unused code
      in cmd/fix, 700 lines of which are the typechecker, which hasn't been
      used ever since the pre-Go 1 fixes have been removed. I wasn't sure if
      this code should stick around for future uses of cmd/fix or be culled as
      well.
      
      Change-Id: Ib714bc7e487edc11ad23ba1c3222d1fd02e4a549
      Reviewed-on: https://go-review.googlesource.com/20926Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      fdba5a75
    • Dmitry Chestnykh's avatar
      crypto/hmac: simplify implementation · 6a6a0734
      Dmitry Chestnykh authored
      Store already padded keys instead of storing key and padding it during
      Reset and Sum. This simplifies code and makes Reset-Write-Sum sequences
      faster, which helps /x/crypto/pbkdf2.
      
      HMAC benchmark:
      
      benchmark                    old ns/op     new ns/op     delta
      BenchmarkHMACSHA256_1K-4     7669          7613          -0.73%
      BenchmarkHMACSHA256_32-4     1880          1737          -7.61%
      
      benchmark                    old MB/s     new MB/s     speedup
      BenchmarkHMACSHA256_1K-4     133.52       134.50       1.01x
      BenchmarkHMACSHA256_32-4     17.02        18.41        1.08x
      
      PBKDF2 benchmark:
      
      benchmark                       old ns/op     new ns/op     delta
      BenchmarkPBKDF2HMACSHA256-4     1943196       1807699       -6.97%
      
      Change-Id: I6697028370c226715ab477b0844951a83eb3488c
      Reviewed-on: https://go-review.googlesource.com/21024
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAdam Langley <agl@golang.org>
      6a6a0734
    • John Jeffery's avatar
      reflect: add method StructTag.Lookup · 5c8674a4
      John Jeffery authored
      The Lookup method provides a way to extract a tag value, while
      determining whether the tag key exists in the struct field's tag.
      
      Fixes #14883
      
      Change-Id: I7460cb68f0ca1aaa025935050b9e182efcb64db3
      Reviewed-on: https://go-review.googlesource.com/20864Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5c8674a4
    • Caleb Spare's avatar
      all: zero mtimes in testdata gz files · 139fad21
      Caleb Spare authored
      Fixes #14937.
      
      Change-Id: Iea11a32230d44d5a43f8aec812d25f13bce85895
      Reviewed-on: https://go-review.googlesource.com/21038Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      139fad21
    • Caleb Spare's avatar
      encoding/json: add (*Encoder).Indent · 098b6264
      Caleb Spare authored
      Fixes #6492.
      
      Change-Id: Ibc633c43a6d134bb140addb59780a5758b35a5c5
      Reviewed-on: https://go-review.googlesource.com/21057
      Run-TryBot: Caleb Spare <cespare@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      098b6264
    • Elias Naur's avatar
      cmd/go: remove limits on parallel tasks in the Go command for iOS · ba333a30
      Elias Naur authored
      Ther darwin/arm{,64} exec wrapper now limits the number of concurrent
      executions to 1, so remove the higher level parallel task limit from
      the Go command.
      
      Change-Id: Id84f65c3908305bde0452b3c8db6df8c5a8881bb
      Reviewed-on: https://go-review.googlesource.com/21100Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
      ba333a30
    • Elias Naur's avatar
      misc/cgo/testcarchive: fix build · 95add73a
      Elias Naur authored
      I failed to rebase (and re-test) CL 21102 before submit, which meant
      that two extra tests sneaked into testcarchive that still referenced
      runtime.GOOS and runtime.GOARCH.
      
      Convert the new tests.
      
      While we're here, make sure pending tasks are flushed before running
      the host tests. If not, the "##### misc/cgo/testcarchive" banner
      and "PASS" won't show up in the all.bash output.
      
      Change-Id: I41fc4ec9515f9a193fa052f7c31fac452153c897
      Reviewed-on: https://go-review.googlesource.com/21106
      Run-TryBot: Elias Naur <elias.naur@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      95add73a
    • David Crawshaw's avatar
      cmd/compile, runtime: new static name encoding · 24ce64d1
      David Crawshaw authored
      Create a byte encoding designed for static Go names.
      
      It is intended to be a compact representation of a name
      and optional tag data that can be turned into a Go string
      without allocating, and describes whether or not it is
      exported without unicode table.
      
      The encoding is described in reflect/type.go:
      
      // The first byte is a bit field containing:
      //
      //	1<<0 the name is exported
      //	1<<1 tag data follows the name
      //	1<<2 pkgPath *string follow the name and tag
      //
      // The next two bytes are the data length:
      //
      //	 l := uint16(data[1])<<8 | uint16(data[2])
      //
      // Bytes [3:3+l] are the string data.
      //
      // If tag data follows then bytes 3+l and 3+l+1 are the tag length,
      // with the data following.
      //
      // If the import path follows, then ptrSize bytes at the end of
      // the data form a *string. The import path is only set for concrete
      // methods that are defined in a different package than their type.
      
      Shrinks binary sizes:
      
      	cmd/go: 164KB (1.6%)
      	jujud:  1.0MB (1.5%)
      
      For #6853.
      
      Change-Id: I46b6591015b17936a443c9efb5009de8dfe8b609
      Reviewed-on: https://go-review.googlesource.com/20968
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      24ce64d1
  2. 24 Mar, 2016 20 commits
  3. 23 Mar, 2016 6 commits