1. 15 May, 2015 14 commits
    • Josh Bleecher Snyder's avatar
      cmd/internal/gc: separate Name-only Node fields · 76ec0ee5
      Josh Bleecher Snyder authored
      Name will be converted from an anonymous to a
      named field in a subsequent, automated CL.
      
      No functional changes. Passes toolstash -cmp.
      
      This reduces the size of gc.Node from 424 to 400 bytes.
      This in turn reduces the permanent (pprof -inuse_space)
      memory usage while compiling the test/rotate?.go tests:
      
      test	old(MB)	new(MB)	change
      rotate0	379.49	367.30	-3.21%
      rotate1	373.42	361.59	-3.16%
      rotate2	381.17	368.77	-3.25%
      rotate3	374.30	362.48	-3.15%
      
      Updates #9933.
      
      Change-Id: I21479527c136add4f1efb9342774e3be3e276e83
      Reviewed-on: https://go-review.googlesource.com/10120Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      76ec0ee5
    • Josh Bleecher Snyder's avatar
      cmd/internal/gc: convert Val.U to interface{} · 13485be9
      Josh Bleecher Snyder authored
      This CL was generated by updating Val in go.go
      and then running:
      
      sed -i "" 's/\.U\.[SBXFC]val = /.U = /' *.go
      sed -i "" 's/\.U\.Sval/.U.\(string\)/g' *.go *.y
      sed -i "" 's/\.U\.Bval/.U.\(bool\)/g' *.go *.y
      sed -i "" 's/\.U\.Xval/.U.\(\*Mpint\)/g' *.go *.y
      sed -i "" 's/\.U\.Fval/.U.\(\*Mpflt\)/g' *.go *.y
      sed -i "" 's/\.U\.Cval/.U.\(\*Mpcplx\)/g' *.go *.y
      
      No functional changes. Passes toolstash -cmp.
      
      This reduces the size of gc.Node from 424 to 392 bytes.
      This in turn reduces the permanent (pprof -inuse_space)
      memory usage while compiling the test/rotate?.go tests:
      
      test	old(MB)	new(MB)	change
      rotate0	379.49	364.78	-3.87%
      rotate1	373.42	359.07	-3.84%
      rotate2	381.17	366.24	-3.91%
      rotate3	374.30	359.95	-3.83%
      
      CL 8445 was similar to this; gri asked that Val's implementation
      be hidden first. CLs 8912, 9263, and 9267 have at least
      isolated the changes to the cmd/internal/gc package.
      
      Updates #9933.
      
      Change-Id: I83ddfe003d48e0a73c92e819edd3b5e620023084
      Reviewed-on: https://go-review.googlesource.com/10059Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      13485be9
    • Josh Bleecher Snyder's avatar
      cmd/internal/gc: explicitly set zero bool Val · 3c06cff7
      Josh Bleecher Snyder authored
      This trivial change is a prerequisite to
      converting Val.U to an interface{}.
      
      No functional changes. Passes toolstash -cmp.
      
      Change-Id: I17ff036f68d29a9ed0097a8b23ae1c91e6ce8c21
      Reviewed-on: https://go-review.googlesource.com/10058Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      3c06cff7
    • Josh Bleecher Snyder's avatar
      cmd/5g, etc: prepare Node.Val to be unexported · ba577811
      Josh Bleecher Snyder authored
      Remove all uses of Node.Val outside of the gc package.
      
      A subsequent, automated commit in the Go 1.6 cycle
      will unexport Node.Val.
      
      No functional changes. Passes toolstash -cmp.
      
      Change-Id: Ia92ae6a7766c83ab3e45c69edab24a9581c824f9
      Reviewed-on: https://go-review.googlesource.com/9267Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      ba577811
    • Josh Bleecher Snyder's avatar
      cmd/5g, etc: prepare to unexport gc.Mp* · 0112f6f6
      Josh Bleecher Snyder authored
      Remove all uses of Mp* outside of the gc package.
      
      A subsequent, automated commit in the Go 1.6
      cycle will unexport all Mp* functions and types.
      
      No functional changes. Passes toolstash -cmp.
      
      Change-Id: Ie1604cb5b84ffb30b47f4777d4235570f2c62709
      Reviewed-on: https://go-review.googlesource.com/9263Reviewed-by: default avatarRuss Cox <rsc@golang.org>
      0112f6f6
    • Russ Cox's avatar
      runtime: allocate map element zero values for reflect-created types on demand · 7e26a2d9
      Russ Cox authored
      Preallocating them in reflect means that
      (1) if you say _ = PtrTo(ArrayOf(1000000000, reflect.TypeOf(byte(0)))), you just allocated 1GB of data
      (2) if you say it again, that's *another* GB of data.
      
      The only use of t.zero in the runtime is for map elements.
      Delay the allocation until the creation of a map with that element type,
      and share the zeros.
      
      The one downside of the shared zero is that it's not garbage collected,
      but it's also never written, so the OS should be able to handle it fairly
      efficiently.
      
      Change-Id: I56b098a091abf3ac0945de28ebef9a6c08e76614
      Reviewed-on: https://go-review.googlesource.com/10111Reviewed-by: default avatarKeith Randall <khr@golang.org>
      7e26a2d9
    • Russ Cox's avatar
      runtime: optimize heapBitsBulkBarrier a tiny amount · 65c4d7be
      Russ Cox authored
      This may be mostly noise but:
      
      name                   old mean              new mean              delta
      BinaryTree17            6.03s × (0.98,1.02)   5.98s × (0.97,1.03)    ~    (p=0.306)
      Fannkuch11              4.42s × (0.99,1.01)   4.34s × (0.99,1.02)  -1.83% (p=0.000)
      FmtFprintfEmpty        84.7ns × (0.99,1.01)  84.4ns × (1.00,1.00)    ~    (p=0.138)
      FmtFprintfString        289ns × (0.98,1.02)   289ns × (1.00,1.01)    ~    (p=0.509)
      FmtFprintfInt           280ns × (0.97,1.03)   272ns × (0.98,1.03)  -2.64% (p=0.003)
      FmtFprintfIntInt        484ns × (0.98,1.02)   482ns × (0.98,1.03)    ~    (p=0.606)
      FmtFprintfPrefixedInt   397ns × (0.98,1.03)   393ns × (0.99,1.02)    ~    (p=0.064)
      FmtFprintfFloat         573ns × (0.99,1.01)   569ns × (0.99,1.01)  -0.69% (p=0.023)
      FmtManyArgs            1.89µs × (0.99,1.02)  1.91µs × (0.98,1.02)    ~    (p=0.219)
      GobDecode              15.4ms × (0.99,1.02)  15.1ms × (0.99,1.01)  -2.05% (p=0.000)
      GobEncode              12.0ms × (0.97,1.04)  11.9ms × (0.97,1.03)    ~    (p=0.458)
      Gzip                    652ms × (0.99,1.01)   653ms × (0.99,1.01)    ~    (p=0.743)
      Gunzip                  144ms × (0.99,1.01)   143ms × (0.99,1.01)    ~    (p=0.134)
      HTTPClientServer       91.6µs × (0.99,1.01)  91.8µs × (0.99,1.03)    ~    (p=0.678)
      JSONEncode             31.9ms × (1.00,1.00)  32.0ms × (0.99,1.01)    ~    (p=0.334)
      JSONDecode              110ms × (0.99,1.01)   110ms × (0.99,1.01)    ~    (p=0.315)
      Mandelbrot200          6.04ms × (0.99,1.01)  6.04ms × (1.00,1.01)    ~    (p=0.596)
      GoParse                6.72ms × (0.98,1.03)  6.74ms × (0.99,1.03)    ~    (p=0.577)
      RegexpMatchEasy0_32     161ns × (0.99,1.01)   160ns × (1.00,1.00)  -0.83% (p=0.002)
      RegexpMatchEasy0_1K     542ns × (0.99,1.02)   541ns × (0.99,1.01)    ~    (p=0.396)
      RegexpMatchEasy1_32     140ns × (0.98,1.01)   137ns × (1.00,1.00)  -2.12% (p=0.000)
      RegexpMatchEasy1_1K     892ns × (0.99,1.01)   891ns × (1.00,1.01)    ~    (p=0.631)
      RegexpMatchMedium_32    255ns × (0.99,1.01)   253ns × (0.99,1.01)  -0.76% (p=0.008)
      RegexpMatchMedium_1K   73.1µs × (1.00,1.01)  72.9µs × (1.00,1.00)    ~    (p=0.229)
      RegexpMatchHard_32     3.86µs × (1.00,1.01)  3.85µs × (1.00,1.00)    ~    (p=0.341)
      RegexpMatchHard_1K      117µs × (1.00,1.01)   117µs × (0.99,1.00)    ~    (p=0.955)
      Revcomp                 954ms × (0.97,1.03)   955ms × (0.98,1.02)    ~    (p=0.894)
      Template                133ms × (0.97,1.05)   129ms × (0.99,1.02)  -2.50% (p=0.014)
      TimeParse               629ns × (0.99,1.01)   626ns × (0.99,1.01)    ~    (p=0.106)
      TimeFormat              663ns × (0.99,1.01)   660ns × (0.99,1.02)    ~    (p=0.231)
      
      Change-Id: I580e03ed01b0629cb5eae4c4637618f20127f924
      Reviewed-on: https://go-review.googlesource.com/9994Reviewed-by: default avatarAustin Clements <austin@google.com>
      65c4d7be
    • Russ Cox's avatar
      runtime: use memmove during slice append · 497970f4
      Russ Cox authored
      The effect of this CL:
      
      name                   old mean              new mean              delta
      BinaryTree17            5.97s × (0.96,1.04)   5.95s × (0.98,1.02)    ~    (p=0.697)
      Fannkuch11              4.39s × (1.00,1.01)   4.41s × (1.00,1.01)  +0.52% (p=0.015)
      FmtFprintfEmpty        90.8ns × (0.97,1.05)  89.4ns × (0.94,1.13)    ~    (p=0.571)
      FmtFprintfString        305ns × (0.99,1.01)   292ns × (0.98,1.05)  -4.35% (p=0.000)
      FmtFprintfInt           278ns × (0.96,1.03)   279ns × (0.98,1.04)    ~    (p=0.741)
      FmtFprintfIntInt        489ns × (0.99,1.02)   482ns × (0.98,1.03)  -1.43% (p=0.024)
      FmtFprintfPrefixedInt   402ns × (0.98,1.02)   395ns × (0.98,1.03)  -1.67% (p=0.014)
      FmtFprintfFloat         578ns × (1.00,1.00)   569ns × (0.99,1.01)  -1.48% (p=0.000)
      FmtManyArgs            1.88µs × (0.99,1.01)  1.88µs × (1.00,1.01)    ~    (p=0.055)
      GobDecode              15.3ms × (0.99,1.01)  15.2ms × (1.00,1.01)  -0.61% (p=0.007)
      GobEncode              11.8ms × (0.98,1.05)  11.6ms × (0.99,1.01)    ~    (p=0.075)
      Gzip                    647ms × (0.99,1.01)   647ms × (1.00,1.00)    ~    (p=0.790)
      Gunzip                  143ms × (1.00,1.00)   142ms × (1.00,1.00)    ~    (p=0.370)
      HTTPClientServer       91.2µs × (0.99,1.01)  91.7µs × (0.99,1.02)    ~    (p=0.233)
      JSONEncode             31.5ms × (0.98,1.01)  31.8ms × (0.99,1.02)  +1.09% (p=0.015)
      JSONDecode              110ms × (0.99,1.01)   110ms × (0.99,1.02)    ~    (p=0.577)
      Mandelbrot200          6.00ms × (1.00,1.00)  6.02ms × (1.00,1.00)  +0.24% (p=0.001)
      GoParse                6.68ms × (0.98,1.02)  6.61ms × (0.99,1.01)  -1.10% (p=0.027)
      RegexpMatchEasy0_32     162ns × (1.00,1.00)   161ns × (1.00,1.01)  -0.66% (p=0.001)
      RegexpMatchEasy0_1K     539ns × (1.00,1.00)   539ns × (0.99,1.01)    ~    (p=0.509)
      RegexpMatchEasy1_32     140ns × (0.99,1.02)   139ns × (0.99,1.02)    ~    (p=0.163)
      RegexpMatchEasy1_1K     886ns × (1.00,1.00)   887ns × (1.00,1.00)    ~    (p=0.408)
      RegexpMatchMedium_32    252ns × (1.00,1.00)   255ns × (0.99,1.01)  +1.01% (p=0.000)
      RegexpMatchMedium_1K   72.6µs × (1.00,1.00)  72.6µs × (1.00,1.00)    ~    (p=0.176)
      RegexpMatchHard_32     3.84µs × (1.00,1.00)  3.84µs × (1.00,1.00)    ~    (p=0.403)
      RegexpMatchHard_1K      117µs × (1.00,1.00)   117µs × (1.00,1.00)    ~    (p=0.351)
      Revcomp                 926ms × (0.99,1.01)   925ms × (0.99,1.01)    ~    (p=0.541)
      Template                126ms × (0.99,1.02)   130ms × (0.99,1.01)  +3.42% (p=0.000)
      TimeParse               632ns × (0.99,1.01)   626ns × (1.00,1.00)  -0.88% (p=0.000)
      TimeFormat              658ns × (0.99,1.01)   662ns × (0.99,1.02)    ~    (p=0.111)
      
      The effect of this CL combined with CL 9886:
      
      name                   old mean              new mean              delta
      BinaryTree17            5.90s × (0.98,1.03)   5.95s × (0.98,1.02)    ~    (p=0.175)
      Fannkuch11              4.34s × (1.00,1.00)   4.41s × (1.00,1.01)  +1.69% (p=0.000)
      FmtFprintfEmpty        87.3ns × (0.97,1.17)  89.4ns × (0.94,1.13)    ~    (p=0.499)
      FmtFprintfString        288ns × (0.98,1.04)   292ns × (0.98,1.05)    ~    (p=0.292)
      FmtFprintfInt           290ns × (0.98,1.05)   279ns × (0.98,1.04)  -3.76% (p=0.001)
      FmtFprintfIntInt        493ns × (0.98,1.04)   482ns × (0.98,1.03)  -2.27% (p=0.017)
      FmtFprintfPrefixedInt   399ns × (0.98,1.02)   395ns × (0.98,1.03)    ~    (p=0.159)
      FmtFprintfFloat         569ns × (1.00,1.00)   569ns × (0.99,1.01)    ~    (p=0.847)
      FmtManyArgs            1.90µs × (0.99,1.03)  1.88µs × (1.00,1.01)  -1.14% (p=0.009)
      GobDecode              15.2ms × (1.00,1.01)  15.2ms × (1.00,1.01)    ~    (p=0.170)
      GobEncode              11.8ms × (0.99,1.02)  11.6ms × (0.99,1.01)  -1.47% (p=0.003)
      Gzip                    649ms × (0.99,1.00)   647ms × (1.00,1.00)    ~    (p=0.200)
      Gunzip                  144ms × (0.99,1.01)   142ms × (1.00,1.00)  -1.04% (p=0.000)
      HTTPClientServer       91.1µs × (0.98,1.03)  91.7µs × (0.99,1.02)    ~    (p=0.345)
      JSONEncode             31.5ms × (0.99,1.01)  31.8ms × (0.99,1.02)  +0.98% (p=0.021)
      JSONDecode              110ms × (1.00,1.01)   110ms × (0.99,1.02)    ~    (p=0.259)
      Mandelbrot200          6.02ms × (1.00,1.01)  6.02ms × (1.00,1.00)    ~    (p=0.500)
      GoParse                6.68ms × (1.00,1.01)  6.61ms × (0.99,1.01)  -1.17% (p=0.001)
      RegexpMatchEasy0_32     161ns × (1.00,1.00)   161ns × (1.00,1.01)  -0.39% (p=0.033)
      RegexpMatchEasy0_1K     539ns × (1.00,1.00)   539ns × (0.99,1.01)    ~    (p=0.445)
      RegexpMatchEasy1_32     138ns × (1.00,1.01)   139ns × (0.99,1.02)    ~    (p=0.281)
      RegexpMatchEasy1_1K     887ns × (1.00,1.01)   887ns × (1.00,1.00)    ~    (p=0.610)
      RegexpMatchMedium_32    251ns × (1.00,1.02)   255ns × (0.99,1.01)  +1.42% (p=0.000)
      RegexpMatchMedium_1K   72.7µs × (1.00,1.00)  72.6µs × (1.00,1.00)    ~    (p=0.097)
      RegexpMatchHard_32     3.85µs × (1.00,1.00)  3.84µs × (1.00,1.00)  -0.31% (p=0.000)
      RegexpMatchHard_1K      117µs × (1.00,1.00)   117µs × (1.00,1.00)    ~    (p=0.704)
      Revcomp                 923ms × (0.98,1.02)   925ms × (0.99,1.01)    ~    (p=0.574)
      Template                126ms × (0.98,1.03)   130ms × (0.99,1.01)  +3.28% (p=0.000)
      TimeParse               631ns × (0.99,1.02)   626ns × (1.00,1.00)    ~    (p=0.053)
      TimeFormat              660ns × (0.99,1.01)   662ns × (0.99,1.02)    ~    (p=0.398)
      
      Change-Id: I59c03d329fe7bc178a31477c6f1f01062b881041
      Reviewed-on: https://go-review.googlesource.com/9993Reviewed-by: default avatarAustin Clements <austin@google.com>
      497970f4
    • David Symonds's avatar
      cmd/go: fix count of number of reserved names (doc change). · 3b214175
      David Symonds authored
      Change-Id: I2784f831453d929df64c66febb4982cdf1f08e06
      Reviewed-on: https://go-review.googlesource.com/10133Reviewed-by: default avatarMinux Ma <minux@golang.org>
      3b214175
    • Patrick Mezard's avatar
      internal/syscall/windows/registry: fix read overrun in GetStringsValue · 335e44d2
      Patrick Mezard authored
      According to MSDN RegQueryValueEx page:
      
        If the data has the REG_SZ, REG_MULTI_SZ or REG_EXPAND_SZ type, the
        string may not have been stored with the proper terminating null
        characters. Therefore, even if the function returns ERROR_SUCCESS, the
        application should ensure that the string is properly terminated before
        using it; otherwise, it may overwrite a buffer. (Note that REG_MULTI_SZ
        strings should have two terminating null characters.)
      
      Test written by Alex Brainman <alex.brainman@gmail.com>
      
      Change-Id: I8c0852e0527e27ceed949134ed5e6de944189986
      Reviewed-on: https://go-review.googlesource.com/9806Reviewed-by: default avatarAlex Brainman <alex.brainman@gmail.com>
      Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
      335e44d2
    • Shenghou Ma's avatar
      syscall: add test for Flock_t roundtrip · ed8ae792
      Shenghou Ma authored
      See CL 9962 for the rationale.
      
      Change-Id: I73c714fce258430eea1e61d3835f5c8e9014ca1f
      Signed-off-by: default avatarShenghou Ma <minux@golang.org>
      Reviewed-on: https://go-review.googlesource.com/9925Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      ed8ae792
    • Shenghou Ma's avatar
      syscall: add explicit build tags · 38631846
      Shenghou Ma authored
      Auto-generated using the following bash script:
      for i in z*_*_*.go; do
              goosgoarch=`basename ${i/${i/_*/}_/} .go`
              goos=${goosgoarch/_*/}
              goarch=${goosgoarch/*_/}
              echo $i $goos $goarch
              [ "$goos" = "windows" ] && continue
              sed -i -e "/^package /i\/\/ +build $goarch,$goos\n" "$i"
      done
      
      Change-Id: I756fee551d1698080e4591fed8f058ae0450aaa5
      Signed-off-by: default avatarShenghou Ma <minux@golang.org>
      Reviewed-on: https://go-review.googlesource.com/10113Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      38631846
    • Mikio Hara's avatar
      cmd/doc: fix build · 37eb1d19
      Mikio Hara authored
      Change-Id: Ic8437a1d2aeb424d6d5ce9e608c1293bba4c7bbc
      Reviewed-on: https://go-review.googlesource.com/10093
      Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
      Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      37eb1d19
    • Shenghou Ma's avatar
      syscall: fix F_SETLK{,W} on linux/ppc64 · 5069452d
      Shenghou Ma authored
      Change-Id: Ia81675b0f01ceafada32bdd2bc59088016a7421e
      Reviewed-on: https://go-review.googlesource.com/10043Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      5069452d
  2. 14 May, 2015 19 commits
    • Rob Pike's avatar
      cmd/doc: trim unexported methods from interfaces · 83c7b60f
      Rob Pike authored
      Fixes #10856.
      
      Change-Id: I5de65b8dd94eec3451ee0ba9c75698cdd88f5fea
      Reviewed-on: https://go-review.googlesource.com/10088Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      83c7b60f
    • Brad Fitzpatrick's avatar
      doc: update go1.5.txt · fb7e2449
      Brad Fitzpatrick authored
      Change-Id: Idbceaa44f4c823510632381b36b42302e63d8a29
      Reviewed-on: https://go-review.googlesource.com/10057Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      fb7e2449
    • Robert Griesemer's avatar
      go/types: remove "vendoring" script - not useful anymore · 5abdc24b
      Robert Griesemer authored
      Change-Id: I4f4e6b99a22054666cd2284679cb0eca7f1042b8
      Reviewed-on: https://go-review.googlesource.com/10086Reviewed-by: default avatarRob Pike <r@golang.org>
      5abdc24b
    • Russ Cox's avatar
      api: refresh next.txt · a4292c31
      Russ Cox authored
      Change-Id: I5e902bb3a3a51620b21840783087ed3cc410dbc5
      Reviewed-on: https://go-review.googlesource.com/10048Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      a4292c31
    • Brad Fitzpatrick's avatar
      cmd/dist: support test filtering via repurposed env variable, negation · a901d7fb
      Brad Fitzpatrick authored
      For upcoming sharded ARM builders.
      
      Updates #10029
      
      Change-Id: I3b1df9560be697c514a8ced0462814d406e23132
      Reviewed-on: https://go-review.googlesource.com/10055Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      a901d7fb
    • Shenghou Ma's avatar
      go/build: introduce go1.5 build tag · 1e7f5795
      Shenghou Ma authored
      Change-Id: Iab2f8e1c4443f39b79c1c63a7a30062074b48764
      Signed-off-by: default avatarShenghou Ma <minux@golang.org>
      Reviewed-on: https://go-review.googlesource.com/10042Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      1e7f5795
    • Russ Cox's avatar
      runtime: add Node128, Node130 benchmarks · 30aacd4c
      Russ Cox authored
      Change-Id: I815a7ceeea48cc652b3c8568967665af39b02834
      Reviewed-on: https://go-review.googlesource.com/10045Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      30aacd4c
    • Robert Griesemer's avatar
      go/types: remove _ imports that are not needed anymore · 13849818
      Robert Griesemer authored
      Change-Id: I392b0a0083d6bea80a65f9eef46dd06b02a70e1b
      Reviewed-on: https://go-review.googlesource.com/10082Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      13849818
    • Robert Griesemer's avatar
      go/scanner: don't return previous comment as literal value if none is expected · d2130573
      Robert Griesemer authored
      Fixes #10213.
      
      Change-Id: Ia587dd51eea702058da926717ad305792c9fc42b
      Reviewed-on: https://go-review.googlesource.com/10081Reviewed-by: default avatarAlan Donovan <adonovan@google.com>
      d2130573
    • Rob Pike's avatar
      text/template: need to validate type when an argument is a function call · 92bdbb8a
      Rob Pike authored
      Missed a case; just need to call validateType.
      
      Fixes #10800.
      
      Change-Id: I81997ca7a9feb1be31c8b47e631b32712d7ffb86
      Reviewed-on: https://go-review.googlesource.com/10031Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      92bdbb8a
    • Russ Cox's avatar
      runtime: keep pointer bits set always in 1-word spans · ecfe42ca
      Russ Cox authored
      It's dumb to clear them in initSpan, set them in heapBitsSetType,
      clear them in heapBitsSweepSpan, set them again in heapBitsSetType,
      clear them again in heapBitsSweepSpan, and so on.
      
      Set them in initSpan and be done with it (until the span is reused
      for objects of a different size).
      
      This avoids an atomic operation in a common case (one-word allocation).
      Suggested by rlh.
      
      name                   old mean              new mean              delta
      BinaryTree17            5.87s × (0.97,1.03)   5.93s × (0.98,1.04)              ~    (p=0.056)
      Fannkuch11              4.34s × (1.00,1.01)   4.41s × (1.00,1.00)            +1.42% (p=0.000)
      FmtFprintfEmpty        86.1ns × (0.98,1.03)  88.9ns × (0.95,1.14)              ~    (p=0.066)
      FmtFprintfString        292ns × (0.97,1.04)   284ns × (0.98,1.03)            -2.64% (p=0.000)
      FmtFprintfInt           271ns × (0.98,1.06)   274ns × (0.98,1.05)              ~    (p=0.148)
      FmtFprintfIntInt        478ns × (0.98,1.05)   487ns × (0.98,1.03)            +1.85% (p=0.004)
      FmtFprintfPrefixedInt   397ns × (0.98,1.05)   394ns × (0.98,1.02)              ~    (p=0.184)
      FmtFprintfFloat         553ns × (0.99,1.02)   543ns × (0.99,1.01)            -1.71% (p=0.000)
      FmtManyArgs            1.90µs × (0.98,1.05)  1.88µs × (0.99,1.01)            -0.97% (p=0.037)
      GobDecode              15.1ms × (0.99,1.01)  15.3ms × (0.99,1.01)            +0.78% (p=0.001)
      GobEncode              11.7ms × (0.98,1.05)  11.6ms × (0.99,1.02)            -1.39% (p=0.009)
      Gzip                    646ms × (1.00,1.01)   647ms × (1.00,1.01)              ~    (p=0.120)
      Gunzip                  142ms × (1.00,1.00)   142ms × (1.00,1.00)              ~    (p=0.068)
      HTTPClientServer       89.7µs × (0.99,1.01)  90.1µs × (0.98,1.03)              ~    (p=0.224)
      JSONEncode             31.3ms × (0.99,1.01)  31.2ms × (0.99,1.02)              ~    (p=0.149)
      JSONDecode              113ms × (0.99,1.01)   111ms × (0.99,1.01)            -1.25% (p=0.000)
      Mandelbrot200          6.01ms × (1.00,1.00)  6.01ms × (1.00,1.00)            +0.09% (p=0.015)
      GoParse                6.63ms × (0.98,1.03)  6.55ms × (0.99,1.02)            -1.10% (p=0.006)
      RegexpMatchEasy0_32     161ns × (1.00,1.00)   161ns × (1.00,1.00)  (sample has zero variance)
      RegexpMatchEasy0_1K     539ns × (0.99,1.01)   563ns × (0.99,1.01)            +4.51% (p=0.000)
      RegexpMatchEasy1_32     140ns × (0.99,1.01)   141ns × (0.99,1.01)            +1.34% (p=0.000)
      RegexpMatchEasy1_1K     886ns × (1.00,1.01)   888ns × (1.00,1.00)            +0.20% (p=0.003)
      RegexpMatchMedium_32    252ns × (1.00,1.02)   255ns × (0.99,1.01)            +1.32% (p=0.000)
      RegexpMatchMedium_1K   72.7µs × (1.00,1.00)  72.6µs × (1.00,1.00)              ~    (p=0.296)
      RegexpMatchHard_32     3.84µs × (1.00,1.01)  3.84µs × (1.00,1.00)              ~    (p=0.339)
      RegexpMatchHard_1K      117µs × (1.00,1.01)   117µs × (1.00,1.00)            -0.28% (p=0.022)
      Revcomp                 914ms × (0.99,1.01)   909ms × (0.99,1.01)            -0.49% (p=0.031)
      Template                128ms × (0.99,1.01)   127ms × (0.99,1.01)            -1.10% (p=0.000)
      TimeParse               628ns × (0.99,1.01)   639ns × (0.99,1.01)            +1.69% (p=0.000)
      TimeFormat              660ns × (0.99,1.01)   662ns × (0.99,1.02)              ~    (p=0.287)
      
      Change-Id: I3127b0ab89708267c74aa7d0eae1db1a1bcdfda5
      Reviewed-on: https://go-review.googlesource.com/9884Reviewed-by: default avatarAustin Clements <austin@google.com>
      ecfe42ca
    • Russ Cox's avatar
      runtime: rewrite addb/subtractb to be simpler to compile; introduce add1, subtract1 · 94934f84
      Russ Cox authored
      This reduces the depth of the inlining at a particular call site.
      The inliner introduces many temporary variables, and the compiler can do
      a better job with fewer. Being verbose in the bodies of these helper functions
      seems like a reasonable tradeoff: the uses are still just as readable, and
      they run faster in some important cases.
      
      Change-Id: I5323976ed3704d0acd18fb31176cfbf5ba23a89c
      Reviewed-on: https://go-review.googlesource.com/9883Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      94934f84
    • Russ Cox's avatar
      runtime: skip atomics in heapBitsSetType when GC is not running · 5b373935
      Russ Cox authored
      Suggested by Rick during code review of this code,
      but separated out for easier diagnosis in case it causes
      problems (and also easier rollback).
      
      name                    old mean              new mean              delta
      SetTypePtr              13.9ns × (0.98,1.05)   6.2ns × (0.99,1.01)  -55.18% (p=0.000)
      SetTypePtr8             15.5ns × (0.95,1.10)  15.5ns × (0.99,1.05)     ~    (p=0.952)
      SetTypePtr16            17.8ns × (0.99,1.05)  18.0ns × (1.00,1.00)     ~    (p=0.157)
      SetTypePtr32            25.2ns × (0.99,1.01)  24.3ns × (0.99,1.01)   -3.86% (p=0.000)
      SetTypePtr64            42.2ns × (0.93,1.13)  40.8ns × (0.99,1.01)     ~    (p=0.239)
      SetTypePtr126           67.3ns × (1.00,1.00)  67.5ns × (0.99,1.02)     ~    (p=0.365)
      SetTypePtr128           67.6ns × (1.00,1.01)  70.1ns × (0.97,1.10)     ~    (p=0.063)
      SetTypePtrSlice          575ns × (0.98,1.06)   543ns × (0.95,1.17)   -5.54% (p=0.034)
      SetTypeNode1            12.4ns × (0.98,1.09)  12.8ns × (0.99,1.01)   +3.40% (p=0.021)
      SetTypeNode1Slice       97.1ns × (0.97,1.09)  89.5ns × (1.00,1.00)   -7.78% (p=0.000)
      SetTypeNode8            29.8ns × (1.00,1.01)  17.7ns × (1.00,1.01)  -40.74% (p=0.000)
      SetTypeNode8Slice        204ns × (0.99,1.04)   190ns × (0.97,1.06)   -6.96% (p=0.000)
      SetTypeNode64           42.8ns × (0.99,1.01)  44.0ns × (0.95,1.12)     ~    (p=0.163)
      SetTypeNode64Slice      1.00µs × (0.95,1.09)  0.98µs × (0.96,1.08)     ~    (p=0.356)
      SetTypeNode64Dead       12.2ns × (0.99,1.04)  12.7ns × (1.00,1.01)   +4.34% (p=0.000)
      SetTypeNode64DeadSlice  1.14µs × (0.94,1.11)  0.99µs × (0.99,1.03)  -13.74% (p=0.000)
      SetTypeNode124          67.9ns × (0.99,1.03)  70.4ns × (0.95,1.15)     ~    (p=0.115)
      SetTypeNode124Slice     1.76µs × (0.99,1.04)  1.88µs × (0.91,1.23)     ~    (p=0.096)
      SetTypeNode126          67.7ns × (1.00,1.01)  68.2ns × (0.99,1.02)   +0.72% (p=0.014)
      SetTypeNode126Slice     1.76µs × (1.00,1.01)  1.87µs × (0.93,1.15)   +6.15% (p=0.035)
      SetTypeNode1024          462ns × (0.96,1.10)   451ns × (0.99,1.05)     ~    (p=0.224)
      SetTypeNode1024Slice    14.4µs × (0.95,1.15)  14.2µs × (0.97,1.19)     ~    (p=0.676)
      
      name                   old mean              new mean              delta
      BinaryTree17            5.87s × (0.98,1.04)   5.87s × (0.98,1.03)    ~    (p=0.993)
      Fannkuch11              4.39s × (0.99,1.01)   4.34s × (1.00,1.01)  -1.22% (p=0.000)
      FmtFprintfEmpty        90.6ns × (0.97,1.06)  89.4ns × (0.97,1.03)    ~    (p=0.070)
      FmtFprintfString        305ns × (0.98,1.02)   296ns × (0.99,1.02)  -2.94% (p=0.000)
      FmtFprintfInt           276ns × (0.97,1.04)   270ns × (0.98,1.03)  -2.17% (p=0.001)
      FmtFprintfIntInt        490ns × (0.97,1.05)   473ns × (0.99,1.02)  -3.59% (p=0.000)
      FmtFprintfPrefixedInt   402ns × (0.99,1.02)   397ns × (0.99,1.01)  -1.15% (p=0.000)
      FmtFprintfFloat         577ns × (0.99,1.01)   549ns × (0.99,1.01)  -4.78% (p=0.000)
      FmtManyArgs            1.89µs × (0.99,1.02)  1.87µs × (0.99,1.01)  -1.43% (p=0.000)
      GobDecode              15.2ms × (0.99,1.01)  14.7ms × (0.99,1.02)  -3.55% (p=0.000)
      GobEncode              11.7ms × (0.98,1.04)  11.5ms × (0.99,1.02)  -1.63% (p=0.002)
      Gzip                    647ms × (0.99,1.01)   647ms × (1.00,1.01)    ~    (p=0.486)
      Gunzip                  142ms × (1.00,1.00)   143ms × (1.00,1.00)    ~    (p=0.234)
      HTTPClientServer       90.7µs × (0.99,1.01)  90.4µs × (0.98,1.04)    ~    (p=0.331)
      JSONEncode             31.9ms × (0.97,1.06)  31.6ms × (0.98,1.02)    ~    (p=0.206)
      JSONDecode              110ms × (0.99,1.01)   112ms × (0.99,1.02)  +1.48% (p=0.000)
      Mandelbrot200          6.00ms × (1.00,1.00)  6.01ms × (1.00,1.00)    ~    (p=0.058)
      GoParse                6.63ms × (0.98,1.03)  6.61ms × (0.98,1.02)    ~    (p=0.353)
      RegexpMatchEasy0_32     162ns × (0.99,1.01)   161ns × (1.00,1.00)  -0.33% (p=0.004)
      RegexpMatchEasy0_1K     539ns × (0.99,1.01)   540ns × (0.99,1.02)    ~    (p=0.222)
      RegexpMatchEasy1_32     139ns × (0.99,1.01)   140ns × (0.97,1.03)    ~    (p=0.054)
      RegexpMatchEasy1_1K     886ns × (1.00,1.00)   887ns × (1.00,1.00)  +0.18% (p=0.001)
      RegexpMatchMedium_32    252ns × (1.00,1.01)   252ns × (1.00,1.00)  +0.21% (p=0.010)
      RegexpMatchMedium_1K   72.7µs × (1.00,1.01)  72.6µs × (1.00,1.00)    ~    (p=0.060)
      RegexpMatchHard_32     3.84µs × (1.00,1.00)  3.84µs × (1.00,1.00)    ~    (p=0.065)
      RegexpMatchHard_1K      117µs × (1.00,1.00)   117µs × (1.00,1.00)  -0.27% (p=0.000)
      Revcomp                 916ms × (0.98,1.04)   909ms × (0.99,1.01)    ~    (p=0.054)
      Template                126ms × (0.99,1.01)   128ms × (0.99,1.02)  +1.43% (p=0.000)
      TimeParse               632ns × (0.99,1.01)   625ns × (1.00,1.01)  -1.05% (p=0.000)
      TimeFormat              655ns × (0.99,1.02)   669ns × (0.99,1.02)  +2.01% (p=0.000)
      
      Change-Id: I9477b7c9489c6fa98e860c190ce06cd73c53c6a1
      Reviewed-on: https://go-review.googlesource.com/9829Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      5b373935
    • Mikio Hara's avatar
      net: fix vet missed format error in test · b83b0111
      Mikio Hara authored
      Change-Id: I73c0aeb4b27fec84149c8e89753b27ff2190eabf
      Reviewed-on: https://go-review.googlesource.com/10074Reviewed-by: default avatarAlex Brainman <alex.brainman@gmail.com>
      b83b0111
    • Shenghou Ma's avatar
      math/big, cmd/internal/gc/big: fix vet detected printf problem · 85a15778
      Shenghou Ma authored
      Change-Id: I54425d8cbe0277d7a0c9d66c37f2128a0dfa6441
      Reviewed-on: https://go-review.googlesource.com/10041
      Run-TryBot: Minux Ma <minux@golang.org>
      Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
      85a15778
    • Shenghou Ma's avatar
      cmd/internal/gc: fix vet detected printf problems · b3fb0fdd
      Shenghou Ma authored
      Fixes #10805.
      
      Change-Id: Ia77639e606a0c18fc53cba9749d92f325014025f
      Reviewed-on: https://go-review.googlesource.com/10040Reviewed-by: default avatarJosh Bleecher Snyder <josharian@gmail.com>
      b3fb0fdd
    • Josh Bleecher Snyder's avatar
      encoding/json: make BenchmarkSkipValue more stable · dbf533a5
      Josh Bleecher Snyder authored
      BenchmarkSkipValue was sensitive to the value of
      b.N due to its significant startup cost.
      
      Two adjacent runs before this CL:
      
      BenchmarkSkipValue	      50	  21047499 ns/op	  93.37 MB/s
      BenchmarkSkipValue	     100	  17260554 ns/op	 118.05 MB/s
      
      After this CL, using benchtime to recreate the
      difference in b.N:
      
      BenchmarkSkipValue	      50	  15204797 ns/op	 131.67 MB/s
      BenchmarkSkipValue	     100	  15332319 ns/op	 130.58 MB/s
      
      Change-Id: Iac86f86dd774d535302fa5e4c08f89f8da00be9e
      Reviewed-on: https://go-review.googlesource.com/10053Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      dbf533a5
    • Mikio Hara's avatar
      net: simplify sync.Once calls in tests · ef54930e
      Mikio Hara authored
      Change-Id: I0c2e1a4a8261887a696e585dda46e72d691191e0
      Reviewed-on: https://go-review.googlesource.com/10070Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      ef54930e
    • Brad Fitzpatrick's avatar
      net/http: flush request body chunks in Transport · e5febf95
      Brad Fitzpatrick authored
      The Transport's writer to the remote server is wrapped in a
      bufio.Writer to suppress many small writes while writing headers and
      trailers. However, when writing the request body, the buffering may get
      in the way if the request body is arriving slowly.
      
      Because the io.Copy from the Request.Body to the writer is already
      buffered, the outer bufio.Writer is unnecessary and prevents small
      Request.Body.Reads from going to the server right away. (and the
      io.Reader contract does say to return when you've got something,
      instead of blocking waiting for more). After the body is finished, the
      Transport's bufio.Writer is still used for any trailers following.
      
      A previous attempted fix for this made the chunk writer always flush
      if the underlying type was a bufio.Writer, but that is not quite
      correct. This CL instead makes it opt-in by using a private sentinel
      type (wrapping a *bufio.Writer) to the chunk writer that requests
      Flushes after each chunk body (the chunk header & chunk body are still
      buffered together into one write).
      
      Fixes #6574
      
      Change-Id: Icefcdf17130c9e285c80b69af295bfd3e72c3a70
      Reviewed-on: https://go-review.googlesource.com/10021Reviewed-by: default avatarAndrew Gerrand <adg@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      e5febf95
  3. 13 May, 2015 7 commits