1. 28 Feb, 2017 6 commits
    • David du Colombier's avatar
      crypto/sha512: fix checkAVX2 · a38a2d02
      David du Colombier authored
      The checkAVX2 test doesn't appear to be correct,
      because it always returns the value of support_bmi2,
      even if the value of support_avx2 is false.
      
      Consequently, checkAVX2 always returns true, as long
      as BMI2 is supported, even if AVX2 is not supported.
      
      We change checkAVX2 to return false when support_avx2
      is false.
      
      Fixes #19316.
      
      Change-Id: I2ec9dfaa09f4b54c4a03d60efef891b955d60578
      Reviewed-on: https://go-review.googlesource.com/37590
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      a38a2d02
    • Martin Möhrmann's avatar
      cmd/compile: fix assignment order in string range loop · a8f07310
      Martin Möhrmann authored
      Fixes #18376.
      
      Change-Id: I4fe24f479311cd4cd1bdad9a966b681e50e3d500
      Reviewed-on: https://go-review.googlesource.com/35955Reviewed-by: default avatarKeith Randall <khr@golang.org>
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a8f07310
    • Carlo Alberto Ferraris's avatar
      bytes: make bytes.Buffer cache-friendly · 55310403
      Carlo Alberto Ferraris authored
      During benchmark of an internal tool we found out that (*Buffer).Reset() was
      surprisingly showing up in CPU profiles.
      
      This CL contains two related changes aimed at speeding up Reset():
      1. Create a fast path for Truncate(0) by moving the logic to Reset()
         (this makes Reset() a simple leaf func that gets inlined since it
         gets compiled to 3 MOVx instructions). Accordingly change calls in
         the rest of the Buffer methods to call Reset() instead of Truncate(0).
      2. Reorder the fields in the Buffer struct so that frequently accessed
         fields are packed together (buf, off, lastRead). This also make them
         likely to be in the same cacheline.
      
      Ideally it would be advisable to have Buffer{} cacheline-aligned, but I
      couldn't find a way to do this without changing the size of the bootstrap
      array (but this will cause some regressions, because it will make duffcopy
      show up in CPU profiles where it wasn't showing up before).
      
      go1 benchmarks are not really affected, but some other benchmarks that
      exercise Buffer more show improvements:
      
      name                     old time/op    new time/op    delta
      BinaryTree17-4              2.46s ± 9%     2.43s ± 3%    ~     (p=0.982 n=14+14)
      Fannkuch11-4                2.98s ± 1%     2.90s ± 1%  -2.58%  (p=0.000 n=15+14)
      FmtFprintfEmpty-4          45.2ns ± 1%    45.2ns ± 1%    ~     (p=0.494 n=14+15)
      FmtFprintfString-4         76.8ns ± 1%    83.1ns ± 2%  +8.23%  (p=0.000 n=10+15)
      FmtFprintfInt-4            78.0ns ± 2%    74.6ns ± 1%  -4.46%  (p=0.000 n=15+15)
      FmtFprintfIntInt-4          113ns ± 1%     109ns ± 2%  -2.91%  (p=0.000 n=13+15)
      FmtFprintfPrefixedInt-4     152ns ± 2%     143ns ± 2%  -6.04%  (p=0.000 n=15+14)
      FmtFprintfFloat-4           224ns ± 1%     222ns ± 2%  -1.08%  (p=0.001 n=15+14)
      FmtManyArgs-4               464ns ± 2%     463ns ± 2%    ~     (p=0.303 n=14+15)
      GobDecode-4                6.25ms ± 2%    6.32ms ± 3%  +1.20%  (p=0.002 n=14+14)
      GobEncode-4                5.41ms ± 2%    5.41ms ± 2%    ~     (p=0.967 n=15+15)
      Gzip-4                      215ms ± 2%     218ms ± 2%  +1.35%  (p=0.002 n=15+15)
      Gunzip-4                   34.3ms ± 2%    34.2ms ± 2%    ~     (p=0.539 n=15+15)
      HTTPClientServer-4         76.4µs ± 2%    75.4µs ± 1%  -1.31%  (p=0.000 n=15+15)
      JSONEncode-4               14.7ms ± 2%    14.6ms ± 3%    ~     (p=0.094 n=14+14)
      JSONDecode-4               48.0ms ± 1%    48.5ms ± 1%  +0.92%  (p=0.001 n=14+12)
      Mandelbrot200-4            4.04ms ± 2%    4.06ms ± 1%    ~     (p=0.108 n=15+13)
      GoParse-4                  2.99ms ± 2%    3.00ms ± 1%    ~     (p=0.130 n=15+13)
      RegexpMatchEasy0_32-4      78.3ns ± 1%    79.5ns ± 1%  +1.51%  (p=0.000 n=15+14)
      RegexpMatchEasy0_1K-4       185ns ± 1%     186ns ± 1%  +0.76%  (p=0.005 n=15+15)
      RegexpMatchEasy1_32-4      79.0ns ± 2%    76.7ns ± 1%  -2.87%  (p=0.000 n=14+15)
      
      name                     old speed      new speed      delta
      GobDecode-4               123MB/s ± 2%   121MB/s ± 3%  -1.18%  (p=0.002 n=14+14)
      GobEncode-4               142MB/s ± 2%   142MB/s ± 1%    ~     (p=0.959 n=15+15)
      Gzip-4                   90.3MB/s ± 2%  89.1MB/s ± 2%  -1.34%  (p=0.002 n=15+15)
      Gunzip-4                  565MB/s ± 2%   567MB/s ± 2%    ~     (p=0.539 n=15+15)
      JSONEncode-4              132MB/s ± 2%   133MB/s ± 3%    ~     (p=0.091 n=14+14)
      JSONDecode-4             40.4MB/s ± 1%  40.0MB/s ± 1%  -0.92%  (p=0.001 n=14+12)
      GoParse-4                19.4MB/s ± 2%  19.3MB/s ± 1%    ~     (p=0.121 n=15+13)
      RegexpMatchEasy0_32-4     409MB/s ± 1%   403MB/s ± 1%  -1.47%  (p=0.000 n=15+14)
      RegexpMatchEasy0_1K-4    5.53GB/s ± 1%  5.49GB/s ± 1%  -0.86%  (p=0.002 n=15+15)
      RegexpMatchEasy1_32-4     405MB/s ± 2%   417MB/s ± 1%  +2.94%  (p=0.000 n=14+15)
      
      name                old time/op  new time/op  delta
      PoolsSingle1K-4     34.9ns ± 2%  30.4ns ± 4%  -12.80%  (p=0.000 n=15+15)
      PoolsSingle64K-4    36.9ns ± 1%  34.4ns ± 4%   -6.72%  (p=0.000 n=14+15)
      PoolsRandomSmall-4  34.8ns ± 3%  29.5ns ± 1%  -15.19%  (p=0.000 n=15+14)
      PoolsRandomLarge-4  38.6ns ± 1%  34.3ns ± 3%  -11.17%  (p=0.000 n=14+15)
      PoolSingle1K-4      26.1ns ± 1%  21.2ns ± 2%  -18.59%  (p=0.000 n=15+14)
      PoolSingle64K-4     26.7ns ± 2%  21.5ns ± 2%  -19.72%  (p=0.000 n=15+15)
      MakeSingle1K-4      24.2ns ± 2%  24.3ns ± 3%     ~     (p=0.132 n=13+15)
      MakeSingle64K-4     6.76µs ± 1%  6.96µs ± 5%   +2.94%  (p=0.002 n=13+13)
      MakeRandomSmall-4    531ns ± 4%   538ns ± 5%     ~     (p=0.066 n=14+15)
      MakeRandomLarge-4    152µs ± 0%   152µs ± 1%   -0.31%  (p=0.001 n=14+13)
      
      Change-Id: I86d7d9d2cac65335baf62214fbb35ba0fd8f9528
      Reviewed-on: https://go-review.googlesource.com/37416
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      55310403
    • Josh Bleecher Snyder's avatar
      cmd/compile: fold (NegNN (ConstNN ...)) · 417f49a3
      Josh Bleecher Snyder authored
      Fix up and enable a few rules.
      They trigger a handful of times in std,
      despite the frontend handling.
      
      Change-Id: I83378c057cbbc95a4f2b58cd8c36aec0e9dc547f
      Reviewed-on: https://go-review.googlesource.com/37227
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarKeith Randall <khr@golang.org>
      417f49a3
    • Michael Munday's avatar
      cmd/compile: fix merging of s390x conditional moves into branch conditions · 4dbcb53d
      Michael Munday authored
      A type conversion inserted between MOVD{LT,LE,GT,GE,EQ,NE} and CMPWconst
      by CL 36256 broke the rewrite rule designed to merge the two.
      This results in simple for loops (e.g. for i := 0; i < N; i++ {})
      emitting two comparisons instead of one, plus a conditional move.
      
      This CL explicitly types the input to CMPWconst so that the type conversion
      can be omitted. It also adds a test to check that conditional moves aren't
      emitted for loops with 'less than' conditions (i.e. i < N) on s390x.
      
      Fixes #19227.
      
      Change-Id: Ia39e806ed723791c3c755951aef23f957828ea3e
      Reviewed-on: https://go-review.googlesource.com/37334Reviewed-by: default avatarKeith Randall <khr@golang.org>
      4dbcb53d
    • Joe Tsai's avatar
      net/url: document the package better · 1b31c9ff
      Joe Tsai authored
      Changes made:
      * Adjust the documented form for a URL to make it more obvious what
      happens when the scheme is missing.
      * Remove references to Go1.5. We are sufficiently far along enough
      that this distinction no longer matters.
      * Remove the "Opaque" example which provides a hacky and misleading
      use of the Opaque field. This workaround is no longer necessary
      since RawPath was added in Go1.5 and the obvious approach just works:
      	// The raw string "/%2f/" will be sent as expected.
      	req, _ := http.NewRequest("GET", "https://example.com/%2f/")
      
      Fixes #18824
      
      Change-Id: Ie33d27222e06025ce8025f8a0f04b601aaee1513
      Reviewed-on: https://go-review.googlesource.com/36127
      Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      1b31c9ff
  2. 27 Feb, 2017 15 commits
    • Robert Griesemer's avatar
      go/importer: support importing directly from source · f81466ce
      Robert Griesemer authored
      For #11415.
      
      Change-Id: I5da39dad059113cfc4276152390aa4925bd18862
      Reviewed-on: https://go-review.googlesource.com/37405
      Run-TryBot: Robert Griesemer <gri@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      f81466ce
    • Austin Clements's avatar
      cmd/internal/obj, runtime: update funcdata comments · bab19104
      Austin Clements authored
      The comments in cmd/internal/obj/funcdata.go are identical to the
      comments in runtime/funcdata.h, but the majority of the definitions
      they refer to don't apply to Go sources and have been stripped out of
      funcdata.go.
      
      Remove these stale comments from funcdata.go and clean up the
      references to other copies of the PCDATA and FUNCDATA indexes.
      
      Change-Id: I5d6e49a6e586cc9aecd7c3ce1567679f2a605884
      Reviewed-on: https://go-review.googlesource.com/37330Reviewed-by: default avatarKeith Randall <khr@golang.org>
      bab19104
    • Kevin Burke's avatar
      os/user: add Go implementation of LookupGroup, LookupGroupId · 949f95e7
      Kevin Burke authored
      If cgo is not available, parse /etc/group in Go to find the name/gid
      we need. This does not consult the Network Information System (NIS),
      /etc/nsswitch.conf or any other libc extensions to /etc/group.
      
      Fixes #18102.
      
      Change-Id: I6ae4fe0e2c899396c45cdf243d5483113932657c
      Reviewed-on: https://go-review.googlesource.com/33713Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      949f95e7
    • Robert Griesemer's avatar
      go/internal/srcimporter: implemented srcimporter · 459d061c
      Robert Griesemer authored
      For #11415.
      
      Change-Id: I87a8f534ab9dfd5022422457ea637b342c057d77
      Reviewed-on: https://go-review.googlesource.com/37393Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      459d061c
    • Josh Bleecher Snyder's avatar
      cmd/compile: ignore some dead code during escape analysis · 1e29cd8c
      Josh Bleecher Snyder authored
      This is the escape analysis analog of CL 37499.
      
      Fixes #12397
      Fixes #16871
      
      The only "moved to heap" decisions eliminated by this
      CL in std+cmd are:
      
      cmd/compile/internal/gc/const.go:1514: moved to heap: ac
      cmd/compile/internal/gc/const.go:1515: moved to heap: bd
      cmd/compile/internal/gc/const.go:1516: moved to heap: bc
      cmd/compile/internal/gc/const.go:1517: moved to heap: ad
      cmd/compile/internal/gc/const.go:1546: moved to heap: ac
      cmd/compile/internal/gc/const.go:1547: moved to heap: bd
      cmd/compile/internal/gc/const.go:1548: moved to heap: bc
      cmd/compile/internal/gc/const.go:1549: moved to heap: ad
      cmd/compile/internal/gc/const.go:1550: moved to heap: cc_plus
      cmd/compile/internal/gc/export.go:162: moved to heap: copy
      cmd/compile/internal/gc/mpfloat.go:66: moved to heap: b
      cmd/compile/internal/gc/mpfloat.go:97: moved to heap: b
      
      Change-Id: I0d420b69c84a41ba9968c394e8957910bab5edea
      Reviewed-on: https://go-review.googlesource.com/37508Reviewed-by: default avatarDavid Chase <drchase@google.com>
      1e29cd8c
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: refactor liveness bitmap generation · 7b8f5118
      Matthew Dempsky authored
      Keep liveness bit vectors as simple live-variable vectors during
      liveness analysis. We can defer expanding them into runtime heap
      bitmaps until we're actually writing out the symbol data, and then we
      only need temporary memory to expand one bitmap at a time.
      
      This is logically cleaner (e.g., we no longer depend on stack frame
      layout during analysis) and saves a little bit on allocations.
      
      name       old alloc/op    new alloc/op    delta
      Template      41.4MB ± 0%     41.3MB ± 0%  -0.28%        (p=0.000 n=60+60)
      Unicode       32.6MB ± 0%     32.6MB ± 0%  -0.11%        (p=0.000 n=59+60)
      GoTypes        119MB ± 0%      119MB ± 0%  -0.35%        (p=0.000 n=60+59)
      Compiler       483MB ± 0%      481MB ± 0%  -0.47%        (p=0.000 n=59+60)
      
      name       old allocs/op   new allocs/op   delta
      Template        381k ± 1%       380k ± 1%  -0.32%        (p=0.000 n=60+60)
      Unicode         325k ± 1%       325k ± 1%    ~           (p=0.867 n=60+60)
      GoTypes        1.16M ± 0%      1.15M ± 0%  -0.40%        (p=0.000 n=60+59)
      Compiler       4.22M ± 0%      4.19M ± 0%  -0.61%        (p=0.000 n=59+60)
      
      Passes toolstash -cmp.
      
      Change-Id: I8175efe55201ffb5017f79ae6cb90df03f1b7e99
      Reviewed-on: https://go-review.googlesource.com/37458
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      7b8f5118
    • Josh Bleecher Snyder's avatar
      cmd/internal/obj/x86: improve static branch prediction for wrapper prologue · 88f423ed
      Josh Bleecher Snyder authored
      Static branch prediction assumes that forward branches are not taken.
      The existing wrapper prologue almost always takes the first forward
      branch.
      Move the rare case to the end of the function.
      
      This CL is amd64 only. Other architectures will be done in separate CLs.
      
      Updates #19042.
      
      Package sort benchmarks:
      
      SearchWrappers-8       104ns ± 2%   104ns ± 0%  -0.41%  (p=0.006 n=30+41)
      SortString1K-8         128µs ± 1%   128µs ± 1%  -0.25%  (p=0.045 n=30+56)
      SortString1K_Slice-8   117µs ± 1%   117µs ± 1%    ~     (p=0.855 n=30+59)
      StableString1K-8      18.6µs ± 1%  18.6µs ± 1%    ~     (p=0.599 n=29+60)
      SortInt1K-8           61.0µs ± 1%  56.5µs ± 1%  -7.36%  (p=0.000 n=29+58)
      StableInt1K-8         74.6µs ± 1%  70.4µs ± 3%  -5.54%  (p=0.000 n=28+60)
      StableInt1K_Slice-8   59.9µs ± 1%  58.3µs ± 4%  -2.64%  (p=0.000 n=29+60)
      SortInt64K-8          6.02ms ± 2%  5.98ms ± 2%  -0.60%  (p=0.000 n=29+59)
      SortInt64K_Slice-8    5.07ms ± 2%  5.05ms ± 2%  -0.38%  (p=0.006 n=30+58)
      StableInt64K-8        6.41ms ± 1%  6.22ms ± 1%  -3.00%  (p=0.000 n=27+58)
      Sort1e2-8             37.4µs ± 1%  37.1µs ± 1%  -0.91%  (p=0.000 n=30+57)
      Stable1e2-8           74.8µs ± 1%  75.2µs ± 1%  +0.52%  (p=0.000 n=30+57)
      Sort1e4-8             8.11ms ± 1%  8.01ms ± 1%  -1.20%  (p=0.000 n=30+59)
      Stable1e4-8           24.3ms ± 1%  24.3ms ± 1%    ~     (p=0.157 n=30+60)
      Sort1e6-8              1.25s ± 1%   1.23s ± 1%  -1.43%  (p=0.000 n=29+58)
      Stable1e6-8            4.93s ± 1%   4.90s ± 1%  -0.56%  (p=0.000 n=29+59)
      [Geo mean]             720µs        709µs       -1.52%
      
      Assembly for sort.(*intPairs).Swap:
      
      Before:
      
      "".(*intPairs).Swap t=1 size=147 args=0x18 locals=0x8
      	0x0000 00000 (<autogenerated>:1)	TEXT	"".(*intPairs).Swap(SB), $8-24
      	0x0000 00000 (<autogenerated>:1)	MOVQ	(TLS), CX
      	0x0009 00009 (<autogenerated>:1)	SUBQ	$8, SP
      	0x000d 00013 (<autogenerated>:1)	MOVQ	BP, (SP)
      	0x0011 00017 (<autogenerated>:1)	LEAQ	(SP), BP
      	0x0015 00021 (<autogenerated>:1)	MOVQ	32(CX), BX
      	0x0019 00025 (<autogenerated>:1)	TESTQ	BX, BX
      	0x001c 00028 (<autogenerated>:1)	JEQ	43
      	0x001e 00030 (<autogenerated>:1)	LEAQ	16(SP), DI
      	0x0023 00035 (<autogenerated>:1)	CMPQ	(BX), DI
      	0x0026 00038 (<autogenerated>:1)	JNE	43
      	0x0028 00040 (<autogenerated>:1)	MOVQ	SP, (BX)
      	0x002b 00043 (<autogenerated>:1)	NOP
      	0x002b 00043 (<autogenerated>:1)	FUNCDATA	$0, gclocals·e6397a44f8e1b6e77d0f200b4fba5269(SB)
      	0x002b 00043 (<autogenerated>:1)	FUNCDATA	$1, gclocals·69c1753bd5f81501d95132d08af04464(SB)
      	0x002b 00043 (<autogenerated>:1)	MOVQ	""..this+16(FP), AX
      	0x0030 00048 (<autogenerated>:1)	TESTQ	AX, AX
      	0x0033 00051 (<autogenerated>:1)	JEQ	$0, 140
      	0x0035 00053 (<autogenerated>:1)	MOVQ	(AX), CX
      	0x0038 00056 (<autogenerated>:1)	MOVQ	8(AX), AX
      	0x003c 00060 (<autogenerated>:1)	MOVQ	"".i+24(FP), DX
      	0x0041 00065 (<autogenerated>:1)	CMPQ	DX, AX
      	0x0044 00068 (<autogenerated>:1)	JCC	$0, 133
      	0x0046 00070 (<autogenerated>:1)	SHLQ	$4, DX
      	0x004a 00074 (<autogenerated>:1)	MOVQ	8(CX)(DX*1), BX
      	0x004f 00079 (<autogenerated>:1)	MOVQ	(CX)(DX*1), SI
      	0x0053 00083 (<autogenerated>:1)	MOVQ	"".j+32(FP), DI
      	0x0058 00088 (<autogenerated>:1)	CMPQ	DI, AX
      	0x005b 00091 (<autogenerated>:1)	JCC	$0, 133
      	0x005d 00093 (<autogenerated>:1)	SHLQ	$4, DI
      	0x0061 00097 (<autogenerated>:1)	MOVQ	8(CX)(DI*1), AX
      	0x0066 00102 (<autogenerated>:1)	MOVQ	(CX)(DI*1), R8
      	0x006a 00106 (<autogenerated>:1)	MOVQ	R8, (CX)(DX*1)
      	0x006e 00110 (<autogenerated>:1)	MOVQ	AX, 8(CX)(DX*1)
      	0x0073 00115 (<autogenerated>:1)	MOVQ	SI, (CX)(DI*1)
      	0x0077 00119 (<autogenerated>:1)	MOVQ	BX, 8(CX)(DI*1)
      	0x007c 00124 (<autogenerated>:1)	MOVQ	(SP), BP
      	0x0080 00128 (<autogenerated>:1)	ADDQ	$8, SP
      	0x0084 00132 (<autogenerated>:1)	RET
      	0x0085 00133 (<autogenerated>:1)	PCDATA	$0, $1
      	0x0085 00133 (<autogenerated>:1)	CALL	runtime.panicindex(SB)
      	0x008a 00138 (<autogenerated>:1)	UNDEF
      	0x008c 00140 (<autogenerated>:1)	PCDATA	$0, $1
      	0x008c 00140 (<autogenerated>:1)	CALL	runtime.panicwrap(SB)
      	0x0091 00145 (<autogenerated>:1)	UNDEF
      
      After:
      
      "".(*intPairs).Swap t=1 size=149 args=0x18 locals=0x8
      	0x0000 00000 (<autogenerated>:1)	TEXT	"".(*intPairs).Swap(SB), $8-24
      	0x0000 00000 (<autogenerated>:1)	MOVQ	(TLS), CX
      	0x0009 00009 (<autogenerated>:1)	SUBQ	$8, SP
      	0x000d 00013 (<autogenerated>:1)	MOVQ	BP, (SP)
      	0x0011 00017 (<autogenerated>:1)	LEAQ	(SP), BP
      	0x0015 00021 (<autogenerated>:1)	MOVQ	32(CX), BX
      	0x0019 00025 (<autogenerated>:1)	TESTQ	BX, BX
      	0x001c 00028 (<autogenerated>:1)	JNE	134
      	0x001e 00030 (<autogenerated>:1)	NOP
      	0x001e 00030 (<autogenerated>:1)	FUNCDATA	$0, gclocals·e6397a44f8e1b6e77d0f200b4fba5269(SB)
      	0x001e 00030 (<autogenerated>:1)	FUNCDATA	$1, gclocals·69c1753bd5f81501d95132d08af04464(SB)
      	0x001e 00030 (<autogenerated>:1)	MOVQ	""..this+16(FP), AX
      	0x0023 00035 (<autogenerated>:1)	TESTQ	AX, AX
      	0x0026 00038 (<autogenerated>:1)	JEQ	$0, 127
      	0x0028 00040 (<autogenerated>:1)	MOVQ	(AX), CX
      	0x002b 00043 (<autogenerated>:1)	MOVQ	8(AX), AX
      	0x002f 00047 (<autogenerated>:1)	MOVQ	"".i+24(FP), DX
      	0x0034 00052 (<autogenerated>:1)	CMPQ	DX, AX
      	0x0037 00055 (<autogenerated>:1)	JCC	$0, 120
      	0x0039 00057 (<autogenerated>:1)	SHLQ	$4, DX
      	0x003d 00061 (<autogenerated>:1)	MOVQ	8(CX)(DX*1), BX
      	0x0042 00066 (<autogenerated>:1)	MOVQ	(CX)(DX*1), SI
      	0x0046 00070 (<autogenerated>:1)	MOVQ	"".j+32(FP), DI
      	0x004b 00075 (<autogenerated>:1)	CMPQ	DI, AX
      	0x004e 00078 (<autogenerated>:1)	JCC	$0, 120
      	0x0050 00080 (<autogenerated>:1)	SHLQ	$4, DI
      	0x0054 00084 (<autogenerated>:1)	MOVQ	8(CX)(DI*1), AX
      	0x0059 00089 (<autogenerated>:1)	MOVQ	(CX)(DI*1), R8
      	0x005d 00093 (<autogenerated>:1)	MOVQ	R8, (CX)(DX*1)
      	0x0061 00097 (<autogenerated>:1)	MOVQ	AX, 8(CX)(DX*1)
      	0x0066 00102 (<autogenerated>:1)	MOVQ	SI, (CX)(DI*1)
      	0x006a 00106 (<autogenerated>:1)	MOVQ	BX, 8(CX)(DI*1)
      	0x006f 00111 (<autogenerated>:1)	MOVQ	(SP), BP
      	0x0073 00115 (<autogenerated>:1)	ADDQ	$8, SP
      	0x0077 00119 (<autogenerated>:1)	RET
      	0x0078 00120 (<autogenerated>:1)	PCDATA	$0, $1
      	0x0078 00120 (<autogenerated>:1)	CALL	runtime.panicindex(SB)
      	0x007d 00125 (<autogenerated>:1)	UNDEF
      	0x007f 00127 (<autogenerated>:1)	PCDATA	$0, $1
      	0x007f 00127 (<autogenerated>:1)	CALL	runtime.panicwrap(SB)
      	0x0084 00132 (<autogenerated>:1)	UNDEF
      	0x0086 00134 (<autogenerated>:1)	LEAQ	16(SP), DI
      	0x008b 00139 (<autogenerated>:1)	CMPQ	(BX), DI
      	0x008e 00142 (<autogenerated>:1)	JNE	30
      	0x0090 00144 (<autogenerated>:1)	MOVQ	SP, (BX)
      	0x0093 00147 (<autogenerated>:1)	JMP	30
      
      Change-Id: Ie8c37f384bba10fbacaa754bb0a6b0a7e520ef01
      Reviewed-on: https://go-review.googlesource.com/36893Reviewed-by: default avatarKeith Randall <khr@golang.org>
      88f423ed
    • Matthew Dempsky's avatar
      cmd/compile/internal/gc: simplify ascompatte · f7f3514b
      Matthew Dempsky authored
      Passes toolstash -cmp.
      
      Change-Id: Ibb51ccaf29ee97c3463543175c9ac7b85ea10a7f
      Reviewed-on: https://go-review.googlesource.com/37339Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      f7f3514b
    • Dmitry Vyukov's avatar
      runtime: remove unused RaceSemacquire declaration · ba6e5776
      Dmitry Vyukov authored
      These functions are not defined and are not used.
      
      Fixes #19290
      
      Change-Id: I2978147220af83cf319f7439f076c131870fb9ee
      Reviewed-on: https://go-review.googlesource.com/37448Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Dmitry Vyukov <dvyukov@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      ba6e5776
    • Robert Griesemer's avatar
      go/build: move math/bits into L1 set of dependencies · 31e63346
      Robert Griesemer authored
      Per suggestion from rsc.
      
      Change-Id: I4b61ec6f35ffaaa792b75e011fbba1bdfbabc1f6
      Reviewed-on: https://go-review.googlesource.com/37501
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      31e63346
    • Tom Bergan's avatar
      net/http: update bundles http2 · 5ae7cbff
      Tom Bergan authored
      Updates http2 to x/net/http2 git rev 906cda9 for:
      
      http2: add configurable knobs for the server's receive window
      https://golang.org/cl/37226
      
      http2/hpack: speedup Encoder.searchTable
      https://golang.org/cl/37406
      
      http2: Add opt-in option to Framer to allow DataFrame struct reuse
      https://golang.org/cl/34812
      
      http2: replace fixedBuffer with dataBuffer
      https://golang.org/cl/37400
      
      http2/hpack: remove hpack's constant time string comparison
      https://golang.org/cl/37394
      
      Updates golang/go#16512
      Updates golang/go#18404
      
      Change-Id: I1ad7c95c404ead4ced7f85af061cf811b299a288
      Reviewed-on: https://go-review.googlesource.com/37500Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      5ae7cbff
    • Josh Bleecher Snyder's avatar
      cmd/compile: simplify and clean up inlnode · 0df81e88
      Josh Bleecher Snyder authored
      Change-Id: I0d14d68b57e8605cdae8a45d6fa97255a42297d8
      Reviewed-on: https://go-review.googlesource.com/37521
      Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      0df81e88
    • Josh Bleecher Snyder's avatar
      cmd/compile: ignore some dead code when deciding whether to inline · 566e72d0
      Josh Bleecher Snyder authored
      Constant evaluation provides some rudimentary
      knowledge of dead code at inlining decision time.
      Use it.
      
      This CL addresses only dead code inside if statements.
      For statements are never inlined anyway,
      and dead code inside for statements is rare.
      Analyzing switch statements is worth doing,
      but it is more complicated, since we would have
      to evaluate each case; leave it for later.
      
      Fixes #9274
      
      After this CL, the following functions in std+cmd
      can be newly inlined:
      
      cmd/internal/obj/x86/asm6.go:3122: can inline subreg
      cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go:172: can inline instPrefix
      cmd/vendor/golang.org/x/arch/x86/x86asm/decode.go:202: can inline truncated
      go/constant/value.go:234: can inline makeFloat
      go/types/labels.go:52: can inline (*block).insert
      math/big/float.go:231: can inline (*Float).Sign
      math/bits/bits.go:57: can inline OnesCount
      net/http/server.go:597: can inline (*Server).newConn
      runtime/hashmap.go:1165: can inline reflect_maplen
      runtime/proc.go:207: can inline os_beforeExit
      runtime/signal_unix.go:55: can inline init.5
      runtime/stack.go:1081: can inline gostartcallfn
      
      Change-Id: I4c92fb96aa0c3d33df7b3f2da548612e79b56b5b
      Reviewed-on: https://go-review.googlesource.com/37499Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      566e72d0
    • Josh Bleecher Snyder's avatar
      runtime/pprof: handle empty stack traces in Profile.Add · c7894924
      Josh Bleecher Snyder authored
      If the caller passes a large number to Profile.Add,
      the list of pcs is empty, which results in junk
      (a nil pc) being recorded. Check for that explicitly,
      and replace such stack traces with a lostProfileEvent.
      
      Fixes #18836.
      
      Change-Id: I99c96aa67dd5525cd239ea96452e6e8fcb25ce02
      Reviewed-on: https://go-review.googlesource.com/36891Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      c7894924
    • Kevin Burke's avatar
      os/user: rename group cgo file · eae657e9
      Kevin Burke authored
      In another CL, I'll add a pure Go implementation of lookupGroup and
      lookupGroupId in lookup_unix.go, but attempting that in one CL makes
      the diff too difficult to read.
      
      Updates #18102.
      
      Change-Id: If8e26cee5efd30385763430f34304c70165aef32
      Reviewed-on: https://go-review.googlesource.com/37497Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      eae657e9
  3. 26 Feb, 2017 1 commit
  4. 25 Feb, 2017 6 commits
  5. 24 Feb, 2017 12 commits
    • Martin Möhrmann's avatar
      strings: speed up Map · 4b3e6fe1
      Martin Möhrmann authored
      name                  old time/op  new time/op  delta
      ByteByteMap-4         2.03µs ± 2%  1.03µs ± 2%  -49.24%  (p=0.000 n=10+10)
      Map/identity/ASCII-4   246ns ± 0%   158ns ± 0%  -35.90%    (p=0.000 n=9+9)
      Map/identity/Greek-4   367ns ± 1%   273ns ± 1%  -25.63%  (p=0.000 n=10+10)
      Map/change/ASCII-4     582ns ± 1%   324ns ± 1%  -44.34%  (p=0.000 n=10+10)
      Map/change/Greek-4     709ns ± 2%   623ns ± 2%  -12.16%  (p=0.000 n=10+10)
      MapNoChanges-4         171ns ± 1%   111ns ± 1%  -35.36%   (p=0.000 n=8+10)
      
      Updates #17859
      
      Change-Id: I55d7d261fdc1ce2dcd0ebe23b0fa20b9889bf54c
      Reviewed-on: https://go-review.googlesource.com/33201Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      4b3e6fe1
    • Michael Munday's avatar
      os/exec: deflake TestPipeLookPathLeak · 221bc23a
      Michael Munday authored
      The number of open file descriptors reported by lsof is unreliable
      because it depends on whether the parent process (the test) closed
      the file descriptors it passed into the child process (lsof) before
      lsof runs.
      
      Reading /proc/self/fd directly on Linux appears to be much more
      reliable and still detects any file descriptor leaks originating
      from attempting to run an executable that cannot be found (issue
      #5071). If /proc/self/fd is not available (e.g. on Darwin) then we
      fall back to lsof and tolerate small differences in open file
      descriptor counts.
      
      Fixes #19243.
      
      Change-Id: I052b0c129e609010f1083e43a9911cba154117bf
      Reviewed-on: https://go-review.googlesource.com/37343
      Run-TryBot: Michael Munday <munday@ca.ibm.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      221bc23a
    • Martin Möhrmann's avatar
      cmd/compile: make setting and accessing of node slice elements more uniform · fdef9511
      Martin Möhrmann authored
      Add Set3 function to complement existing Set1 and Set2 functions.
      Consistently use Set1, Set2 and Set3 for []*Node instead of Set where applicable.
      
      Add SetFirst and SetSecond for setting elements of []*Node to mirror
      First and Second for accessing elements in []*Node.
      
      Replace uses of Index by First and Second and
      SetIndex with SetFirst and SetSecond where applicable.
      
      Passes toolstash -cmp.
      
      Change-Id: I8255aae768cf245c8f93eec2e9efa05b8112b4e5
      Reviewed-on: https://go-review.googlesource.com/37430
      Run-TryBot: Martin Möhrmann <moehrmann@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMatthew Dempsky <mdempsky@google.com>
      fdef9511
    • Lorenzo Masini's avatar
      cmd/compile: speed up TestAssembly · fb1f47a7
      Lorenzo Masini authored
      TestAssembly was very slow, leading to it being skipped by default.
      This is not surprising, it separately invoked the compiler and
      parsed the result many times.
      
      Now the test assembles one source file for arch/os combination,
      containing the relevant functions.
      
      Tests for each arch/os run in parallel.
      
      Now the test runs approximately 10x faster on my Intel(R) Core(TM)
      i5-6600 CPU @ 3.30GHz.
      
      Fixes #18966
      
      Change-Id: I45ab97630b627a32e17900c109f790eb4c0e90d9
      Reviewed-on: https://go-review.googlesource.com/37270
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      fb1f47a7
    • Russ Cox's avatar
      test: deflake locklinear a little · 349b7820
      Russ Cox authored
      This should help on the openbsd systems where the test mostly passes.
      
      I don't expect it to help on s390x where the test reliably fails.
      But it should give more information when it does fail.
      
      For #19276.
      
      Change-Id: I496c291f2b4b0c747b8dd4315477d87d03010059
      Reviewed-on: https://go-review.googlesource.com/37348
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      349b7820
    • Kevin Burke's avatar
      cmd/internal/browser: fix typo · 67fcd9c5
      Kevin Burke authored
      Change-Id: I3c31f10c1082c7bc57aac18856014c55f79e0fed
      Reviewed-on: https://go-review.googlesource.com/37409Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      67fcd9c5
    • Russ Cox's avatar
      runtime: check that pprof accepts but doesn't need executable · 8c24e522
      Russ Cox authored
      The profiles are self-contained now.
      Check that they work by themselves in the tests that invoke pprof,
      but also keep checking that the old command lines work.
      
      Change-Id: I24c74b5456f0b50473883c3640625c6612f72309
      Reviewed-on: https://go-review.googlesource.com/37166
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMichael Matloob <matloob@golang.org>
      8c24e522
    • Russ Cox's avatar
      runtime/pprof/internal/profile: move internal/pprof/profile here · 0b8c983e
      Russ Cox authored
      Nothing needs internal/pprof anymore except the runtime/pprof tests.
      Move the package here to prevent new dependencies.
      
      Change-Id: Ia119af91cc2b980e0fa03a15f46f69d7f71d2926
      Reviewed-on: https://go-review.googlesource.com/37165
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarMichael Matloob <matloob@golang.org>
      0b8c983e
    • Russ Cox's avatar
      runtime/pprof: add streaming protobuf encoder · cbab65fd
      Russ Cox authored
      The existing code builds a full profile in memory.
      Then it translates that profile into a data structure (in memory).
      Then it marshals that data structure into a protocol buffer (in memory).
      Then it gzips that marshaled form into the underlying writer.
      So there are three copies of the full profile data in memory
      at the same time before we're done. This is obviously dumb.
      
      This CL implements a fully streaming conversion from
      the original in-memory profile to the underlying writer.
      There is now only one copy of the profile in memory.
      
      For the non-CPU profiles, this is optimal, since we have to
      have a full copy in memory to start with.
      
      For the CPU profiles, we could still try to bound the profile
      size stored in memory and stream fragments out during
      the actual profiling, as Go 1.7 did (with a simpler format),
      but so far that hasn't been necessary.
      
      Change-Id: Ic36141021857791bf0cd1fce84178fb5e744b989
      Reviewed-on: https://go-review.googlesource.com/37164
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarMichael Matloob <matloob@golang.org>
      cbab65fd
    • Robert Griesemer's avatar
      math/big: use math/bits where appropriate · 322fff8a
      Robert Griesemer authored
      This change adds math/bits as a new dependency of math/big.
      
      - use bits.LeadingZeroes instead of local implementation
        (they are identical, so there's no performance loss here)
      
      - leave other functionality local (ntz, bitLen) since there's
        faster implementations in math/big at the moment
      
      Change-Id: I1218aa8a1df0cc9783583b090a4bb5a8a145c4a2
      Reviewed-on: https://go-review.googlesource.com/37141Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      322fff8a
    • Raul Silvera's avatar
      cmd/pprof: vendor pprof from github.com/google/pprof · 7844ef42
      Raul Silvera authored
      Import the github.com/google/pprof and github.com/ianlancetaylor/demangle
      packages, without modification.
      
      Build the golang version of pprof from cmd/pprof/pprof.go
      by importing the packages from src/cmd/vendot/github.com/google/pprof
      
      The versions upstreamed are:
      
      github.com/ianlancetaylor/demangle 4883227f66371e02c4948937d3e2be1664d9be38
      github.com/google/pprof            7eb5ba977f28f2ad8dd5f6bb82cc9b454e123cdc
      
      Update misc/nacl/testzip.proto for new tests.
      
      Change-Id: I076584856491353607a3b98b67d0ca6838be50d6
      Reviewed-on: https://go-review.googlesource.com/36798
      Run-TryBot: Russ Cox <rsc@golang.org>
      Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      7844ef42
    • Chris Broadfoot's avatar
      cmd/internal/browser: wait 3 seconds for non-zero exit codes · 2818cb5c
      Chris Broadfoot authored
      Wait a short period between trying commands. Many commands
      will return a non-zero exit code if the browser couldn't be launched.
      
      For example, google-chrome returns quickly with a non-zero
      exit code in a headless environment.
      
      Updates #19131.
      
      Change-Id: I0ae5356dd4447969d9e216615449cead7a8fd5c9
      Reviewed-on: https://go-review.googlesource.com/37391Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      2818cb5c