1. 01 Oct, 2012 8 commits
    • Dave Cheney's avatar
      cmd/5g: avoid temporary during constant binary op · 7b36acc4
      Dave Cheney authored
      This CL is an attempt to backport the abop code generation from 6g. This improves the generation of the range offset if the increment can be encoded directly via Operand2 shift encoding.
      
      0023 (/home/dfc/src/range.go:7) BGE     ,29(APC)
      0024 (/home/dfc/src/range.go:7) MOVW    0(R3),R5
      0025 (/home/dfc/src/range.go:7) MOVW    $4,R1
      0026 (/home/dfc/src/range.go:7) ADD     R1,R3,R3
      0027 (/home/dfc/src/range.go:8) ADD     R5,R4,R4
      0028 (/home/dfc/src/range.go:7) B       ,17(APC)
      
      becomes
      
      0023 (/home/dfc/src/range.go:7) BGE     ,28(APC)
      0024 (/home/dfc/src/range.go:7) MOVW    0(R3),R0
      0025 (/home/dfc/src/range.go:7) ADD     $4,R3,R3
      0026 (/home/dfc/src/range.go:8) ADD     R0,R4,R4
      0027 (/home/dfc/src/range.go:7) B       ,17(APC)
      
      Benchmarks are unimpressive
      
      dfc@qnap:~/go/test/bench/go1$ ~/go/misc/benchcmp {old,new}.txt
      benchmark                 old ns/op    new ns/op    delta
      BenchmarkBinaryTree17    2147483647   2147483647   +0.93%
      BenchmarkFannkuch11      2147483647   2147483647   -2.52%
      BenchmarkGobDecode        196135200    195842000   -0.15%
      BenchmarkGobEncode         78581650     76734450   -2.35%
      BenchmarkGzip            2147483647   2147483647   -0.47%
      BenchmarkGunzip          1087243000   1070254000   -1.56%
      BenchmarkJSONEncode      1107558000   1146077000   +3.48%
      BenchmarkJSONDecode      2147483647   2147483647   -0.07%
      BenchmarkMandelbrot200   2147483647   2147483647   -0.77%
      BenchmarkParse             74328550     71653400   -3.60%
      BenchmarkRevcomp          111123900    109325950   -1.62%
      BenchmarkTemplate        2147483647   2147483647   -0.82%
      
      benchmark                  old MB/s     new MB/s  speedup
      BenchmarkGobDecode             3.91         3.92    1.00x
      BenchmarkGobEncode             9.77        10.00    1.02x
      BenchmarkGzip                  3.65         3.66    1.00x
      BenchmarkGunzip               17.85        18.13    1.02x
      BenchmarkJSONEncode            1.75         1.69    0.97x
      BenchmarkJSONDecode            0.83         0.83    1.00x
      BenchmarkParse                 0.78         0.81    1.04x
      BenchmarkRevcomp              22.87        23.25    1.02x
      BenchmarkTemplate              0.84         0.85    1.01x
      
      R=remyoudompheng, minux.ma, rsc
      CC=golang-dev
      https://golang.org/cl/6564067
      7b36acc4
    • Jeremy Jackins's avatar
      archive/tar: fix inconsistent namespace usage in example · b9e423ef
      Jeremy Jackins authored
      This fixes some example code in the tar package documentation, which
      first refers to tar.NewWriter and then to Header, which is inconsistent
      because NewWriter and Header are both in the tar namespace.
      
      R=golang-dev, dsymonds
      CC=golang-dev
      https://golang.org/cl/6595050
      b9e423ef
    • Adam Langley's avatar
      math/big: avoid some allocation in Exp · 9070d575
      Adam Langley authored
      benchmark                        old ns/op    new ns/op    delta
      BenchmarkRSA1024Decrypt             745686       644964  -13.51%
      BenchmarkRSA2048Decrypt            5517318      5049200   -8.48%
      Benchmark3PrimeRSA2048Decrypt      3767386      3288048  -12.72%
      
      R=gri
      CC=gobot, golang-dev
      https://golang.org/cl/6566043
      9070d575
    • Robert Griesemer's avatar
      cmd/godoc: clearer comments in FormatSelections · 5a03cd56
      Robert Griesemer authored
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/6561073
      5a03cd56
    • Adam Langley's avatar
      A+C: add Jeff Wendling (Individual CLA) · 3f7fb918
      Adam Langley authored
      R=golang-dev, iant
      CC=golang-dev
      https://golang.org/cl/6596050
      3f7fb918
    • Akshat Kumar's avatar
      cmd/go/build: Add magic data for Plan 9 binaries. · 48bd5c50
      Akshat Kumar authored
      This change allows the Go build and install tools to
      recognize Plan 9 i386 and amd64 binaries.
      
      R=rsc, r, rminnich
      CC=golang-dev
      https://golang.org/cl/6575064
      48bd5c50
    • Luuk van Dijk's avatar
      cmd/gc: Missing break in esc switch. · 78ba449a
      Luuk van Dijk authored
      R=rsc
      CC=golang-dev
      https://golang.org/cl/6594053
      78ba449a
    • Akshat Kumar's avatar
      pkg/syscall: Plan 9, 64-bit: Update error checks from sys calls. · af582674
      Akshat Kumar authored
      This change updates CL 6576057 for exceptional cases where
      return values from Syscall/RawSyscall functions are used.
      
      The system calls return 32-bit integers. With the recent change
      in size of `int' in Go for amd64, the type conversion was not
      catching `-1' return values. This change makes the conversion
      explicitly `int32'.
      
      R=rsc, r
      CC=golang-dev
      https://golang.org/cl/6590047
      af582674
  2. 30 Sep, 2012 3 commits
  3. 29 Sep, 2012 2 commits
  4. 28 Sep, 2012 8 commits
    • Robert Griesemer's avatar
      go spec: arguments for append may overlap · 0c494718
      Robert Griesemer authored
      Fixes #4142.
      
      R=rsc, r, iant, ken, remyoudompheng
      CC=golang-dev
      https://golang.org/cl/6567062
      0c494718
    • Paul Chang's avatar
      cmd/godoc: fix minor bug in FormatSelections. · 7c8e26ee
      Paul Chang authored
      FormatSelections tries to call a nil function value if lw is nil
      and the final entry in the selections array is non-nil. Luckily,
      this doesn't actually happen in practice since godoc doesn't use
      this combination (no line numbers, but with selections).
      
      R=gri
      CC=gobot, golang-dev
      https://golang.org/cl/6488106
      7c8e26ee
    • Robert Griesemer's avatar
      CONTRIBUTORS: added Paul Chang (Google CLA) · 32eb1102
      Robert Griesemer authored
      R=golang-dev, iant
      CC=golang-dev
      https://golang.org/cl/6569078
      32eb1102
    • Robert Griesemer's avatar
      container/list: slightly better code factoring · de782dd1
      Robert Griesemer authored
      R=golang-dev, adg
      CC=golang-dev
      https://golang.org/cl/6569077
      de782dd1
    • Robert Griesemer's avatar
      container/list: Correctly maintain internal invariants · 0e9daef2
      Robert Griesemer authored
      The previous implementation was a mess with invariants
      maintained inconsistently. Essentially reimplemented
      the package:
      
      - used a circular list as internal representation for
        significantly simpler implementation with fewer
        special cases while maintaining the illusion of
        a nil-terminated doubly linked list externally
      
      - more precise documentation
      
      - cleaned up and simplified tests, added test case
        for issue 4103.
      
      No changes to the API or documented semantics.
      
      All this said, I would be in favor of removing
      this package eventually. container/ring provides
      a faster implementation and a simpler and more
      powerful API.
      
      Fixes #4103.
      
      R=r
      CC=golang-dev
      https://golang.org/cl/6569072
      0e9daef2
    • Ian Lance Taylor's avatar
      test: match gccgo error messages · 6ed800c0
      Ian Lance Taylor authored
      const1.go:31:12: error: integer constant overflow
      const1.go:31:12: error: integer constant overflow
      const1.go:33:12: error: integer constant overflow
      const1.go:33:12: error: integer constant overflow
      const1.go:34:14: error: integer constant overflow
      const1.go:35:17: error: integer constant overflow
      const1.go:35:17: error: integer constant overflow
      const1.go:35:17: error: integer constant overflow
      const1.go:35:17: error: integer constant overflow
      const1.go:35:17: error: integer constant overflow
      const1.go:36:19: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:37:24: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:37:24: error: integer constant overflow
      const1.go:37:15: error: integer constant overflow
      const1.go:38:12: error: integer constant overflow
      const1.go:38:12: error: integer constant overflow
      const1.go:38:12: error: integer constant overflow
      const1.go:38:12: error: integer constant overflow
      const1.go:41:20: error: integer constant overflow
      const1.go:41:20: error: integer constant overflow
      const1.go:42:20: error: integer constant overflow
      const1.go:42:20: error: integer constant overflow
      const1.go:44:28: error: integer constant overflow
      const1.go:44:28: error: integer constant overflow
      const1.go:45:14: error: integer constant overflow
      const1.go:49:14: error: integer constant overflow
      const1.go:50:14: error: integer constant overflow
      const1.go:51:14: error: integer constant overflow
      const1.go:54:23: error: integer constant overflow
      const1.go:54:23: error: integer constant overflow
      const1.go:54:23: error: integer constant overflow
      const1.go:54:23: error: integer constant overflow
      const1.go:56:14: error: integer constant overflow
      const1.go:57:24: error: integer constant overflow
      const1.go:57:24: error: integer constant overflow
      const1.go:58:24: error: integer constant overflow
      const1.go:58:24: error: integer constant overflow
      const1.go:59:22: error: integer constant overflow
      const1.go:59:22: error: integer constant overflow
      const1.go:61:24: error: integer constant overflow
      const1.go:62:20: error: division by zero
      const1.go:65:19: error: floating point constant overflow
      const1.go:65:19: error: floating point constant overflow
      const1.go:66:28: error: floating point constant overflow
      const1.go:66:28: error: floating point constant overflow
      const1.go:67:19: error: floating point constant overflow
      const1.go:67:19: error: floating point constant overflow
      const1.go:68:19: error: division by zero
      const1.go:33:14: error: integer constant overflow
      const1.go:35:19: error: integer constant overflow
      const1.go:42:22: error: integer constant overflow
      const1.go:53:17: error: integer constant overflow
      const1.go:55:14: error: integer constant overflow
      const1.go:59:24: error: integer constant overflow
      const1.go:69:20: error: expected integer type
      const1.go:75:4: error: argument 1 has incompatible type (cannot use type int8 as type int)
      const1.go:76:4: error: argument 1 has incompatible type (cannot use type int8 as type int)
      const1.go:77:4: error: argument 1 has incompatible type (cannot use type uint8 as type int)
      const1.go:79:4: error: argument 1 has incompatible type (cannot use type float32 as type int)
      const1.go:80:4: error: argument 1 has incompatible type (cannot use type float64 as type int)
      const1.go:81:4: error: floating point constant truncated to integer
      const1.go:83:4: error: argument 1 has incompatible type (cannot use type float64 as type int)
      const1.go:84:4: error: argument 1 has incompatible type (cannot use type string as type int)
      const1.go:85:4: error: argument 1 has incompatible type (cannot use type bool as type int)
      const1.go:88:7: error: const initializer cannot be nil
      
      const2.go:14:8: error: expected ‘=’
      
      const5.go:27:7: error: expression is not constant
      const5.go:28:7: error: expression is not constant
      const5.go:30:7: error: expression is not constant
      const5.go:31:7: error: expression is not constant
      
      ddd1.go:57:23: error: invalid use of ‘...’ in type conversion
      ddd1.go:59:6: error: invalid use of ‘...’ in type conversion
      ddd1.go:60:12: error: use of ‘[...]’ outside of array literal
      ddd1.go:21:15: error: argument 1 has incompatible type
      ddd1.go:22:10: error: argument 1 has incompatible type
      ddd1.go:30:6: error: invalid use of ‘...’ with non-slice
      ddd1.go:30:6: error: invalid use of ‘...’ with non-slice
      ddd1.go:46:2: error: invalid use of %<...%> with builtin function
      ddd1.go:47:2: error: invalid use of %<...%> with builtin function
      ddd1.go:49:2: error: invalid use of %<...%> with builtin function
      ddd1.go:50:6: error: invalid use of %<...%> with builtin function
      ddd1.go:51:6: error: invalid use of %<...%> with builtin function
      ddd1.go:53:6: error: invalid use of %<...%> with builtin function
      ddd1.go:58:13: error: invalid use of %<...%> with builtin function
      ddd1.go:20:10: error: floating point constant truncated to integer
      ddd1.go:32:6: error: invalid use of ‘...’ calling non-variadic function
      
      declbad.go:20:3: error: variables redeclared but no variable is new
      declbad.go:38:3: error: variables redeclared but no variable is new
      declbad.go:44:3: error: variables redeclared but no variable is new
      declbad.go:51:3: error: variables redeclared but no variable is new
      declbad.go:57:3: error: variables redeclared but no variable is new
      declbad.go:63:3: error: variables redeclared but no variable is new
      declbad.go:26:3: error: incompatible types in assignment (cannot use type float32 as type int)
      declbad.go:32:3: error: incompatible types in assignment (cannot use type int as type float32)
      declbad.go:44:3: error: incompatible types in assignment (different number of results)
      
      fixedbugs/bug223.go:21:5: error: initialization expression for ‘m’ depends upon itself
      
      fixedbugs/bug412.go:10:2: error: duplicate field name ‘x’
      
      fixedbugs/bug413.go:11:5: error: initialization expression for ‘i’ depends upon itself
      
      fixedbugs/bug416.go:13:1: error: method ‘X’ redeclares struct field name
      
      fixedbugs/bug435.go:15:49: error: missing ‘)’
      fixedbugs/bug435.go:15:2: error: reference to undefined name ‘bar’
      
      fixedbugs/bug451.go:9:9: error: expected package
      
      typeswitch3.go:39:9: error: no new variables on left side of ‘:=’
      typeswitch3.go:24:2: error: impossible type switch case (type has no methods)
      
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/6560063
      6ed800c0
    • Eric Roshan-Eisner's avatar
      strings: implement a faster single-string Replacer · 631a0e71
      Eric Roshan-Eisner authored
      The string searching is implemented separately so other functions
      may make use of it in the future.
      
      benchmark                        old ns/op    new ns/op    delta
      BenchmarkSingleMaxSkipping          125889         2474  -98.03%
      BenchmarkSingleLongSuffixFail        16252         1996  -87.72%
      BenchmarkSingleMatch                260793       136266  -47.75%
      
      benchmark                         old MB/s     new MB/s  speedup
      BenchmarkSingleMaxSkipping           79.43      4041.57   50.88x
      BenchmarkSingleLongSuffixFail        61.65       501.81    8.14x
      BenchmarkSingleMatch                 57.52       110.08    1.91x
      
      R=nigeltao
      CC=golang-dev
      https://golang.org/cl/6545049
      631a0e71
    • Eric Roshan-Eisner's avatar
      testing: remove redundant whitespace in output · 4bf6249b
      Eric Roshan-Eisner authored
      R=golang-dev, r
      CC=golang-dev
      https://golang.org/cl/6565061
      4bf6249b
  5. 27 Sep, 2012 9 commits
  6. 26 Sep, 2012 10 commits
    • Rob Pike's avatar
      fmt: allow # and x together for strings · ffea835b
      Rob Pike authored
      Silly and small but easy to be consistent.
      To make it worthwhile, I eliminated an allocation when using
      %x on a byte slice.
      
      Fixes #4149.
      
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/6574046
      ffea835b
    • Sébastien Paolacci's avatar
      net: spread fd over several pollservers. · 7014bc64
      Sébastien Paolacci authored
      Lighten contention without preventing further improvements on pollservers.
      Connections are spread over Min(GOMAXPROCS, NumCPU, 8) pollserver instances.
      
      Median of 10 runs, 4 cores @ 3.4GHz, amd/linux-3.2:
      
      BenchmarkTCPOneShot                171917 ns/op   175194 ns/op      1.91%
      BenchmarkTCPOneShot-2              101413 ns/op   109462 ns/op      7.94%
      BenchmarkTCPOneShot-4               91796 ns/op    35712 ns/op    -61.10%
      BenchmarkTCPOneShot-6               90938 ns/op    30607 ns/op    -66.34%
      BenchmarkTCPOneShot-8               90374 ns/op    29150 ns/op    -67.75%
      BenchmarkTCPOneShot-16             101089 ns/op   111526 ns/op     10.32%
      
      BenchmarkTCPOneShotTimeout         174986 ns/op   178606 ns/op      2.07%
      BenchmarkTCPOneShotTimeout-2       101585 ns/op   110678 ns/op      8.95%
      BenchmarkTCPOneShotTimeout-4        91547 ns/op    35931 ns/op    -60.75%
      BenchmarkTCPOneShotTimeout-6        91496 ns/op    31019 ns/op    -66.10%
      BenchmarkTCPOneShotTimeout-8        90670 ns/op    29531 ns/op    -67.43%
      BenchmarkTCPOneShotTimeout-16      101013 ns/op   106026 ns/op      4.96%
      
      BenchmarkTCPPersistent              51731 ns/op    53324 ns/op      3.08%
      BenchmarkTCPPersistent-2            32888 ns/op    30678 ns/op     -6.72%
      BenchmarkTCPPersistent-4            25751 ns/op    15595 ns/op    -39.44%
      BenchmarkTCPPersistent-6            26737 ns/op     9805 ns/op    -63.33%
      BenchmarkTCPPersistent-8            26850 ns/op     9730 ns/op    -63.76%
      BenchmarkTCPPersistent-16          104449 ns/op   102838 ns/op     -1.54%
      
      BenchmarkTCPPersistentTimeout       51806 ns/op    53281 ns/op      2.85%
      BenchmarkTCPPersistentTimeout-2     32956 ns/op    30895 ns/op     -6.25%
      BenchmarkTCPPersistentTimeout-4     25994 ns/op    18111 ns/op    -30.33%
      BenchmarkTCPPersistentTimeout-6     26679 ns/op     9846 ns/op    -63.09%
      BenchmarkTCPPersistentTimeout-8     26810 ns/op     9727 ns/op    -63.72%
      BenchmarkTCPPersistentTimeout-16   101652 ns/op   104410 ns/op      2.71%
      
      R=rsc, dvyukov, dave, mikioh.mikioh, bradfitz, remyoudompheng
      CC=golang-dev
      https://golang.org/cl/6496054
      7014bc64
    • Rémy Oudompheng's avatar
      cmd/6g, cmd/8g: fix two "out of fixed registers" cases. · 6feb6132
      Rémy Oudompheng authored
      In two cases, registers were allocated too early resulting
      in exhausting of available registers when nesting these
      operations.
      
      The case of method calls was due to missing cases in igen,
      which only makes calls but doesn't allocate a register for
      the result.
      
      The case of 8-bit multiplication was due to a wrong order
      in register allocation when Ullman numbers were bigger on the
      RHS.
      
      Fixes #3907.
      Fixes #4156.
      
      R=rsc
      CC=golang-dev, remy
      https://golang.org/cl/6560054
      6feb6132
    • Daniel Morsing's avatar
      cmd/gc: Don't calculate second value in range if it is blank. · 7936ab58
      Daniel Morsing authored
      Low hanging fruit optimization. Will remove an expensive copy if the range variable is an array.
      
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/6564052
      7936ab58
    • David du Colombier's avatar
      crypto/x509: add Plan 9 root certificate location · cca48f1a
      David du Colombier authored
      R=golang-dev
      CC=golang-dev, rsc
      https://golang.org/cl/6571056
      cca48f1a
    • Jonathan Feinberg's avatar
      doc: add important info for would-be go contributors. · 452f40f8
      Jonathan Feinberg authored
      Link to the "installing from source" docs instead of the "installing" docs.
      
      Remind would-be hacker to switch to the default branch from the release branch.
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/6559043
      452f40f8
    • Shenghou Ma's avatar
      crypto/aes: speed up using AES-NI on amd64 · 948db4e0
      Shenghou Ma authored
      This CL requires CL 5970055.
      
      benchmark           old ns/op    new ns/op    delta
      BenchmarkEncrypt          161           23  -85.71%
      BenchmarkDecrypt          158           24  -84.24%
      BenchmarkExpand           526           62  -88.21%
      
      benchmark            old MB/s     new MB/s  speedup
      BenchmarkEncrypt        99.32       696.19    7.01x
      BenchmarkDecrypt       100.93       641.56    6.36x
      
      R=golang-dev, bradfitz, dave, rsc
      CC=golang-dev
      https://golang.org/cl/6549055
      948db4e0
    • Shenghou Ma's avatar
      cmd/6a, cmd/6l: add support for AES-NI instrutions and PSHUFD · e039c405
      Shenghou Ma authored
      This CL adds support for the these 7 new instructions to 6a/6l in
      preparation of the upcoming CL for AES-NI accelerated crypto/aes:
      AESENC, AESENCLAST, AESDEC, AESDECLAST, AESIMC, AESKEYGENASSIST,
      and PSHUFD.
      
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/5970055
      e039c405
    • Shivakumar GN's avatar
      codereview: use subprocess.call() instead of os.spawnvp() for portability · b7331f9b
      Shivakumar GN authored
      Fixes #4121.
      
      R=golang-dev, minux.ma, dave, r
      CC=golang-dev
      https://golang.org/cl/6555049
      b7331f9b
    • Robert Griesemer's avatar
      spec: permit trailing comma in conversions · 60a6ae8c
      Robert Griesemer authored
      Also: Adjust prose in Conversions section
      to be consistent.
      
      This is a backward-compatible syntax change.
      For a discussion see issue 2568.
      
      Fixes #2568.
      Fixes #4123.
      
      R=golang-dev, r, iant, rsc
      CC=golang-dev
      https://golang.org/cl/6572049
      60a6ae8c