1. 26 Oct, 2015 11 commits
    • David du Colombier's avatar
      runtime: handle abort note on Plan 9 · d093bf48
      David du Colombier authored
      Implement an abort note on Plan 9, as an
      equivalent of the SIGABRT signal on other
      operating systems.
      
      Updates #11975.
      
      Change-Id: I010c9b10f2fbd2471aacd1d073368d975a2f0592
      Reviewed-on: https://go-review.googlesource.com/16300Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: David du Colombier <0intro@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      d093bf48
    • Matthew Dempsky's avatar
      runtime: fix tiny allocator · d18167fe
      Matthew Dempsky authored
      When a new tiny block is allocated because we're allocating an object
      that won't fit into the current block, mallocgc saves the new block if
      it has more space leftover than the old block.  However, the logic for
      this was subtly broken in golang.org/cl/2814, resulting in never
      saving (or consequently reusing) a tiny block.
      
      Change-Id: Ib5f6769451fb82877ddeefe75dfe79ed4a04fd40
      Reviewed-on: https://go-review.googlesource.com/16330
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      d18167fe
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: escape binary export data so it contains no '$' · e6ccfc1a
      Robert Griesemer authored
      Necessary to ensure that subsequent tools can continue to find
      then end of the export data section simply by searching for "$$".
      
      Adjusted gcimporter used by go/types accordingly.
      
      Also, fixed a bug in gcimporter related to reading export data
      in debug format.
      
      Change-Id: Iaea4ed05edd8a5bab28ebe5b19a4740f5e537d35
      Reviewed-on: https://go-review.googlesource.com/16283Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      e6ccfc1a
    • Austin Clements's avatar
      runtime: partition data and BSS root marking · d3df04cd
      Austin Clements authored
      Currently data and BSS root marking are each a single markroot job.
      This makes them difficult to load balance, which can draw out mark
      termination time if they are large.
      
      Fix this by splitting both in to 256K chunks. While we're putting in
      the infrastructure for dynamic roots, we also replace the fixed
      sharding of the span roots with sharding in to fixed sizes. In
      addition to helping balance root marking, this also paves the way to
      parallelizing concurrent scan and to letting assists help with root
      marking.
      
      Updates #10345. This fixes the data and BSS aspects of that bug; it
      does not partition scanning of large heap objects.
      
      This has negligible effect on either the go1 benchmarks or the garbage
      benchmark:
      
      name              old time/op  new time/op  delta
      XBenchGarbage-12  4.90ms ± 1%  4.91ms ± 2%   ~     (p=0.058 n=17+16)
      
      name                      old time/op    new time/op    delta
      BinaryTree17-12              3.11s ± 4%     3.12s ± 4%    ~     (p=0.512 n=20+20)
      Fannkuch11-12                2.53s ± 2%     2.47s ± 2%  -2.28%  (p=0.000 n=20+18)
      FmtFprintfEmpty-12          49.1ns ± 1%    50.0ns ± 4%  +1.68%  (p=0.008 n=18+20)
      FmtFprintfString-12          170ns ± 0%     172ns ± 1%  +1.05%  (p=0.000 n=14+19)
      FmtFprintfInt-12             174ns ± 1%     162ns ± 1%  -6.81%  (p=0.000 n=18+17)
      FmtFprintfIntInt-12          284ns ± 1%     277ns ± 1%  -2.42%  (p=0.000 n=20+19)
      FmtFprintfPrefixedInt-12     252ns ± 1%     244ns ± 1%  -2.84%  (p=0.000 n=18+20)
      FmtFprintfFloat-12           317ns ± 0%     311ns ± 0%  -1.95%  (p=0.000 n=19+18)
      FmtManyArgs-12              1.08µs ± 1%    1.11µs ± 1%  +3.43%  (p=0.000 n=18+19)
      GobDecode-12                8.56ms ± 1%    8.61ms ± 1%  +0.50%  (p=0.020 n=20+20)
      GobEncode-12                6.58ms ± 1%    6.57ms ± 1%    ~     (p=0.792 n=20+19)
      Gzip-12                      317ms ± 3%     317ms ± 2%    ~     (p=0.840 n=19+19)
      Gunzip-12                   41.6ms ± 0%    41.6ms ± 0%  +0.07%  (p=0.027 n=18+15)
      HTTPClientServer-12         62.2µs ± 1%    62.3µs ± 1%    ~     (p=0.283 n=19+20)
      JSONEncode-12               16.5ms ± 2%    16.5ms ± 1%    ~     (p=0.857 n=20+19)
      JSONDecode-12               58.5ms ± 1%    61.3ms ± 1%  +4.67%  (p=0.000 n=18+17)
      Mandelbrot200-12            3.84ms ± 0%    3.84ms ± 0%    ~     (p=0.259 n=17+17)
      GoParse-12                  3.70ms ± 2%    3.74ms ± 2%  +0.96%  (p=0.009 n=19+20)
      RegexpMatchEasy0_32-12       100ns ± 1%     100ns ± 0%  +0.31%  (p=0.040 n=19+15)
      RegexpMatchEasy0_1K-12       340ns ± 1%     340ns ± 1%    ~     (p=0.411 n=17+19)
      RegexpMatchEasy1_32-12      82.7ns ± 2%    82.3ns ± 1%    ~     (p=0.456 n=20+19)
      RegexpMatchEasy1_1K-12       498ns ± 2%     495ns ± 0%    ~     (p=0.108 n=19+17)
      RegexpMatchMedium_32-12      130ns ± 1%     130ns ± 2%    ~     (p=0.405 n=18+19)
      RegexpMatchMedium_1K-12     39.4µs ± 2%    39.1µs ± 1%  -0.64%  (p=0.002 n=20+19)
      RegexpMatchHard_32-12       2.03µs ± 2%    2.02µs ± 0%    ~     (p=0.561 n=20+17)
      RegexpMatchHard_1K-12       61.1µs ± 2%    60.8µs ± 1%    ~     (p=0.615 n=19+18)
      Revcomp-12                   532ms ± 2%     531ms ± 1%    ~     (p=0.470 n=19+19)
      Template-12                 68.5ms ± 1%    69.1ms ± 1%  +0.87%  (p=0.000 n=17+17)
      TimeParse-12                 344ns ± 2%     344ns ± 1%  +0.25%  (p=0.032 n=19+18)
      TimeFormat-12                347ns ± 1%     362ns ± 1%  +4.27%  (p=0.000 n=17+19)
      [Geo mean]                  62.3µs         62.3µs       -0.04%
      
      name                      old speed      new speed      delta
      GobDecode-12              89.6MB/s ± 1%  89.2MB/s ± 1%  -0.50%  (p=0.019 n=20+20)
      GobEncode-12               117MB/s ± 1%   117MB/s ± 1%    ~     (p=0.797 n=20+19)
      Gzip-12                   61.3MB/s ± 3%  61.2MB/s ± 2%    ~     (p=0.834 n=19+19)
      Gunzip-12                  467MB/s ± 0%   466MB/s ± 0%  -0.07%  (p=0.027 n=18+15)
      JSONEncode-12              117MB/s ± 2%   117MB/s ± 1%    ~     (p=0.851 n=20+19)
      JSONDecode-12             33.2MB/s ± 1%  31.7MB/s ± 1%  -4.47%  (p=0.000 n=18+17)
      GoParse-12                15.6MB/s ± 2%  15.5MB/s ± 2%  -0.95%  (p=0.008 n=19+20)
      RegexpMatchEasy0_32-12     321MB/s ± 2%   320MB/s ± 1%  -0.57%  (p=0.002 n=17+17)
      RegexpMatchEasy0_1K-12    3.01GB/s ± 1%  3.01GB/s ± 1%    ~     (p=0.132 n=17+18)
      RegexpMatchEasy1_32-12     387MB/s ± 2%   389MB/s ± 1%    ~     (p=0.423 n=20+19)
      RegexpMatchEasy1_1K-12    2.05GB/s ± 2%  2.06GB/s ± 0%    ~     (p=0.129 n=19+17)
      RegexpMatchMedium_32-12   7.64MB/s ± 1%  7.66MB/s ± 1%    ~     (p=0.258 n=18+19)
      RegexpMatchMedium_1K-12   26.0MB/s ± 2%  26.2MB/s ± 1%  +0.64%  (p=0.002 n=20+19)
      RegexpMatchHard_32-12     15.7MB/s ± 2%  15.8MB/s ± 1%    ~     (p=0.510 n=20+17)
      RegexpMatchHard_1K-12     16.8MB/s ± 2%  16.8MB/s ± 1%    ~     (p=0.603 n=19+18)
      Revcomp-12                 477MB/s ± 2%   479MB/s ± 1%    ~     (p=0.470 n=19+19)
      Template-12               28.3MB/s ± 1%  28.1MB/s ± 1%  -0.85%  (p=0.000 n=17+17)
      [Geo mean]                 100MB/s        100MB/s       -0.26%
      
      Change-Id: Ib0bfe0145675ce88c5a8791752f7486ac98805b4
      Reviewed-on: https://go-review.googlesource.com/16043Reviewed-by: 's avatarRick Hudson <rlh@golang.org>
      d3df04cd
    • David Crawshaw's avatar
      androidtest.bash: set GOARM=7 · 0be3c409
      David Crawshaw authored
      It's the only ARM version we have ever supported on android.
      (Not setting it caused some builder timeouts.)
      
      Change-Id: I26061434252ff2a236bb31d95787a1c582d24b3f
      Reviewed-on: https://go-review.googlesource.com/16295Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
      0be3c409
    • David Crawshaw's avatar
      runtime: use a 64kb system stack on arm · 21f35b33
      David Crawshaw authored
      I went looking for an arm system whose stacks are by default smaller
      than 64KB. In fact the smallest common linux target I could find was
      Android, which like iOS uses 1MB stacks.
      
      Fixes #11873
      
      Change-Id: Ieeb66ad095b3da18d47ba21360ea75152a4107c6
      Reviewed-on: https://go-review.googlesource.com/14602Reviewed-by: 's avatarMichael Hudson-Doyle <michael.hudson@canonical.com>
      Reviewed-by: 's avatarMinux Ma <minux@golang.org>
      21f35b33
    • Marcel van Lohuizen's avatar
      cmd/compile/internal/gc: make embedded unexported structs RO · afe9837b
      Marcel van Lohuizen authored
      gc will need to be rebuild.
      
      Package that assume f.PkgPath != nil means a field is unexported and
      must be ignored must be revised to check for
      	f.PkgPath != nil && !f.Anonymous,
      so that they do try to walk into the embedded fields to look for
      exported fields contained within.
      
      Closes #12367, fixes #7363, fixes #11007, and fixes #7247.
      
      Change-Id: I16402ee21ccfede80f277f84b3995cf26e97433d
      Reviewed-on: https://go-review.googlesource.com/14085Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      afe9837b
    • Marcel van Lohuizen's avatar
      encoding/xml: check for exported fields in embedded structs · 34f04a67
      Marcel van Lohuizen authored
      Addresses issue #12367.
      
      Must be checked in before CL 14010.
      
      Change-Id: I4523a1de112ed02371504e27882659bce8028a9f
      Reviewed-on: https://go-review.googlesource.com/14012Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      34f04a67
    • Marcel van Lohuizen's avatar
      encoding/json: check for exported fields in embedded structs · a30dd9ce
      Marcel van Lohuizen authored
      Addresses issue #12367.
      
      Must be checked in before CL 14010.
      
      Change-Id: I7233c3a62d4f55d0ac7e8a87df5fc4ee7beb7207
      Reviewed-on: https://go-review.googlesource.com/14011Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      a30dd9ce
    • Marcel van Lohuizen's avatar
      unicode/utf8: added benchmarks · 3d198bd7
      Marcel van Lohuizen authored
      Cover some functions that weren't benched before and add InString
      variants if the underlying implementation is different.
      
      Note: compare (Valid|RuneCount)InString* to their (Valid|RuneCount)*
      counterparts. It shows, somewhat unexpectedly, that ranging over
      a string is *much* slower than using calls to DecodeRune.
      
      Results:
      In order to avoid a discrepancy in measuring the performance
      of core we could leave the names of the string-based measurements
      unchanged and suffix the added alternatives with Bytes.
      
      Compared to old:
      BenchmarkRuneCountTenASCIIChars-8        44.3          12.4          -72.01%
      BenchmarkRuneCountTenJapaneseChars-8     167           67.1          -59.82%
      BenchmarkEncodeASCIIRune-8               3.37          3.44          +2.08%
      BenchmarkEncodeJapaneseRune-8            7.19          7.24          +0.70%
      BenchmarkDecodeASCIIRune-8               5.41          5.53          +2.22%
      BenchmarkDecodeJapaneseRune-8            8.17          8.41          +2.94%
      
      All benchmarks:
      BenchmarkRuneCountTenASCIIChars-8           	100000000	        12.4 ns/op
      BenchmarkRuneCountTenJapaneseChars-8        	20000000	        67.1 ns/op
      BenchmarkRuneCountInStringTenASCIIChars-8   	30000000	        44.5 ns/op
      BenchmarkRuneCountInStringTenJapaneseChars-8	10000000	       165 ns/op
      BenchmarkValidTenASCIIChars-8               	100000000	        12.5 ns/op
      BenchmarkValidTenJapaneseChars-8            	20000000	        71.1 ns/op
      BenchmarkValidStringTenASCIIChars-8         	30000000	        50.0 ns/op
      BenchmarkValidStringTenJapaneseChars-8      	10000000	       161 ns/op
      BenchmarkEncodeASCIIRune-8                  	500000000	         3.44 ns/op
      BenchmarkEncodeJapaneseRune-8               	200000000	         7.24 ns/op
      BenchmarkDecodeASCIIRune-8                  	300000000	         5.53 ns/op
      BenchmarkDecodeJapaneseRune-8               	200000000	         8.41 ns/op
      BenchmarkFullASCIIRune-8                    	500000000	         3.91 ns/op
      BenchmarkFullJapaneseRune-8                 	300000000	         4.22 ns/op
      
      Change-Id: I674d2ee4917b975a37717bbfa1082cc84dcd275e
      Reviewed-on: https://go-review.googlesource.com/14431Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      3d198bd7
    • Marcel van Lohuizen's avatar
      reflect: adjust access to unexported embedded structs · adf9b30e
      Marcel van Lohuizen authored
      This CL changes reflect to allow access to exported fields and
      methods in unexported embedded structs for gccgo and after gc
      has been adjusted to disallow access to embedded unexported structs.
      
      Adresses #12367, #7363, #11007, and #7247.
      
      Change-Id: If80536eab35abcd25300d8ddc2d27d5c42d7e78e
      Reviewed-on: https://go-review.googlesource.com/14010Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      adf9b30e
  2. 23 Oct, 2015 13 commits
  3. 22 Oct, 2015 15 commits
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: remove special handling for -0.0 · 79a3b561
      Robert Griesemer authored
      Per the latest spec change, Go doesn't have -0 constants.
      
      Change-Id: Ic2bcdc3bf507d121ed204f30f6744bb8764202c0
      Reviewed-on: https://go-review.googlesource.com/16232Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      79a3b561
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: compact binary export format · ae2f54a7
      Robert Griesemer authored
      The binary import/export format is significantly more
      compact than the existing textual format. It should
      also be faster to read and write (to be measured).
      
      Use -newexport to enable, for instance:
      export GO_GCFLAGS=-newexport; make.bash
      
      The compiler can import packages using both the old
      and the new format ("mixed mode").
      
      Missing: export info for inlined functions bodies
      (performance issue, does not affect correctness).
      
      Disabled by default until we have inlined function
      bodies and confirmation of no regression and equality
      of binaries.
      
      For #6110.
      For #1909.
      
      This change depends on:
      
         https://go-review.googlesource.com/16220
         https://go-review.googlesource.com/16222
      
      (already submitted) for all.bash to work.
      
      Some initial export data sizes for std lib packages. This data
      is without exported functions with inlineable function bodies.
      
      Package                                       old      new    new/old
      
      archive/tar.................................13875.....3883    28%
      archive/zip.................................19464.....5046    26%
      bufio....................................... 7733.....2222    29%
      bytes.......................................10342.....3347    32%
      cmd/addr2line.................................242.......26    11%
      cmd/api.....................................39305....10368    26%
      cmd/asm/internal/arch.......................27732.....7939    29%
      cmd/asm/internal/asm........................35264....10295    29%
      cmd/asm/internal/flags........................629......178    28%
      cmd/asm/internal/lex........................39248....11128    28%
      cmd/asm.......................................306.......26     8%
      cmd/cgo.....................................40197....10570    26%
      cmd/compile/internal/amd64...................1106......214    19%
      cmd/compile/internal/arm....................27891.....7710    28%
      cmd/compile/internal/arm64....................891......153    17%
      cmd/compile/internal/big....................21637.....8336    39%
      cmd/compile/internal/gc....................109845....29727    27%
      cmd/compile/internal/mips64...................972......168    17%
      cmd/compile/internal/ppc64....................972......168    17%
      cmd/compile/internal/x86.....................1104......195    18%
      cmd/compile...................................329.......26     8%
      cmd/cover...................................12986.....3749    29%
      cmd/dist......................................477.......67    14%
      cmd/doc.....................................23043.....6793    29%
      cmd/expdump...................................167.......26    16%
      cmd/fix......................................1190......208    17%
      cmd/go......................................26399.....5629    21%
      cmd/gofmt.....................................499.......26     5%
      cmd/internal/gcprog..........................1342......490    37%
      cmd/internal/goobj...........................2690......980    36%
      cmd/internal/obj/arm........................32740....10057    31%
      cmd/internal/obj/arm64......................46542....15364    33%
      cmd/internal/obj/mips.......................42140....13731    33%
      cmd/internal/obj/ppc64......................42140....13731    33%
      cmd/internal/obj/x86........................52732....19015    36%
      cmd/internal/obj............................36729....11690    32%
      cmd/internal/objfile........................36365....10287    28%
      cmd/link/internal/amd64.....................45893....12220    27%
      cmd/link/internal/arm.........................307.......96    31%
      cmd/link/internal/arm64.......................345.......98    28%
      cmd/link/internal/ld.......................109300....46326    42%
      cmd/link/internal/ppc64.......................344.......99    29%
      cmd/link/internal/x86.........................334......107    32%
      cmd/link......................................314.......26     8%
      cmd/newlink..................................8110.....2544    31%
      cmd/nm........................................210.......26    12%
      cmd/objdump...................................244.......26    11%
      cmd/pack....................................14248.....4066    29%
      cmd/pprof/internal/commands..................5239.....1285    25%
      cmd/pprof/internal/driver...................37967.....8860    23%
      cmd/pprof/internal/fetch....................30962.....7337    24%
      cmd/pprof/internal/plugin...................47734.....7719    16%
      cmd/pprof/internal/profile..................22286.....6922    31%
      cmd/pprof/internal/report...................31187.....7838    25%
      cmd/pprof/internal/svg.......................4315......965    22%
      cmd/pprof/internal/symbolizer...............30051.....7397    25%
      cmd/pprof/internal/symbolz..................28545.....6949    24%
      cmd/pprof/internal/tempfile.................12550.....3356    27%
      cmd/pprof.....................................563.......26     5%
      cmd/trace....................................1455......636    44%
      cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737    39%
      cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578    32%
      cmd/vet.....................................38980.....9913    25%
      cmd/vet/whitelist.............................102.......49    48%
      cmd/yacc.....................................2518......926    37%
      compress/bzip2...............................6326......129     2%
      compress/flate...............................7069.....2541    36%
      compress/gzip...............................20143.....5069    25%
      compress/lzw..................................828......295    36%
      compress/zlib...............................10676.....2692    25%
      container/heap................................523......181    35%
      container/list...............................3517......740    21%
      container/ring................................881......229    26%
      crypto/aes....................................550......187    34%
      crypto/cipher................................1966......825    42%
      crypto.......................................1836......646    35%
      crypto/des....................................632......235    37%
      crypto/dsa..................................18718.....5035    27%
      crypto/ecdsa................................23131.....6097    26%
      crypto/elliptic.............................20790.....5740    28%
      crypto/hmac...................................455......186    41%
      crypto/md5...................................1375......171    12%
      crypto/rand.................................18132.....4748    26%
      crypto/rc4....................................561......240    43%
      crypto/rsa..................................22094.....6380    29%
      crypto/sha1..................................1416......172    12%
      crypto/sha256.................................551......238    43%
      crypto/sha512.................................839......378    45%
      crypto/subtle................................1153......250    22%
      crypto/tls..................................58203....17984    31%
      crypto/x509/pkix............................29447.....8161    28%
      database/sql/driver..........................3318.....1096    33%
      database/sql................................11258.....3942    35%
      debug/dwarf.................................18416.....7006    38%
      debug/elf...................................57530....21014    37%
      debug/gosym..................................4992.....2058    41%
      debug/macho.................................23037.....6538    28%
      debug/pe....................................21063.....6619    31%
      debug/plan9obj...............................2467......802    33%
      encoding/ascii85.............................1523......360    24%
      encoding/asn1................................1718......527    31%
      encoding/base32..............................2642......686    26%
      encoding/base64..............................3077......800    26%
      encoding/binary..............................4727.....1040    22%
      encoding/csv................................12223.....2850    23%
      encoding......................................383......217    57%
      encoding/gob................................37563....10113    27%
      encoding/hex.................................1327......390    29%
      encoding/json...............................30897.....7804    25%
      encoding/pem..................................595......200    34%
      encoding/xml................................37798.....9336    25%
      errors........................................274.......36    13%
      expvar.......................................3155.....1021    32%
      flag........................................19860.....2849    14%
      fmt..........................................3137.....1263    40%
      go/ast......................................44729....13422    30%
      go/build....................................16336.....4657    29%
      go/constant..................................3703......846    23%
      go/doc.......................................9877.....2807    28%
      go/format....................................5472.....1575    29%
      go/importer..................................4980.....1301    26%
      go/internal/gccgoimporter....................5587.....1525    27%
      go/internal/gcimporter.......................8979.....2186    24%
      go/parser...................................20692.....5304    26%
      go/printer...................................7015.....2029    29%
      go/scanner...................................9719.....2824    29%
      go/token.....................................7933.....2465    31%
      go/types....................................64569....19978    31%
      hash/adler32.................................1176......176    15%
      hash/crc32...................................1663......360    22%
      hash/crc64...................................1587......306    19%
      hash/fnv.....................................3964......260     7%
      hash..........................................591......278    47%
      html..........................................217.......74    34%
      html/template...............................69623....12588    18%
      image/color/palette...........................315.......98    31%
      image/color..................................5565.....1036    19%
      image/draw...................................6917.....1028    15%
      image/gif....................................8894.....1654    19%
      image/internal/imageutil.....................9112.....1476    16%
      image/jpeg...................................6647.....1026    15%
      image/png....................................6906.....1069    15%
      image.......................................28992.....6139    21%
      index/suffixarray...........................17106.....4773    28%
      internal/singleflight........................1614......506    31%
      internal/testenv............................12212.....3152    26%
      internal/trace...............................2762.....1323    48%
      io/ioutil...................................13502.....3682    27%
      io...........................................6765.....2482    37%
      log.........................................11620.....3317    29%
      log/syslog..................................13516.....3821    28%
      math/big....................................21819.....8320    38%
      math/cmplx...................................2816......438    16%
      math/rand....................................2317......929    40%
      math.........................................7511.....2444    33%
      mime/multipart..............................12679.....3360    27%
      mime/quotedprintable.........................5458.....1235    23%
      mime.........................................6076.....1628    27%
      net/http/cgi................................59796....17173    29%
      net/http/cookiejar..........................14781.....3739    25%
      net/http/fcgi...............................57861....16426    28%
      net/http/httptest...........................84100....24365    29%
      net/http/httputil...........................67763....18869    28%
      net/http/internal............................6907......637     9%
      net/http/pprof..............................57945....16316    28%
      net/http....................................95391....30210    32%
      net/internal/socktest........................4555.....1453    32%
      net/mail....................................14481.....3608    25%
      net/rpc/jsonrpc.............................33335......988     3%
      net/rpc.....................................79950....23106    29%
      net/smtp....................................57790....16468    28%
      net/textproto...............................11356.....3248    29%
      net/url......................................3123.....1009    32%
      os/exec.....................................20738.....5769    28%
      os/signal.....................................437......167    38%
      os..........................................24875.....6668    27%
      path/filepath...............................11340.....2826    25%
      path..........................................778......285    37%
      reflect.....................................15469.....5198    34%
      regexp......................................13627.....4661    34%
      regexp/syntax................................5539.....2249    41%
      runtime/debug................................9275.....2322    25%
      runtime/pprof................................1355......477    35%
      runtime/race...................................39.......17    44%
      runtime/trace.................................228.......92    40%
      runtime.....................................13498.....1821    13%
      sort.........................................2848......842    30%
      strconv......................................2947.....1252    42%
      strings......................................7983.....2456    31%
      sync/atomic..................................2666.....1149    43%
      sync.........................................2568......845    33%
      syscall.....................................81252....38398    47%
      testing/iotest...............................2444......302    12%
      testing/quick...............................18890.....5076    27%
      testing.....................................16502.....4800    29%
      text/scanner.................................6849.....2052    30%
      text/tabwriter...............................6607.....1863    28%
      text/template/parse.........................22978.....6183    27%
      text/template...............................64153....11518    18%
      time........................................12103.....3546    29%
      unicode......................................9706.....3320    34%
      unicode/utf16................................1055......148    14%
      unicode/utf8.................................1118......513    46%
      vendor/golang.org/x/net/http2/hpack..........8905.....2636    30%
      
      All packages                              3518505  1017774    29%
      
      Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c
      Reviewed-on: https://go-review.googlesource.com/13937
      Run-TryBot: Robert Griesemer <gri@golang.org>
      Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      ae2f54a7
    • Robert Griesemer's avatar
      cmd/link/internal/ld: export data may be marked with $$ or $$B · 28ef4c38
      Robert Griesemer authored
      Preparation for dealing with binary export format. Accept $$B
      as marker for export data. For now, skip that data if found.
      
      Change-Id: I464ba22aaedcf349725379d91070fc900d93b7a2
      Reviewed-on: https://go-review.googlesource.com/16222Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      28ef4c38
    • Robert Griesemer's avatar
      cmd/internal/goobj: permit 0 bytes in export data (prep. for new export format) · 4e777c8e
      Robert Griesemer authored
      Change-Id: Ida9a82a5420a41ef656388866a1cf8fadf12ccc6
      Reviewed-on: https://go-review.googlesource.com/16220Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      4e777c8e
    • Robert Griesemer's avatar
      cmd/compile/internal/gc: fixed comments (cosmetic change) · 3319ea98
      Robert Griesemer authored
      Change-Id: I9cbbfcf55ce3cccb6f14b9ffe6777567dcdad9c9
      Reviewed-on: https://go-review.googlesource.com/16179Reviewed-by: 's avatarChris Manghane <cmang@golang.org>
      3319ea98
    • Austin Clements's avatar
      runtime: add pcvalue cache to improve stack scan speed · beedb1ec
      Austin Clements authored
      The cost of scanning large stacks is currently dominated by the time
      spent looking up and decoding the pcvalue table. However, large stacks
      are usually large not because they contain calls to many different
      functions, but because they contain many calls to the same, small set
      of recursive functions. Hence, walking large stacks tends to make the
      same pcvalue queries many times.
      
      Based on this observation, this commit adds a small, very simple, and
      fast cache in front of pcvalue lookup. We thread this cache down from
      operations that make many pcvalue calls, such as gentraceback, stack
      scanning, and stack adjusting.
      
      This simple cache works well because it has minimal overhead when it's
      not effective. I also tried a hashed direct-map cache, CLOCK-based
      replacement, round-robin replacement, and round-robin with lookups
      disabled until there had been at least 16 probes, but none of these
      approaches had obvious wins over the random replacement policy in this
      commit.
      
      This nearly doubles the overall performance of the deep stack test
      program from issue #10898:
      
      name        old time/op  new time/op  delta
      Issue10898   16.5s ±12%    9.2s ±12%  -44.37%  (p=0.008 n=5+5)
      
      It's a very slight win on the garbage benchmark:
      
      name              old time/op  new time/op  delta
      XBenchGarbage-12  4.92ms ± 1%  4.89ms ± 1%  -0.75%  (p=0.000 n=18+19)
      
      It's a wash (but doesn't harm performance) on the go1 benchmarks,
      which don't have particularly deep stacks:
      
      name                      old time/op    new time/op    delta
      BinaryTree17-12              3.11s ± 2%     3.20s ± 3%  +2.83%  (p=0.000 n=17+20)
      Fannkuch11-12                2.51s ± 1%     2.51s ± 1%  -0.22%  (p=0.034 n=19+18)
      FmtFprintfEmpty-12          50.8ns ± 3%    50.6ns ± 2%    ~     (p=0.793 n=20+20)
      FmtFprintfString-12          174ns ± 0%     174ns ± 1%  +0.17%  (p=0.048 n=15+20)
      FmtFprintfInt-12             177ns ± 0%     165ns ± 1%  -6.99%  (p=0.000 n=17+19)
      FmtFprintfIntInt-12          283ns ± 1%     284ns ± 0%  +0.22%  (p=0.000 n=18+15)
      FmtFprintfPrefixedInt-12     243ns ± 1%     244ns ± 1%  +0.40%  (p=0.000 n=20+19)
      FmtFprintfFloat-12           318ns ± 0%     319ns ± 0%  +0.27%  (p=0.001 n=19+20)
      FmtManyArgs-12              1.12µs ± 0%    1.14µs ± 0%  +1.74%  (p=0.000 n=19+20)
      GobDecode-12                8.69ms ± 0%    8.73ms ± 1%  +0.46%  (p=0.000 n=18+18)
      GobEncode-12                6.64ms ± 1%    6.61ms ± 1%  -0.46%  (p=0.000 n=20+20)
      Gzip-12                      323ms ± 2%     319ms ± 1%  -1.11%  (p=0.000 n=20+20)
      Gunzip-12                   42.8ms ± 0%    42.9ms ± 0%    ~     (p=0.158 n=18+20)
      HTTPClientServer-12         63.3µs ± 1%    63.1µs ± 1%  -0.35%  (p=0.011 n=20+20)
      JSONEncode-12               16.9ms ± 1%    17.3ms ± 1%  +2.84%  (p=0.000 n=19+20)
      JSONDecode-12               59.7ms ± 0%    58.5ms ± 0%  -2.05%  (p=0.000 n=19+17)
      Mandelbrot200-12            3.92ms ± 0%    3.91ms ± 0%  -0.16%  (p=0.003 n=19+19)
      GoParse-12                  3.79ms ± 2%    3.75ms ± 2%  -0.91%  (p=0.005 n=20+20)
      RegexpMatchEasy0_32-12       102ns ± 1%     101ns ± 1%  -0.80%  (p=0.001 n=14+20)
      RegexpMatchEasy0_1K-12       337ns ± 1%     346ns ± 1%  +2.90%  (p=0.000 n=20+19)
      RegexpMatchEasy1_32-12      84.4ns ± 2%    84.3ns ± 2%    ~     (p=0.743 n=20+20)
      RegexpMatchEasy1_1K-12       502ns ± 1%     505ns ± 0%  +0.64%  (p=0.000 n=20+20)
      RegexpMatchMedium_32-12      133ns ± 1%     132ns ± 1%  -0.85%  (p=0.000 n=20+19)
      RegexpMatchMedium_1K-12     40.1µs ± 1%    39.8µs ± 1%  -0.77%  (p=0.000 n=18+18)
      RegexpMatchHard_32-12       2.08µs ± 1%    2.07µs ± 1%  -0.55%  (p=0.001 n=18+19)
      RegexpMatchHard_1K-12       62.4µs ± 1%    62.0µs ± 1%  -0.74%  (p=0.000 n=19+19)
      Revcomp-12                   545ms ± 2%     545ms ± 3%    ~     (p=0.771 n=19+20)
      Template-12                 73.7ms ± 1%    72.0ms ± 0%  -2.33%  (p=0.000 n=20+18)
      TimeParse-12                 358ns ± 1%     351ns ± 1%  -2.07%  (p=0.000 n=20+20)
      TimeFormat-12                369ns ± 1%     356ns ± 0%  -3.53%  (p=0.000 n=20+18)
      [Geo mean]                  63.5µs         63.2µs       -0.41%
      
      name                      old speed      new speed      delta
      GobDecode-12              88.3MB/s ± 0%  87.9MB/s ± 0%  -0.43%  (p=0.000 n=18+17)
      GobEncode-12               116MB/s ± 1%   116MB/s ± 1%  +0.47%  (p=0.000 n=20+20)
      Gzip-12                   60.2MB/s ± 2%  60.8MB/s ± 1%  +1.13%  (p=0.000 n=20+20)
      Gunzip-12                  453MB/s ± 0%   453MB/s ± 0%    ~     (p=0.160 n=18+20)
      JSONEncode-12              115MB/s ± 1%   112MB/s ± 1%  -2.76%  (p=0.000 n=19+20)
      JSONDecode-12             32.5MB/s ± 0%  33.2MB/s ± 0%  +2.09%  (p=0.000 n=19+17)
      GoParse-12                15.3MB/s ± 2%  15.4MB/s ± 2%  +0.92%  (p=0.004 n=20+20)
      RegexpMatchEasy0_32-12     311MB/s ± 1%   314MB/s ± 1%  +0.78%  (p=0.000 n=15+19)
      RegexpMatchEasy0_1K-12    3.04GB/s ± 1%  2.95GB/s ± 1%  -2.90%  (p=0.000 n=19+19)
      RegexpMatchEasy1_32-12     379MB/s ± 2%   380MB/s ± 2%    ~     (p=0.779 n=20+20)
      RegexpMatchEasy1_1K-12    2.04GB/s ± 1%  2.02GB/s ± 0%  -0.62%  (p=0.000 n=20+20)
      RegexpMatchMedium_32-12   7.46MB/s ± 1%  7.53MB/s ± 1%  +0.86%  (p=0.000 n=20+19)
      RegexpMatchMedium_1K-12   25.5MB/s ± 1%  25.7MB/s ± 1%  +0.78%  (p=0.000 n=18+18)
      RegexpMatchHard_32-12     15.4MB/s ± 1%  15.5MB/s ± 1%  +0.62%  (p=0.000 n=19+19)
      RegexpMatchHard_1K-12     16.4MB/s ± 1%  16.5MB/s ± 1%  +0.82%  (p=0.000 n=20+19)
      Revcomp-12                 466MB/s ± 2%   466MB/s ± 3%    ~     (p=0.765 n=19+20)
      Template-12               26.3MB/s ± 1%  27.0MB/s ± 0%  +2.38%  (p=0.000 n=20+18)
      [Geo mean]                97.8MB/s       98.0MB/s       +0.23%
      
      Change-Id: I281044ae0b24990ba46487cacbc1069493274bc4
      Reviewed-on: https://go-review.googlesource.com/13614Reviewed-by: 's avatarKeith Randall <khr@golang.org>
      beedb1ec
    • Joel Sing's avatar
      net/http/httptest: fix comment regarding certificate expiry · 46630ecd
      Joel Sing authored
      In earlier versions of Go, times were only encoded as an ASN.1 UTCTIME and
      crypto/tls/generate_cert.go limited times to the maximum UTCTIME value.
      Revision 050b60a3 added support for ASN.1 GENERALIZEDTIME, allowing larger
      time values to be represented (per RFC 5280).
      
      As a result, when the httptest certificate was regenerated in revision
      9b2d84ef, the Not After date changed to Jan 29 16:00:00 2084 GMT. Update
      the comment to reflect this.
      
      Change-Id: I1bd66e011f2749f9372b5c7506f52ea34e264ce9
      Reviewed-on: https://go-review.googlesource.com/16193Reviewed-by: 's avatarAdam Langley <agl@golang.org>
      46630ecd
    • Matthew Dempsky's avatar
      runtime: add mSpanList type to represent lists of mspans · 1652a2c3
      Matthew Dempsky authored
      This CL introduces a new mSpanList type to replace the empty mspan
      variables that were previously used as list heads.
      
      To be type safe, the previous circular linked list data structure is
      now a tail queue instead.  One complication of this is
      mSpanList_Remove needs to know the list a span is being removed from,
      but this appears to be computable in all circumstances.
      
      As a temporary sanity check, mSpanList_Insert and mSpanList_InsertBack
      record the list that an mspan has been inserted into so that
      mSpanList_Remove can verify that the correct list was specified.
      
      Whereas mspan is 112 bytes on amd64, mSpanList is only 16 bytes.  This
      shrinks the size of mheap from 50216 bytes to 12584 bytes.
      
      Change-Id: I8146364753dbc3b4ab120afbb9c7b8740653c216
      Reviewed-on: https://go-review.googlesource.com/15906
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      Reviewed-by: 's avatarAustin Clements <austin@google.com>
      1652a2c3
    • Aaron Jacobs's avatar
      runtime: remove unused printpc and printbyte functions · 151f4ec9
      Aaron Jacobs authored
      Change-Id: I40e338f6b445ca72055fc9bac0f09f0dca904e3a
      Reviewed-on: https://go-review.googlesource.com/16191Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      151f4ec9
    • Brad Fitzpatrick's avatar
      os/exec: make Cmd.Output include stderr in ExitError · c4fa25f4
      Brad Fitzpatrick authored
      Change-Id: I3c6649d2f2521ab0843b13308569867d2e5f02da
      Reviewed-on: https://go-review.googlesource.com/11415Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      c4fa25f4
    • Alex Brainman's avatar
      path/filepath: test EvalSymlinks returns canonical path on windows · 72193c98
      Alex Brainman authored
      When you create C:\A.TXT file on windows, you can open it as c:\a.txt.
      EvalSymlinks("c:\a.txt") returns C:\A.TXT. This is all EvalSymlinks
      did in the past, but recently symlinks functionality been implemented on
      some Windows version (where symlinks are supported). So now EvalSymlinks
      handles both: searching for file canonical name and resolving symlinks.
      
      Unfortunately TestEvalSymlinks has not been adjusted properly. The test
      tests either canonical paths or symlinks, but not both. This CL separates
      canonical paths tests into new TestEvalSymlinksCanonicalNames, so all
      functionality is covered. Tests are simplified somewhat too.
      
      Also remove EvalSymlinksAbsWindowsTests - it seems not used anywhere.
      
      Change-Id: Id12e9f1441c1e30f15c523b250469978e4511a84
      Reviewed-on: https://go-review.googlesource.com/14412Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      72193c98
    • Matthew Dempsky's avatar
      runtime: prune some dead variables · 5a68eb9f
      Matthew Dempsky authored
      Change-Id: I7a1c3079b433c4e30d72fb7d59f9594e0d5efe47
      Reviewed-on: https://go-review.googlesource.com/16178
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarAndrew Gerrand <adg@golang.org>
      5a68eb9f
    • Matthew Dempsky's avatar
      runtime: change fixalloc's chunk field to unsafe.Pointer · 29330c11
      Matthew Dempsky authored
      It's never used as a *byte anyway, so might as well just make it an
      unsafe.Pointer instead.
      
      Change-Id: I68ee418781ab2fc574eeac0498f2515b5561b7a8
      Reviewed-on: https://go-review.googlesource.com/16175
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      29330c11
    • Shenghou Ma's avatar
      runtime: fix typos · 1948aef6
      Shenghou Ma authored
      Change-Id: Iffc25fc80452baf090bf8ef15ab798cfaa120b8e
      Reviewed-on: https://go-review.googlesource.com/16154Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      1948aef6
    • Matthew Dempsky's avatar
      runtime: split plan9 and solaris's m fields into new embedded mOS type · 58e3ae2f
      Matthew Dempsky authored
      Reduces the size of m by ~8% on linux/amd64 (1040 bytes -> 960 bytes).
      
      There are also windows-specific fields, but they're currently
      referenced in OS-independent source files (but only when
      GOOS=="windows").
      
      Change-Id: I13e1471ff585ccced1271f74209f8ed6df14c202
      Reviewed-on: https://go-review.googlesource.com/16173
      Run-TryBot: Matthew Dempsky <mdempsky@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      58e3ae2f
  4. 21 Oct, 2015 1 commit