1. 26 Sep, 2012 3 commits
    • Robert Griesemer's avatar
      exp/types/staging: updated gcimporter · 1785bfca
      Robert Griesemer authored
      Mostly minor changes to match the new
      definitions in types.go and const.go.
      
      R=rsc, r
      CC=golang-dev
      https://golang.org/cl/6506101
      1785bfca
    • Robert Griesemer's avatar
      exp/types/staging: support for typechecking (most) builtins · ebf56e08
      Robert Griesemer authored
      This code relies on some functions that are not yet in staging,
      but it get's harder to keep all this in sync in a piece-meal
      fashion.
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/6492124
      ebf56e08
    • Robert Griesemer's avatar
      exp/types/staging: operands, constants, and error handling · f5483fb8
      Robert Griesemer authored
      More pieces of the typechecker code:
      
      - Operands are temporary objects representing an expressions's
      type and value (for constants). An operand is the equivalent of
      an "attribute" in attribute grammars except that it's not stored
      but only passed around during type checking.
      
      - Constant operations are implemented in const.go. Constants are
      represented as bool (booleans), int64 and *big.Int (integers),
      *big.Rat (floats), complex (complex numbers), and string (strings).
      
      - Error reporting is consolidated in errors.go. Only the first
      dozen of lines is new code, the rest of the file contains the
      exprString and typeString functions formerly in two separate
      files (which have been removed).
      
      This is a replacement CL for 6492101 (which was created without
      proper use of hg).
      
      R=rsc, r
      CC=golang-dev
      https://golang.org/cl/6500114
      f5483fb8
  2. 25 Sep, 2012 8 commits
  3. 24 Sep, 2012 29 commits
    • Mikio Hara's avatar
      net: add read, write message methods to IPConn, UDPConn · 4b9e8415
      Mikio Hara authored
      Both methods allow to access the IP ancillary data through
      socket control messages.
      
      This CL is required for CL 6482044; go.net/ipv4: new package.
      
      R=rsc, r, dave
      CC=golang-dev
      https://golang.org/cl/6426047
      4b9e8415
    • Rémy Oudompheng's avatar
      cmd/{5g,6g,8g,6c}: remove unused macro, use %E to print etype. · 33cceb09
      Rémy Oudompheng authored
      R=golang-dev, rsc, dave
      CC=golang-dev
      https://golang.org/cl/6569044
      33cceb09
    • Rémy Oudompheng's avatar
      cmd/6g, cmd/8g: add OINDREG, ODOT, ODOTPTR cases to igen. · f4e76d5e
      Rémy Oudompheng authored
      Apart from reducing the number of LEAL/LEAQ instructions by about
      30%, it gives 8g easier registerization in several cases,
      for example in strconv. Performance with 6g is not affected.
      
      Before (386):
      src/pkg/strconv/decimal.go:22   TEXT  (*decimal).String+0(SB),$240-12
      src/pkg/strconv/extfloat.go:540 TEXT  (*extFloat).ShortestDecimal+0(SB),$584-20
      
      After (386):
      src/pkg/strconv/decimal.go:22   TEXT  (*decimal).String+0(SB),$196-12
      src/pkg/strconv/extfloat.go:540 TEXT  (*extFloat).ShortestDecimal+0(SB),$420-20
      
      Benchmarks with GOARCH=386 (on a Core 2).
      
      benchmark                 old ns/op    new ns/op    delta
      BenchmarkBinaryTree17    7110191000   7079644000   -0.43%
      BenchmarkFannkuch11      7769274000   7766514000   -0.04%
      BenchmarkGobDecode         33454820     34755400   +3.89%
      BenchmarkGobEncode         11675710     11007050   -5.73%
      BenchmarkGzip            2013519000   1593855000  -20.84%
      BenchmarkGunzip           253368200    242667600   -4.22%
      BenchmarkJSONEncode       152443900    120763400  -20.78%
      BenchmarkJSONDecode       304112800    247461800  -18.63%
      BenchmarkMandelbrot200     29245520     29240490   -0.02%
      BenchmarkParse              8484105      8088660   -4.66%
      BenchmarkRevcomp         2695688000   2841263000   +5.40%
      BenchmarkTemplate         363759800    277271200  -23.78%
      
      benchmark                       old ns/op    new ns/op    delta
      BenchmarkAtof64Decimal                127          129   +1.57%
      BenchmarkAtof64Float                  166          164   -1.20%
      BenchmarkAtof64FloatExp               308          300   -2.60%
      BenchmarkAtof64Big                    584          571   -2.23%
      BenchmarkAppendFloatDecimal           440          430   -2.27%
      BenchmarkAppendFloat                  995          776  -22.01%
      BenchmarkAppendFloatExp               897          746  -16.83%
      BenchmarkAppendFloatNegExp            900          752  -16.44%
      BenchmarkAppendFloatBig              1528         1228  -19.63%
      BenchmarkAppendFloat32Integer         443          453   +2.26%
      BenchmarkAppendFloat32ExactFraction   812          661  -18.60%
      BenchmarkAppendFloat32Point          1002          773  -22.85%
      BenchmarkAppendFloat32Exp             858          725  -15.50%
      BenchmarkAppendFloat32NegExp          848          728  -14.15%
      BenchmarkAppendFloat64Fixed1          447          431   -3.58%
      BenchmarkAppendFloat64Fixed2          480          462   -3.75%
      BenchmarkAppendFloat64Fixed3          461          457   -0.87%
      BenchmarkAppendFloat64Fixed4          509          484   -4.91%
      
      Update #1914.
      
      R=rsc, nigeltao
      CC=golang-dev, remy
      https://golang.org/cl/6494107
      f4e76d5e
    • Adam Langley's avatar
      crypto/tls: support session ticket resumption. · 65c7dc4a
      Adam Langley authored
      Session resumption saves a round trip and removes the need to perform
      the public-key operations of a TLS handshake when both the client and
      server support it (which is true of Firefox and Chrome, at least).
      
      R=golang-dev, bradfitz, rsc
      CC=golang-dev
      https://golang.org/cl/6555051
      65c7dc4a
    • Francesc Campoy's avatar
      testing: document -test.bench flag · b7cbfe6a
      Francesc Campoy authored
      Fixes #4080.
      
      R=rsc, adg
      CC=golang-dev
      https://golang.org/cl/6553068
      b7cbfe6a
    • Russ Cox's avatar
      cmd/gc: fix escape analysis bug · 54af7528
      Russ Cox authored
      Was not handling &x.y[0] and &x.y.z correctly where
      y is an array or struct-valued field (not a pointer).
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/6551059
      54af7528
    • Russ Cox's avatar
      regexp/syntax: define accepted syntax · c7e0b8ba
      Russ Cox authored
      Update #3953.
      
      R=bradfitz, campoy
      CC=golang-dev
      https://golang.org/cl/6543068
      c7e0b8ba
    • Rémy Oudompheng's avatar
      cmd/8g: don't create redundant temporaries in bgen. · 14f3276c
      Rémy Oudompheng authored
      Comparisons used to create temporaries for arguments
      even if they were already variables or addressable.
      Removing the extra ones reduces pressure on regopt.
      
      benchmark                 old ns/op    new ns/op    delta
      BenchmarkGobDecode         50787620     49908980   -1.73%
      BenchmarkGobEncode         19870190     19473030   -2.00%
      BenchmarkGzip            3214321000   3067929000   -4.55%
      BenchmarkGunzip           496792800    465828600   -6.23%
      BenchmarkJSONEncode       232524800    263864400  +13.48%
      BenchmarkJSONDecode       622038400    506600600  -18.56%
      BenchmarkMandelbrot200     23937310     45913060  +91.81%
      BenchmarkParse             14364450     13997010   -2.56%
      BenchmarkRevcomp         6919028000   6480009000   -6.35%
      BenchmarkTemplate         594458800    539528200   -9.24%
      
      benchmark                  old MB/s     new MB/s  speedup
      BenchmarkGobDecode            15.11        15.38    1.02x
      BenchmarkGobEncode            38.63        39.42    1.02x
      BenchmarkGzip                  6.04         6.33    1.05x
      BenchmarkGunzip               39.06        41.66    1.07x
      BenchmarkJSONEncode            8.35         7.35    0.88x
      BenchmarkJSONDecode            3.12         3.83    1.23x
      BenchmarkParse                 4.03         4.14    1.03x
      BenchmarkRevcomp              36.73        39.22    1.07x
      BenchmarkTemplate              3.26         3.60    1.10x
      
      R=mtj, daniel.morsing, rsc
      CC=golang-dev
      https://golang.org/cl/6547064
      14f3276c
    • Eric Roshan-Eisner's avatar
      testing: add memory allocation stats to benchmark · 74a1a8ae
      Eric Roshan-Eisner authored
      R=rsc, nigeltao, dave, bradfitz, r, rogpeppe
      CC=golang-dev
      https://golang.org/cl/6497084
      74a1a8ae
    • Russ Cox's avatar
      cmd/gc: prepare for 64-bit ints · 650160e3
      Russ Cox authored
      This CL makes the compiler understand that the type of
      the len or cap of a map, slice, or string is 'int', not 'int32'.
      It does not change the meaning of int, but it should make
      the eventual change of the meaning of int in 6g a bit smoother.
      
      Update #2188.
      
      R=ken, dave, remyoudompheng
      CC=golang-dev
      https://golang.org/cl/6542059
      650160e3
    • Russ Cox's avatar
      cmd/ld: prepare for 64-bit ints · 0bf46d0c
      Russ Cox authored
      Use explicit IntSize constant instead of 4.
      
      This CL does not change the meaning of int, but it should make
      the eventual change of the meaning of int on amd64 a bit
      smoother.
      
      Update #2188.
      
      R=ken, dave
      CC=golang-dev
      https://golang.org/cl/6554076
      0bf46d0c
    • Russ Cox's avatar
      cmd/cgo: prepare for 64-bit ints · 5501a097
      Russ Cox authored
      This CL makes the size of an int controlled by a variable
      in cgo instead of hard-coding 4 (or 32 bits) in various places.
      
      Update #2188.
      
      R=iant, r, dave
      CC=golang-dev
      https://golang.org/cl/6548061
      5501a097
    • Russ Cox's avatar
      misc/cgo: prepare for 64-bit ints · 0a006b49
      Russ Cox authored
      In a few places, the existing cgo tests assume that a
      Go int is the same as a C int. Making int 64 bits wide
      on 64-bit platforms violates this assumption.
      Change that code to assume that Go int32 and C int
      are the same instead. That's still not great, but it's better,
      and I am unaware of any systems we run on where it is not true.
      
      Update #2188.
      
      R=iant, r
      CC=golang-dev
      https://golang.org/cl/6552064
      0a006b49
    • Russ Cox's avatar
      runtime: prepare for 64-bit ints · 0b08c948
      Russ Cox authored
      This CL makes the runtime understand that the type of
      the len or cap of a map, slice, or string is 'int', not 'int32',
      and it is also careful to distinguish between function arguments
      and results of type 'int' vs type 'int32'.
      
      In the runtime, the new typedefs 'intgo' and 'uintgo' refer
      to Go int and uint. The C types int and uint continue to be
      unavailable (cause intentional compile errors).
      
      This CL does not change the meaning of int, but it should make
      the eventual change of the meaning of int on amd64 a bit
      smoother.
      
      Update #2188.
      
      R=iant, r, dave, remyoudompheng
      CC=golang-dev
      https://golang.org/cl/6551067
      0b08c948
    • Rémy Oudompheng's avatar
      cmd/[568]g: explain the purpose of various Reg fields. · 5e3fb887
      Rémy Oudompheng authored
      R=golang-dev, rsc
      CC=golang-dev, remy
      https://golang.org/cl/6554062
      5e3fb887
    • Russ Cox's avatar
      CONTRIBUTORS: add Jonathan Feinberg (Google CLA) · afa233a8
      Russ Cox authored
      R=golang-dev, bradfitz
      CC=golang-dev
      https://golang.org/cl/6553067
      afa233a8
    • Andrew Gerrand's avatar
      tag go1.0.3 · d18cc29f
      Andrew Gerrand authored
      R=rsc
      CC=golang-dev
      https://golang.org/cl/6543069
      d18cc29f
    • Russ Cox's avatar
      lib9/fmt: do not put a main symbol into lib9.a · 44336459
      Russ Cox authored
      Fixes #4143.
      
      R=golang-dev, bradfitz
      CC=golang-dev
      https://golang.org/cl/6541064
      44336459
    • Brad Fitzpatrick's avatar
      A+C: Add Shivakumar GN (Individual CLA) · 93cf366d
      Brad Fitzpatrick authored
      R=golang-dev, rsc
      CC=golang-dev
      https://golang.org/cl/6541062
      93cf366d
    • Russ Cox's avatar
      cmd/gc: fix comment for caninl · 031b389a
      Russ Cox authored
      Was describing an old implementation.
      
      R=ken2
      CC=golang-dev
      https://golang.org/cl/6553066
      031b389a
    • Akshat Kumar's avatar
      cmd/dist, pkg/runtime: Plan 9, 64-bit: Get PID from TLS; remove use of `_tos'. · e4278862
      Akshat Kumar authored
      Using offsets from Tos is cumbersome and we've had problems
      in the past. Since it's only being used to grab the PID, we'll just
      get that from the default TLS instead.
      
      R=rsc, rminnich, npe
      CC=golang-dev
      https://golang.org/cl/6543049
      e4278862
    • Russ Cox's avatar
      reflect: fix mistake in error message · 8696b084
      Russ Cox authored
      Pointed out by James Chalfant after submit of CL 65000655.
      
      TBR=golang-dev
      CC=golang-dev
      https://golang.org/cl/6543067
      8696b084
    • Russ Cox's avatar
      encoding/asn1: prepare for 64-bit ints · 2f066155
      Russ Cox authored
      The code was assuming that int = 32 bits. Don't.
      
      Update #2188.
      
      R=agl
      CC=golang-dev
      https://golang.org/cl/6543063
      2f066155
    • Nigel Tao's avatar
      compress/flate: move the history buffer out of the decompressor struct. · 6efa6488
      Nigel Tao authored
      I'm not exactly sure why there's a performance gain, but it seems like
      an easy win. Maybe it's a cache line thing. Maybe it's that
      unsafe.Sizeof(decompressor{}) drops to below unmappedzero, so that
      checkref/checkoffset don't need to insert TESTB instructions. Maybe
      it's less noise for the conservative garbage collector. Maybe it's
      something else.
      
      compress/flate benchmarks:
      BenchmarkDecodeDigitsSpeed1e4          378628       349906   -7.59%
      BenchmarkDecodeDigitsSpeed1e5         3481976      3204898   -7.96%
      BenchmarkDecodeDigitsSpeed1e6        34419500     31750660   -7.75%
      BenchmarkDecodeDigitsDefault1e4        362317       335562   -7.38%
      BenchmarkDecodeDigitsDefault1e5       3290032      3107624   -5.54%
      BenchmarkDecodeDigitsDefault1e6      30542540     28937480   -5.26%
      BenchmarkDecodeDigitsCompress1e4       362803       335158   -7.62%
      BenchmarkDecodeDigitsCompress1e5      3294512      3114526   -5.46%
      BenchmarkDecodeDigitsCompress1e6     30514940     28927090   -5.20%
      BenchmarkDecodeTwainSpeed1e4           412818       389521   -5.64%
      BenchmarkDecodeTwainSpeed1e5          3475780      3288908   -5.38%
      BenchmarkDecodeTwainSpeed1e6         33629640     31931420   -5.05%
      BenchmarkDecodeTwainDefault1e4         369736       348850   -5.65%
      BenchmarkDecodeTwainDefault1e5        2861050      2721383   -4.88%
      BenchmarkDecodeTwainDefault1e6       27120120     25862050   -4.64%
      BenchmarkDecodeTwainCompress1e4        372057       350822   -5.71%
      BenchmarkDecodeTwainCompress1e5       2855109      2718664   -4.78%
      BenchmarkDecodeTwainCompress1e6      26987010     26336030   -2.41%
      
      image/png benchmarks:
      BenchmarkDecodeGray               1841839      1802251   -2.15%
      BenchmarkDecodeNRGBAGradient      7115318      6933280   -2.56%
      BenchmarkDecodeNRGBAOpaque        6135892      6013284   -2.00%
      BenchmarkDecodePaletted           1153313      1114302   -3.38%
      BenchmarkDecodeRGB                5619404      5511190   -1.93%
      
      R=rsc, r
      CC=golang-dev
      https://golang.org/cl/6533048
      6efa6488
    • Marcel van Lohuizen's avatar
      exp/locale/collate/tools/colcmp: implementation of colcmp tool used for comparing · 5e47b779
      Marcel van Lohuizen authored
      various implementation of collation.  The tool provides commands for soring,
      regressing one implementation against another, and benchmarking.
      Currently it includes collation implementations for the Go collator, ICU,
      and one using Darwin's CoreFoundation framework.
      To avoid building this tool in the default build, the colcmp tag has been
      added to all files. This allows other tools/colcmp in this directory (e.g. it may make
      sense to move maketables here) to be put in this directory as well.
      
      R=r, rsc, mpvl
      CC=golang-dev
      https://golang.org/cl/6496118
      5e47b779
    • Russ Cox's avatar
      test: prepare for 64-bit ints · 0d82e698
      Russ Cox authored
      Minor tweaks to avoid assuming that int is always 32 bits.
      
      Update #2188.
      
      R=golang-dev, r
      CC=golang-dev
      https://golang.org/cl/6553062
      0d82e698
    • Russ Cox's avatar
      test: minor fixes in run and testlib · 3cd890dd
      Russ Cox authored
      Can tell this doesn't get run very often, but it is still important
      for when you've broken everything else.
      
      R=golang-dev, r
      CC=golang-dev
      https://golang.org/cl/6547065
      3cd890dd
    • Russ Cox's avatar
      syscall: prepare for 64-bit ints · 3d5ddffa
      Russ Cox authored
      This CL fixes code that incorrectly assumes that int is 32 bits wide.
      Specifically, the socketpair system call expects a pointer to a pair
      of int32s, not a pair of ints. Fix this inside the wrappers without
      changing the APIs.
      
      Update #2188.
      
      R=golang-dev, r
      CC=golang-dev
      https://golang.org/cl/6552063
      3d5ddffa
    • Rob Pike's avatar
      text/template: allow .Field access to parenthesized expressions · 9050550c
      Rob Pike authored
      Change the grammar so that field access is a proper operator.
      This introduces a new node, ChainNode, into the public (but
      actually internal) API of text/template/parse. For
      compatibility, we only use the new node type for the specific
      construct, which was not parseable before. Therefore this
      should be backward-compatible.
      
      Before, .X.Y was a token in the lexer; this CL breaks it out
      into .Y applied to .X. But for compatibility we mush them
      back together before delivering. One day we might remove
      that hack; it's the simple TODO in parse.go/operand.
      
      This change also provides grammatical distinction between
              f
      and
              (f)
      which might permit function values later, but not now.
      
      Fixes #3999.
      
      R=golang-dev, dsymonds, gri, rsc, mikesamuel
      CC=golang-dev
      https://golang.org/cl/6494119
      9050550c