1. 27 Feb, 2017 9 commits
    • 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
  2. 26 Feb, 2017 1 commit
  3. 25 Feb, 2017 6 commits
  4. 24 Feb, 2017 21 commits
  5. 23 Feb, 2017 3 commits