1. 26 Feb, 2016 27 commits
    • Matthew Dempsky's avatar
      cmd/compile: stop representing keywords as Syms · 071e43a9
      Matthew Dempsky authored
      Instead add a dedicated keywords map for use in lexer.ident and drop
      Sym's Lexical field.
      
      Change-Id: Ia668e65499035ff7167fabbbd0cd027102b21231
      Reviewed-on: https://go-review.googlesource.com/19935Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      071e43a9
    • Matthew Dempsky's avatar
      cmd/compile: fix contrived line number errors · af558acc
      Matthew Dempsky authored
      If a general comment contains multiple newline characters, we can't
      simply unread one and then re-lex it via the general whitespace lexing
      phase, because then we'll reset lineno to the line before the "*/"
      marker, rather than keeping it where we found the "/*" marker.
      
      Also, for processing imports, call importfile before advancing the
      lexer with p.next(), so that lineno reflects the line where we found
      the import path, and not the token afterwards.
      
      Fixes #14520.
      
      Change-Id: I785a2d83d632280113d4b757de0d57c88ba2caf4
      Reviewed-on: https://go-review.googlesource.com/19934Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      af558acc
    • Ian Lance Taylor's avatar
      cmd/compile: create test binary in temp directory · a131a66e
      Ian Lance Taylor authored
      The new TestDashS was leaving a dreg "test" file in
      cmd/compile/internal/gc.  Create it in the temporary directory instead.
      
      Also change path.Join to filepath.Join throughout global_test.go.
      
      Change-Id: Ib7707fada2b3ab5e8abc2ba74e4c402821c1408b
      Reviewed-on: https://go-review.googlesource.com/19965
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      a131a66e
    • Ian Lance Taylor's avatar
      cmd/compile: change Func.{Dcl,Inldcl} from NodeList to slice · b66a8923
      Ian Lance Taylor authored
      A slice uses less memory than a NodeList, and has better memory locality
      when walking the list.
      
      This uncovered a tricky case involving closures: the escape analysis
      pass when run on a closure was appending to the Dcl list of the OCLOSURE
      rather than the ODCLFUNC.  This happened to work because they shared the
      same NodeList.  Fixed with a change to addrescapes, and a check to
      Tempname to catch any recurrences.
      
      This removes the last use of the listsort function outside of tests.
      I'll send a separate CL to remove it.
      
      Unfortunately, while this passes all tests, it does not pass toolstash
      -cmp.  The problem is that cmpstackvarlt does not fully determine the
      sort order, and the change from listsort to sort.Sort, while generally
      desirable, produces a different ordering.  I could stage this by first
      making cmpstackvarlt fully determined, but no matter what toolstash -cmp
      is going to break at some point.
      
      In my casual testing the compiler is 2.2% faster.
      
      Update #14473.
      
      Change-Id: I367d66daa4ec73ed95c14c66ccda3a2133ad95d5
      Reviewed-on: https://go-review.googlesource.com/19919Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      b66a8923
    • Matthew Dempsky's avatar
      cmd: stop looking for __.(GO)?SYMDEF entries in archives · 67dbde0d
      Matthew Dempsky authored
      The Go toolchain stopped creating them before Go 1.3, so no point in
      worrying about them today.
      
      History:
      
      - Git commit 250a0919 added cmd/ar, which wrote Plan 9 __.SYMDEF
      entries into archive files.
      
      - golang.org/cl/6500117 renamed __.SYMDEF to __.GOSYMDEF.  (Notably,
      the commit message suggests users need to use Go nm to read symbols,
      but even back then the toolchain did nothing with __.(GO)?SYMDEF files
      except skip over them.)
      
      - golang.org/cl/42880043 added the -pack flag to cmd/gc to directly
      produce archives by the Go compiler, and did not write __.GOSYMDEF
      entries.
      
      - golang.org/cl/52310044 rewrote cmd/pack in Go, and removed support
      for producing __.GOSYMDEF entries.
      
      Change-Id: I255edf40d0d3690e3447e488039fcdef73c6d6b1
      Reviewed-on: https://go-review.googlesource.com/19924
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      67dbde0d
    • Richard Miller's avatar
      sync/atomic: new file for plan9_arm support · 5c613e91
      Richard Miller authored
      Atomic load/store/add/swap routines, as for other ARM platforms, but with DMB inserted
      for load/store (assuming that "atomic" also implies acquire/release memory ordering).
      
      Change-Id: I70a283d8f0ae61a66432998ce59eac76fd940c67
      Reviewed-on: https://go-review.googlesource.com/18965Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5c613e91
    • Caio Marcelo de Oliveira Filho's avatar
      cmd/go: show position in error for wrong signature in test functions · 5c72c6f8
      Caio Marcelo de Oliveira Filho authored
      Change-Id: Ie915dc2fc32a31d31f566ac931ccecb506559645
      Reviewed-on: https://go-review.googlesource.com/19888Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5c72c6f8
    • Matt T. Proud's avatar
      testing/quick: generate more map and slice states · 0ccabe2e
      Matt T. Proud authored
      This change adds support in testing/quick to generate maps and slices
      in additional states:
      
        (1.) nil maps
      
        (2.) nil slices
      
        (3.) empty slice occupancy: `len(s) == 0 && s != nil`
      
        (4.) partial slice occupancy: `len(s) < cap(s) && s != nil`
      
        (5.) full slice occupancy: `len(s) == cap(s) && s != nil`
      
      Prior to this, only #5 was ever generated, thereby not sufficiently
      exercising all of the fuzzable code path outcomes.
      
      This change depends on https://go-review.googlesource.com/#/c/17499/.
      
      Change-Id: I9343c475cefbd72ffc5237281826465c25872206
      Reviewed-on: https://go-review.googlesource.com/16470Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0ccabe2e
    • Richard Miller's avatar
      syscall: new files for plan_arm support · 763e8fcc
      Richard Miller authored
      Implementation closely follows plan9_386 version.
      
      Change-Id: Ifb76e001fb5664e6a23541cf4768d7f11b2be68b
      Reviewed-on: https://go-review.googlesource.com/18967Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      763e8fcc
    • Michael McConville's avatar
      crypto/rand: use the getentropy syscall on OpenBSD · ddfe7b3d
      Michael McConville authored
      Go already supports Linux's getrandom, which is a slightly modified
      version of getentropy.
      
      getentropy was added in OpenBSD 5.6. All supported versions of OpenBSD
      include it so, unlike with Linux and getrandom, we don't need to test
      for its presence.
      
      Fixes #13785.
      
      Change-Id: Ib536b96675f257cd8c5de1e3a36165e15c9abac9
      Reviewed-on: https://go-review.googlesource.com/18219
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ddfe7b3d
    • Jeff R. Allen's avatar
      misc/cgo: fix wrong quote character · ee177279
      Jeff R. Allen authored
      Single quotes to not expand variables inside of them.
      
      Change-Id: I4a0622c0aebfc1c3f9d299f93f7a8253893b5858
      Reviewed-on: https://go-review.googlesource.com/13661Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      ee177279
    • Keith Randall's avatar
      cmd/internal/obj: Fix generation of assembly with -S · c747fce2
      Keith Randall authored
      We can't drop Prog entries when we want to print disassembly.
      
      Added a test for -S.
      
      Fixes #14515
      
      Change-Id: I44c72f70f7a3919acc01c559d30335d26669e76f
      Reviewed-on: https://go-review.googlesource.com/19930Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c747fce2
    • Ian Lance Taylor's avatar
      runtime: more deflaking of TestCgoCheckBytes · 8d94b9b8
      Ian Lance Taylor authored
      Fixes #14519.
      
      Change-Id: I8f78f67a463e6467e09df90446f7ebd28789d6c9
      Reviewed-on: https://go-review.googlesource.com/19933Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      8d94b9b8
    • Derek Shockey's avatar
      misc/git: Fix non-literal period in pre-commit grep · 90fea9d0
      Derek Shockey authored
      Looks like this was intended to match a literal period to restrict
      this to `.go` files, but in POSIX grep, the unescaped period matches
      any character.
      
      Change-Id: I20e00323baa9e9631792eff5035966297665bbee
      Reviewed-on: https://go-review.googlesource.com/19880Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      90fea9d0
    • Caio Marcelo de Oliveira Filho's avatar
      cmd/go: better error for test functions with wrong signature · c2d3e112
      Caio Marcelo de Oliveira Filho authored
      Check the function types before compiling the tests. Extend the same
      approach taken by the type check used for TestMain function.
      
      To keep existing behavior, wrong arguments for TestMain are ignored
      instead of causing an error.
      
      Fixes #14226.
      
      Change-Id: I488a2555cddb273d35c1a8c4645bb5435c9eb91d
      Reviewed-on: https://go-review.googlesource.com/19763
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c2d3e112
    • Dmitry Vyukov's avatar
      sync/atomic: reduce test in short mode · e1035c5e
      Dmitry Vyukov authored
      In normal mode the test runs for 9+ seconds on my machine (48 cores).
      But the real problem is race mode, in race mode it hits 10m test timeout.
      Reduce test size in short mode. Now it runs for 100ms without race.
      
      Change-Id: I9493a0e84f630b930af8f958e2920025df37c268
      Reviewed-on: https://go-review.googlesource.com/19956Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e1035c5e
    • Rick Arnold's avatar
      net/url: support query string without values · 9f26170a
      Rick Arnold authored
      Previously, RawQuery was used to indicate the presence of a query
      string in url.URL. However, this approach was not able to differentiate
      between URLs that have no query string at all (http://foo.bar/) and
      those that have a query with no values (http://foo.bar/?).
      
      Add a ForceQuery field to indicate the latter form of URL and use it
      in URL.String to create a matching URL with a trailing '?'.
      
      Fixes #13488
      
      Change-Id: Ifac663c73d35759bc6c33a00f84ab116b9b81684
      Reviewed-on: https://go-review.googlesource.com/19931Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      9f26170a
    • Dmitry Vyukov's avatar
      runtime: unwire g/m in dropg always · bdc14698
      Dmitry Vyukov authored
      Currently dropg does not unwire locked g/m.
      This is unnecessary distiction between locked and non-locked g/m.
      We always restart goroutines with execute which re-wires g/m.
      
      First, this produces false sense that this distinction is necessary.
      Second, it can confuse some sanity and cross checks. For example,
      if we check that g/m are unwired before we wire them in execute,
      the check will fail for locked g/m. I've hit this while doing some
      race detector changes, When we deschedule a goroutine and run
      scheduler code, m.curg is generally nil, but not for locked ms.
      
      Remove the distinction.
      
      Change-Id: I3b87a28ff343baa1d564aab1f821b582a84dee07
      Reviewed-on: https://go-review.googlesource.com/19950Reviewed-by: default avatarAustin Clements <austin@google.com>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      bdc14698
    • Austin Clements's avatar
      runtime: remove workbuf logging · 3b3d58e1
      Austin Clements authored
      Early in Go 1.5 we had bugs with ownership of workbufs, so we added a
      system for tracing their ownership to help debug these issues.
      However, this system has both CPU and space overhead even when
      disabled, it clutters up the workbuf API, the higher level gcWork
      abstraction makes it very difficult to mess up the ownership of
      workbufs in practice, and the tracing hasn't been enabled or needed
      since 5b66e5d0 nine months ago. Hence, remove it.
      
      Benchmarks show the usual noise from changes at this level, but little
      overall movement.
      
      name              old time/op  new time/op  delta
      XBenchGarbage-12  2.48ms ± 1%  2.47ms ± 0%  -0.68%  (p=0.000 n=21+21)
      
      name                      old time/op    new time/op    delta
      BinaryTree17-12              2.98s ± 7%     2.98s ± 6%    ~     (p=0.799 n=20+20)
      Fannkuch11-12                2.61s ± 3%     2.55s ± 5%  -2.55%  (p=0.003 n=20+20)
      FmtFprintfEmpty-12          52.8ns ± 6%    53.6ns ± 6%    ~     (p=0.228 n=20+20)
      FmtFprintfString-12          177ns ± 4%     177ns ± 4%    ~     (p=0.280 n=20+20)
      FmtFprintfInt-12             162ns ± 5%     162ns ± 3%    ~     (p=0.347 n=20+20)
      FmtFprintfIntInt-12          277ns ± 7%     273ns ± 4%  -1.62%  (p=0.005 n=20+20)
      FmtFprintfPrefixedInt-12     237ns ± 4%     242ns ± 4%  +2.13%  (p=0.005 n=20+20)
      FmtFprintfFloat-12           315ns ± 4%     312ns ± 4%  -0.97%  (p=0.001 n=20+20)
      FmtManyArgs-12              1.11µs ± 3%    1.15µs ± 4%  +3.41%  (p=0.004 n=20+20)
      GobDecode-12                8.50ms ± 7%    8.53ms ± 7%    ~     (p=0.429 n=20+20)
      GobEncode-12                6.86ms ± 9%    6.93ms ± 7%  +0.93%  (p=0.030 n=20+20)
      Gzip-12                      326ms ± 4%     329ms ± 4%  +0.98%  (p=0.020 n=20+20)
      Gunzip-12                   43.3ms ± 3%    43.8ms ± 9%  +1.25%  (p=0.003 n=20+20)
      HTTPClientServer-12         72.0µs ± 3%    71.5µs ± 3%    ~     (p=0.053 n=20+20)
      JSONEncode-12               17.0ms ± 6%    17.3ms ± 7%  +1.32%  (p=0.006 n=20+20)
      JSONDecode-12               64.2ms ± 4%    63.5ms ± 3%  -1.05%  (p=0.005 n=20+20)
      Mandelbrot200-12            4.00ms ± 3%    3.99ms ± 3%    ~     (p=0.121 n=20+20)
      GoParse-12                  3.74ms ± 5%    3.75ms ± 9%    ~     (p=0.383 n=20+20)
      RegexpMatchEasy0_32-12       104ns ± 4%     104ns ± 6%    ~     (p=0.392 n=20+20)
      RegexpMatchEasy0_1K-12       358ns ± 3%     361ns ± 4%  +0.95%  (p=0.003 n=20+20)
      RegexpMatchEasy1_32-12      86.3ns ± 5%    86.1ns ± 6%    ~     (p=0.614 n=20+20)
      RegexpMatchEasy1_1K-12       523ns ± 4%     518ns ± 3%  -1.14%  (p=0.008 n=20+20)
      RegexpMatchMedium_32-12      137ns ± 3%     134ns ± 4%  -1.90%  (p=0.005 n=20+20)
      RegexpMatchMedium_1K-12     41.0µs ± 3%    40.6µs ± 4%  -1.11%  (p=0.004 n=20+20)
      RegexpMatchHard_32-12       2.13µs ± 4%    2.11µs ± 5%  -1.31%  (p=0.014 n=20+20)
      RegexpMatchHard_1K-12       64.1µs ± 3%    63.2µs ± 5%  -1.38%  (p=0.005 n=20+20)
      Revcomp-12                   555ms ±10%     548ms ± 7%  -1.17%  (p=0.011 n=20+20)
      Template-12                 84.2ms ± 5%    88.2ms ± 4%  +4.73%  (p=0.000 n=20+20)
      TimeParse-12                 365ns ± 4%     371ns ± 5%  +1.77%  (p=0.002 n=20+20)
      TimeFormat-12                361ns ± 4%     365ns ± 3%  +1.08%  (p=0.002 n=20+20)
      [Geo mean]                  64.7µs         64.8µs       +0.19%
      
      Change-Id: Ib043a7a0d18b588b298873d60913d44cd19f3b44
      Reviewed-on: https://go-review.googlesource.com/19887
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      3b3d58e1
    • David Crawshaw's avatar
      cmd/compile: remove uncommonType.name · 0231f542
      David Crawshaw authored
      Reduces binary size of cmd/go by 0.5%.
      For #6853.
      
      Change-Id: I5a4b814049580ab5098ad252d979f80b70d8a5f9
      Reviewed-on: https://go-review.googlesource.com/19694Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David Crawshaw <crawshaw@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0231f542
    • Datong Sun's avatar
      crypto/x509: better documentation for ParsePKIXPublicKey · c8ae2e82
      Datong Sun authored
      The existing documentation for ParsePKIXPublicKey is difficult to understand
      and the return type of the parsed public key are not mentioned explicitly.
      
      Descriptions about types of public key supported, as well as an example on
      how to use type assertions to determine return type of a parsed public key
      has been added.
      
      Fixes #14355
      
      Change-Id: Ib9561efb34255292735742c0b3e835c4b97ac589
      Reviewed-on: https://go-review.googlesource.com/19757Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c8ae2e82
    • Matthew Dempsky's avatar
      cmd/compile, go/parser: simpler binary expression parsing · 49d1e307
      Matthew Dempsky authored
      The existing nested loops are too tricky for me to grok and don't seem
      necessary.
      
      Change-Id: I75c65c8470b799d6f4cfb05bb1b4796c5d7d32e7
      Reviewed-on: https://go-review.googlesource.com/19927
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      49d1e307
    • Shenghou Ma's avatar
      build: use go tool dist list · c8579e57
      Shenghou Ma authored
      Change-Id: I9b79bd301d0b75ca1f16d4a05e3cb687a8428c14
      Reviewed-on: https://go-review.googlesource.com/19884
      Run-TryBot: Minux Ma <minux@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      c8579e57
    • Andrew Gerrand's avatar
      doc: add issue and pull request templates · 7b74921d
      Andrew Gerrand authored
      Fixes #14365
      
      Change-Id: I082329fe7a1e06c774a32e0e24e5c8736bb5a037
      Reviewed-on: https://go-review.googlesource.com/19877Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      7b74921d
    • Matthew Dempsky's avatar
      cmd/compile: simplify error sorting · a5b7a8d6
      Matthew Dempsky authored
      Errors have unique seq values (their index within the errors slice),
      so errcmp never needs to fallback to sorting by message text.
      Moreover, comparing by original index is exactly the purpose of using
      a stable sort algorithm (and sort.Stable was added in Go 1.2), so we
      really only need to compare by lineno.
      
      Change-Id: I7f534b72a05d899ae9788dc7ef0541dd92a8b578
      Reviewed-on: https://go-review.googlesource.com/19929
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      a5b7a8d6
    • Matthew Dempsky's avatar
      cmd/compile: rationalize (lex)?lineno handling · e0fa809f
      Matthew Dempsky authored
      Previously, many error messages inconsistantly used either lexlineno
      and lineno.  In general this works out okay because they're almost
      always the same.  The only exceptional case is after lexing a
      multi-line raw string literal, where lineno will be the line number of
      the opening quote and lexlineno is the line number of the closing
      quote.
      
      This CL makes the compiler's error message more consistent:
      
      - Lexer error messages related to invalid byte sequences (i.e., NUL
      bytes, bad UTF-8 sequences, and non-initial BOMs) are emitted at
      lexlineno (i.e., the source line that contains the invalid byte
      sequence).
      
      - All other error messages (notably the parser's "syntax errors") now
      use lineno.  The minor change from this is that bogus input like:
      
          package `
          bogus`
      
      will emit "syntax error: unexpected string literal, expecting name"
      error at line 1, instead of line 2.
      
      - Instead of maintaining prevlineno all the time, just record it
      when/where actually needed and not already available elsewhere (which
      turns out to be just one function).
      
      - Lastly, we remove the legacy "syntax error near ..." fallback in
      Yerror, now that the parser always emits more detailed syntax error
      messages.
      
      Change-Id: Iaf5f784223d0385fa3a5b09ef2b2ad447feab02f
      Reviewed-on: https://go-review.googlesource.com/19925Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      e0fa809f
    • Keith Randall's avatar
      runtime: avoid using REP prefix for IndexByte · 687abca1
      Keith Randall authored
      REP-prefixed instructions have a large startup cost.
      Avoid them like the plague.
      
      benchmark                  old ns/op     new ns/op     delta
      BenchmarkIndexByte10-8     22.4          5.34          -76.16%
      
      Fixes #13983
      
      Change-Id: I857e956e240fc9681d053f2584ccf24c1b272bb3
      Reviewed-on: https://go-review.googlesource.com/18703Reviewed-by: default avatarMinux Ma <minux@golang.org>
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      687abca1
  2. 25 Feb, 2016 13 commits
    • kortschak's avatar
      cmd/dist: don't run fortran test if fortran compilation fails · a337e306
      kortschak authored
      Fixes #14498.
      
      Change-Id: I4cfab3e45898466179cefbd31c6f7f796da82363
      Reviewed-on: https://go-review.googlesource.com/19874Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a337e306
    • Austin Clements's avatar
      runtime: eliminate unused _Genqueue state · cbe849fc
      Austin Clements authored
      _Genqueue and _Gscanenqueue were introduced as part of the GC quiesce
      code. The quiesce code was removed by 197aa9e6, but these states and
      some associated code stuck around. Remove them.
      
      Change-Id: I69df81881602d4a431556513dac2959668d27c20
      Reviewed-on: https://go-review.googlesource.com/19638Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      cbe849fc
    • Austin Clements's avatar
      runtime: eliminate a conditional branch from heapBits.bits · 4eb33f6b
      Austin Clements authored
      Change-Id: I1fa5e629b2890a8509559ce4ea17b74f47d71925
      Reviewed-on: https://go-review.googlesource.com/19637Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4eb33f6b
    • Austin Clements's avatar
      runtime: use only per-P gcWork · 0168c267
      Austin Clements authored
      Currently most uses of gcWork use the per-P gcWork, but there are two
      places that still use a stack-based gcWork. Simplify things by making
      these instead use the per-P gcWork.
      
      Change-Id: I712d012cce9dd5757c8541824e9641ac1c2a329c
      Reviewed-on: https://go-review.googlesource.com/19636Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0168c267
    • Austin Clements's avatar
      runtime: pass gcWork to markroot · 7b229001
      Austin Clements authored
      Currently markroot uses a gcWork on the stack and disposes of it
      immediately after marking one root. This used to be necessary because
      markroot was called from the depths of parfor, but now that we call it
      directly and have ready access to a gcWork at the call site, pass the
      gcWork in, use it directly in markroot, and share it across calls to
      markroot from the same P.
      
      Change-Id: Id7c3b811bfb944153760e01873c07c8d18909be1
      Reviewed-on: https://go-review.googlesource.com/19635Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      7b229001
    • Austin Clements's avatar
      runtime: remove noescape hacks from gcWork · 98130b39
      Austin Clements authored
      When gcWork was first introduced, the compiler's escape analysis
      wasn't good enough to detect that that method receiver didn't escape,
      so we had to hack around this.
      
      Now that the compiler can figure out this for itself, remove these
      hacks.
      
      Change-Id: I9f73fab721e272410b8b6905b564e7abc03c0dfe
      Reviewed-on: https://go-review.googlesource.com/19634Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      98130b39
    • Austin Clements's avatar
      runtime: remove unnecessary clears of the heap bitmap · 0d26efb1
      Austin Clements authored
      Currently we clear the heap bitmap of a span both when we allocate
      that span *and* when we free it. There's no point in doing both, and
      we definitely have to write the heap bitmap when we allocate a span
      for pointer-sized objects, so switch to clearing only when we allocate
      a span.
      
      This results in a slight overall performance improvement; however,
      most of the benchmarks that get slower are very short, while the
      longer benchmarks generally got faster.
      
      name              old time/op  new time/op  delta
      XBenchGarbage-12  2.48ms ± 1%  2.47ms ± 1%  -0.58%  (p=0.000 n=91+91)
      
      name                      old time/op    new time/op    delta
      BinaryTree17-12              2.85s ± 2%     2.85s ± 2%    ~     (p=0.550 n=20+19)
      Fannkuch11-12                2.54s ± 0%     2.47s ± 1%  -2.72%  (p=0.000 n=19+18)
      FmtFprintfEmpty-12          51.3ns ± 4%    51.0ns ± 3%    ~     (p=0.223 n=20+20)
      FmtFprintfString-12          169ns ± 0%     167ns ± 0%  -1.18%  (p=0.000 n=17+16)
      FmtFprintfInt-12             160ns ± 0%     161ns ± 0%  +0.63%  (p=0.000 n=16+15)
      FmtFprintfIntInt-12          267ns ± 0%     269ns ± 1%  +0.62%  (p=0.000 n=17+20)
      FmtFprintfPrefixedInt-12     234ns ± 1%     240ns ± 0%  +2.80%  (p=0.000 n=20+20)
      FmtFprintfFloat-12           316ns ± 0%     313ns ± 0%  -0.76%  (p=0.000 n=20+19)
      FmtManyArgs-12              1.04µs ± 0%    1.05µs ± 0%  +0.45%  (p=0.000 n=19+16)
      GobDecode-12                7.90ms ± 1%    7.81ms ± 0%  -1.10%  (p=0.000 n=18+18)
      GobEncode-12                6.61ms ± 1%    6.58ms ± 0%  -0.46%  (p=0.000 n=20+15)
      Gzip-12                      320ms ± 1%     322ms ± 1%  +0.47%  (p=0.030 n=20+20)
      Gunzip-12                   42.4ms ± 1%    42.6ms ± 0%  +0.37%  (p=0.000 n=20+20)
      HTTPClientServer-12         70.7µs ± 1%    70.6µs ± 2%    ~     (p=0.784 n=18+20)
      JSONEncode-12               16.9ms ± 1%    16.8ms ± 0%  -0.64%  (p=0.000 n=20+20)
      JSONDecode-12               60.8ms ± 0%    58.6ms ± 1%  -3.50%  (p=0.000 n=17+18)
      Mandelbrot200-12            3.92ms ± 0%    3.91ms ± 0%  -0.25%  (p=0.000 n=19+19)
      GoParse-12                  3.65ms ± 0%    3.68ms ± 1%  +0.67%  (p=0.000 n=17+16)
      RegexpMatchEasy0_32-12       102ns ± 1%     102ns ± 2%  +0.67%  (p=0.009 n=19+19)
      RegexpMatchEasy0_1K-12       350ns ± 0%     351ns ± 1%  +0.34%  (p=0.002 n=20+20)
      RegexpMatchEasy1_32-12      84.1ns ± 2%    84.2ns ± 2%    ~     (p=0.799 n=20+18)
      RegexpMatchEasy1_1K-12       510ns ± 1%     508ns ± 1%  -0.45%  (p=0.000 n=20+17)
      RegexpMatchMedium_32-12      132ns ± 1%     134ns ± 1%  +0.85%  (p=0.000 n=20+19)
      RegexpMatchMedium_1K-12     40.0µs ± 1%    39.9µs ± 1%  -0.29%  (p=0.014 n=19+18)
      RegexpMatchHard_32-12       2.09µs ± 1%    2.05µs ± 0%  -1.76%  (p=0.000 n=20+18)
      RegexpMatchHard_1K-12       62.7µs ± 1%    61.8µs ± 1%  -1.39%  (p=0.000 n=20+19)
      Revcomp-12                   541ms ± 1%     534ms ± 0%  -1.16%  (p=0.000 n=19+20)
      Template-12                 71.1ms ± 0%    69.1ms ± 0%  -2.83%  (p=0.000 n=18+19)
      TimeParse-12                 356ns ± 0%     357ns ± 0%  +0.36%  (p=0.000 n=17+19)
      TimeFormat-12                358ns ± 0%     372ns ± 1%  +3.74%  (p=0.000 n=15+18)
      [Geo mean]                  62.6µs         62.5µs       -0.25%
      
      Change-Id: Ied190b77c7a4d91ec7b2218c592fc31cf7acf362
      Reviewed-on: https://go-review.googlesource.com/19633Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0d26efb1
    • Austin Clements's avatar
      runtime: document non-obvious requirement on sudog.elem · 1e91e2a2
      Austin Clements authored
      The channel code must not allow stack splits between when it assigns a
      potential stack pointer to sudog.elem (or sudog.selectdone) and when
      it makes the sudog visible to copystack by putting it on the g.waiting
      list. We do get this right everywhere, but add a comment about this
      subtlety for future eyes.
      
      Change-Id: I941da150437167acff37b0e56983c793f40fcf79
      Reviewed-on: https://go-review.googlesource.com/19632Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      1e91e2a2
    • Austin Clements's avatar
      runtime: improve initSpan documentation · 39f2bd73
      Austin Clements authored
      Change-Id: I9c45aad1c35a99da4c3b8990649dcd962fd23b81
      Reviewed-on: https://go-review.googlesource.com/19631Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      39f2bd73
    • Austin Clements's avatar
      runtime: fix heapBitsSweepSpan comment · e1024b60
      Austin Clements authored
      Currently the heapBitsSweepSpan comment claims that heapBitsSweepSpan
      sets the heap bitmap for the first two words to dead. In fact, it sets
      the first *four* words to scalar/dead. This is important because first
      two words don't actually have a dead bit, so for objects larger than
      two words it *must* set a dead bit in third word to reset the object
      to a "noscan" state. For example, we use this in heapBits.hasPointers
      to detect that an object larger than two words is noscan.
      
      Change-Id: Ie166a628bed5060851db083475c7377adb349d6c
      Reviewed-on: https://go-review.googlesource.com/19630Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Run-TryBot: Austin Clements <austin@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e1024b60
    • Dmitriy Dudkin's avatar
      cmd/go: clear cmd cache to avoid duplicate loads errors · ca42f1f5
      Dmitriy Dudkin authored
      go get -u all command updates all packages including standard
      commands. We need to get commands evicted from their cache to
      avoid loading old versions of the packages evicted from the
      packages cache.
      
      Fixes #14444
      
      Change-Id: Icd581a26e1db34ca634aba595fed62b097094c2f
      Reviewed-on: https://go-review.googlesource.com/19899Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ca42f1f5
    • Brad Fitzpatrick's avatar
      net/textproto: permit all valid token chars in CanonicalMIMEHeaderKey input · b24c6fbf
      Brad Fitzpatrick authored
      Fixes #13767
      
      Change-Id: Ib743db7d9d72022ea911bc5ac535243489425642
      Reviewed-on: https://go-review.googlesource.com/18725Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      b24c6fbf
    • Ian Lance Taylor's avatar
      doc/go1.7: mention CallersFrames and Frames · 13d6414e
      Ian Lance Taylor authored
      Change-Id: I73ae6a6837a6dcf75b3b8f431d97a18348e01a42
      Reviewed-on: https://go-review.googlesource.com/19921Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      13d6414e