1. 22 Feb, 2016 6 commits
    • Caio Marcelo de Oliveira Filho's avatar
      cmd/cover: don't overskip children nodes when adding counters · e7f6d8b2
      Caio Marcelo de Oliveira Filho authored
      When visiting the AST to add counters, there are special cases in which
      the code calls cuts the walking short by returning nil. In some cases
      certain nodes are ignored, e.g. Init and Cond inside IfStmt.
      
      The fix is to explicitly walk all the children nodes (not only
      Body and Else) when cutting the current walk. Similar approach
      was taken with SwitchStmt and TypeSwitchStmt.
      
      While the existing test code doesn't handle different counters in the
      same line, the generated HTML report does it correctly (because it takes
      column into account).
      
      The previous behavior caused lines in function literals to not be
      tracked when those literals were inside Init or Cond of an IfStmt for
      example.
      
      Fixes #14039.
      
      Change-Id: Iad591363330843ad833bd79a0388d709c8d0c8aa
      Reviewed-on: https://go-review.googlesource.com/19775Reviewed-by: default avatarRob Pike <r@golang.org>
      e7f6d8b2
    • Robert Griesemer's avatar
      cmd/compile: bring vendored copy of math/big up-to-date · f39cca94
      Robert Griesemer authored
      These files were not added to the repo. They contain conversion
      routines and corresponding tests not used by the compiler and
      thus are technically not needed.
      
      However, future changes to math/big (and corresponding updates
      of this vendored version) may require these files to exist.
      Add them to avoid unnecessary confusion.
      
      Change-Id: Ie390fb54f499463b2bba2fdc084967539afbeeb3
      Reviewed-on: https://go-review.googlesource.com/19730Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      f39cca94
    • Josh Bleecher Snyder's avatar
      cmd/compile: reuse []Flow · 028247d2
      Josh Bleecher Snyder authored
      Benchmarked using compilebench on a quiet
      but rather old OS X laptop.
      
      Benchmarks from others would be welcome,
      since the numbers look too good to be true.
      
      name      old time/op    new time/op    delta
      Template     331ms ± 9%     303ms ± 4%   -8.25%  (p=0.000 n=24+24)
      GoTypes      946ms ± 4%     888ms ± 3%   -6.17%  (p=0.000 n=24+25)
      Compiler     3.20s ± 1%     3.10s ± 2%   -3.07%  (p=0.000 n=24+25)
      
      name      old alloc/op   new alloc/op   delta
      Template    72.5MB ± 0%    61.8MB ± 0%  -14.76%  (p=0.000 n=25+24)
      GoTypes      224MB ± 0%     189MB ± 0%  -15.65%  (p=0.000 n=25+25)
      Compiler     695MB ± 0%     561MB ± 0%  -19.26%  (p=0.000 n=25+25)
      
      name      old allocs/op  new allocs/op  delta
      Template      498k ± 0%      497k ± 0%   -0.21%  (p=0.000 n=25+23)
      GoTypes      1.47M ± 0%     1.47M ± 0%   -0.25%  (p=0.000 n=25+25)
      Compiler     4.09M ± 0%     4.08M ± 0%   -0.18%  (p=0.000 n=25+23)
      
      Change-Id: I2394bc748128d721863453257fa5756c410f7898
      Reviewed-on: https://go-review.googlesource.com/19771Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      028247d2
    • Matthew Dempsky's avatar
      cmd/compile: move hiter, hmap, and scase definitions into builtin.go · f28bbb77
      Matthew Dempsky authored
      Also eliminates per-maptype hiter and hmap types, since they're not
      really needed anyway.  Update packages reflect and runtime
      accordingly.
      
      Reduces golang.org/x/tools/cmd/godoc's text segment by ~170kB:
      
         text	   data	    bss	    dec	    hex	filename
      13085702	 140640	 151520	13377862	 cc2146	godoc.before
      12915382	 140640	 151520	13207542	 c987f6	godoc.after
      
      Updates #6853.
      
      Change-Id: I948b2bc1f22d477c1756204996b4e3e1fb568d81
      Reviewed-on: https://go-review.googlesource.com/16610Reviewed-by: default avatarKeith Randall <khr@golang.org>
      f28bbb77
    • Keith Randall's avatar
      cmd/compile: inline {i,e}facethash · d0c11577
      Keith Randall authored
      These functions are really simple, the overhead of calling
      them (in both time and code size) is larger than the inlined versions.
      
      Reorganize how the nil case in a type switch is handled, as we have
      to check for nil explicitly now anyway.
      
      Saves about 0.8% in the binary size of the go tool.
      
      Change-Id: I8501b62d72fde43650b79f52b5f699f1fbd0e7e7
      Reviewed-on: https://go-review.googlesource.com/19814
      Run-TryBot: Keith Randall <khr@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      d0c11577
    • Matthew Dempsky's avatar
      cmd/compile: make cmpstackvarlt properly asymmetric · 5609a489
      Matthew Dempsky authored
      Previously, given two Nodes n1 and n2 of different non-PAUTO classes
      (e.g., PPARAM and PPARAMOUT), cmpstackvarlt(n1, n2) and
      cmpstackvarlt(n2, n1) both returned true, which is nonsense.
      
      This doesn't seem to cause any visible miscompilation problems, but
      notably fixing it does cause toolstash/buildall to fail.
      
      Change-Id: I33b2c66e902c5eced875d8fbf18b7cfdc81e8aed
      Reviewed-on: https://go-review.googlesource.com/19778
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5609a489
  2. 21 Feb, 2016 23 commits
  3. 20 Feb, 2016 11 commits