1. 25 Jan, 2012 13 commits
  2. 24 Jan, 2012 19 commits
  3. 23 Jan, 2012 8 commits
    • David G. Andersen's avatar
      math/big: slight improvement to algorithm used for internal bitLen function · 1dc37bbf
      David G. Andersen authored
      The bitLen function currently shifts out blocks of 8 bits at a time.
      This change replaces this sorta-linear algorithm with a log(N)
      one (shift out 16 bits, then 8, then 4, then 2, then 1).
      I left the start of it linear at 16 bits at a time so that
      the function continues to work with 32 or 64 bit values
      without any funkiness.
      The algorithm is similar to several of the nlz ("number of
      leading zeros") algorithms from "Hacker's Delight" or the
      "bit twiddling hacks" pages.
      
      Doesn't make a big difference to the existing benchmarks, but
      I'm using the code in a different context that calls bitLen
      much more often, so it seemed worthwhile making the existing
      codebase faster so that it's a better building block.
      
      Microbenchmark results on a 64-bit Macbook Pro using 6g from weekly.2012-01-20:
      
      benchmark                old ns/op    new ns/op    delta
      big.BenchmarkBitLen0             4            6  +50.12%
      big.BenchmarkBitLen1             4            6  +33.91%
      big.BenchmarkBitLen2             6            6   +3.05%
      big.BenchmarkBitLen3             7            6  -19.05%
      big.BenchmarkBitLen4             9            6  -30.19%
      big.BenchmarkBitLen5            11            6  -42.23%
      big.BenchmarkBitLen8            16            6  -61.78%
      big.BenchmarkBitLen9             5            6  +18.29%
      big.BenchmarkBitLen16           18            7  -60.99%
      big.BenchmarkBitLen17            7            6   -4.64%
      big.BenchmarkBitLen31           19            7  -62.49%
      
      On an ARM machine (with the previous weekly):
      
      benchmark                old ns/op    new ns/op    delta
      big.BenchmarkBitLen0            37           50  +36.56%
      big.BenchmarkBitLen1            59           51  -13.69%
      big.BenchmarkBitLen2            74           59  -20.40%
      big.BenchmarkBitLen3            92           60  -34.89%
      big.BenchmarkBitLen4           110           59  -46.09%
      big.BenchmarkBitLen5           127           60  -52.68%
      big.BenchmarkBitLen8           181           59  -67.24%
      big.BenchmarkBitLen9            78           60  -23.05%
      big.BenchmarkBitLen16          199           69  -65.13%
      big.BenchmarkBitLen17           91           70  -23.17%
      big.BenchmarkBitLen31          210           95  -54.43%
      
      R=golang-dev, dave, edsrzf, gri
      CC=golang-dev
      https://golang.org/cl/5570044
      1dc37bbf
    • Russ Cox's avatar
      exp/ebnflint: test spec during 'go test' · 4417bc37
      Russ Cox authored
      This avoids the need for a custom Makefile.
      
      R=gri
      CC=golang-dev
      https://golang.org/cl/5575045
      4417bc37
    • Russ Cox's avatar
      cmd/go: add missing files (fix build) · 1cfae8bc
      Russ Cox authored
      TBR=r
      CC=golang-dev
      https://golang.org/cl/5571050
      1cfae8bc
    • Russ Cox's avatar
      cmd/go: implement go get + bug fixes · ed936a3f
      Russ Cox authored
      Move error information into Package struct, so that
      a package can be returned even if a dependency failed
      to load or did not exist.  This makes it possible to run
      'go fix' or 'go fmt' on packages with broken dependencies
      or missing imports.  It also enables go get -fix.
      The new go list -e flag lets go list process those package
      errors as normal data.
      
      Change p.Doc to be first sentence of package doc, not
      entire package doc.  Makes go list -json or
      go list -f '{{.ImportPath}} {{.Doc}}' much more reasonable.
      
      The go tool now depends on http, which means also
      net and crypto/tls, both of which use cgo.  Trying to
      make the build scripts that build the go tool understand
      and handle cgo is too much work.  Instead, we build
      a stripped down version of the go tool, compiled as go_bootstrap,
      that substitutes an error stub for the usual HTTP code.
      The buildscript builds go_bootstrap, go_bootstrap builds
      the standard packages and commands, including the full
      including-HTTP-support go tool, and then go_bootstrap
      gets deleted.
      
      Also handle the case where the buildscript needs updating
      during all.bash: if it fails but a go command can be found on
      the current $PATH, try to regenerate it.  This gracefully
      handles situations like adding a new file to a package
      used by the go tool.
      
      R=r, adg
      CC=golang-dev
      https://golang.org/cl/5553059
      ed936a3f
    • Russ Cox's avatar
      go/build: add BuildTags to Context, allow !tag · b5777571
      Russ Cox authored
      This lets the client of go/build specify additional tags that
      can be recognized in a // +build directive.  For example,
      a build for a custom environment like App Engine might
      include "appengine" in the BuildTags list, so that packages
      can be written with some files saying
      
              // +build appengine   (build only on app engine)
      
      or
      
              // +build !appengine  (build only when NOT on app engine)
      
      App Engine here is just a hypothetical context.  I plan to use
      this in the cmd/go sources to distinguish the bootstrap version
      of cmd/go (which will not use networking) from the full version
      using a custom tag.  It might also be useful in App Engine.
      
      Also, delete Build and Script, which we did not end up using for
      cmd/go and which never got turned on for real in goinstall.
      
      R=r, adg
      CC=golang-dev
      https://golang.org/cl/5554079
      b5777571
    • Russ Cox's avatar
      gc: avoid DOT in error messages · bf0c1903
      Russ Cox authored
      R=ken2
      CC=golang-dev
      https://golang.org/cl/5573047
      bf0c1903
    • Shenghou Ma's avatar
      cgo: -cdefs should translate unsafe.Pointer to void * · eb984f52
      Shenghou Ma authored
              Fixes #2454.
      
      R=rsc, mikioh.mikioh, golang-dev, iant, iant
      CC=golang-dev
      https://golang.org/cl/5557068
      eb984f52
    • Robert Griesemer's avatar
      go/doc: test all operation modes · 370f4e49
      Robert Griesemer authored
      Golden files have extension .d.golden where d is the mode value (0 or 1 for now)
      (i.e., testdata/file.out is now testdata/file.0.golden, and there is a new file
      testdata/file.1.golden for each testcase)
      
      R=rsc
      CC=golang-dev
      https://golang.org/cl/5573046
      370f4e49