Nigel Tao [Mon, 24 Sep 2012 07:58:08 +0000 (17:58 +1000)]
compress/flate: move the history buffer out of the decompressor struct.
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.
exp/locale/collate/tools/colcmp: implementation of colcmp tool used for comparing
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.
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
Rob Pike [Mon, 24 Sep 2012 03:23:15 +0000 (13:23 +1000)]
text/template: allow .Field access to parenthesized expressions
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.
The code was trying to interpret a uint32 n as a signed quantity
and then store it in an int. For this, int(n) currently works, but when
int becomes 64 bits one must write int(int32(n)) instead, to get
the 32-bit sign extension.
pkg/go/ast: Avoid doing zero-length writes to the fd.
After each line, ast.Print would do a zero-length write,
which would hit the boundary condition on Plan 9 when
reading over pipes (since message boundaries are
preserved). This change makes sure we only do positive-
length writes.
R=rsc, rminnich, dave, r
CC=golang-dev
https://golang.org/cl/6558046
test: expand run.go's errorcheck, make clear which bugs run
Today, if run.go doesn't understand a test header line it just ignores
the test, making it too easy to write or edit tests that are not actually
being run.
- expand errorcheck to accept flags, so that bounds.go and escape*.go can run.
- create a whitelist of skippable tests in run.go; skipping others is an error.
- mark all skipped tests at top of file.
The width was not being set on the address, which meant
that the optimizer could not find variables that overlapped
with it and mark them as having had their address taken.
This let to the compiler believing variables had been set
but never used and then optimizing away the set.
Joel Sing [Fri, 21 Sep 2012 02:51:39 +0000 (12:51 +1000)]
cmd/{ld,5l,6l,8l}: add support for OpenBSD ELF signatures
OpenBSD now requires ELF binaries to have a PT_NOTE that identifies
it as an OpenBSD binary. Refactor the existing NetBSD ELF signature
code and implement support for OpenBSD ELF signatures.
Previously we tried to parse email constraints as the maximum base
distance (which is unused and must be omitted according to RFC 5280)
because they share the same tag number. Rather than complicate the
code further, this CL just ignores the unused values.
Joel Sing [Thu, 20 Sep 2012 03:20:33 +0000 (13:20 +1000)]
cgo: process DWARF info even when debug data is used for value
Always process the DWARF info, even when the const value is determined
using the debug data block. This ensures that the injected enum is
removed and future loads of the same constant do not trigger
inconsistent definitions.
David Symonds [Wed, 19 Sep 2012 22:12:47 +0000 (08:12 +1000)]
vet: fix rangeloop.
In a range loop, the presence of a value implies the presence of a key.
However, the presence of a value as an *ast.Ident does not imply that
the key is also an *ast.Ident, thus leading to a panic any time the
two argument form is used where the key is not an identifier.
R=golang-dev, adg, r
CC=golang-dev
https://golang.org/cl/6540045
Robert Griesemer [Wed, 19 Sep 2012 21:14:21 +0000 (14:14 -0700)]
gofmt: added testcase for files containing \r\n line endings
(see also issue 3961).
hexdump -c testdata/crlf.input 0000000 / * \r \n \t S o u r c e c o n t 0000010 a i n i n g C R / L F l i n 0000020 e e n d i n g s . \r \n \t T h e 0000030 g o f m t ' e d o u t p u t 0000040 m u s t o n l y h a v e 0000050 L F \r \n \t l i n e e n d i n g 0000060 s . \r \n * / \r \n p a c k a g e 0000070 m a i n \r \n \r \n f u n c m a i 0000080 n ( ) { \r \n \t / / l i n e 0000090 c o m m e n t \r \n \t p r i n t l 00000a0 n ( " h e l l o , w o r l d ! 00000b0 " ) / / a n o t h e r l i 00000c0 n e c o m m e n t \r \n \t p r i 00000d0 n t l n ( ) \r \n } \r \n 00000db
hexdump -c testdata/crlf.golden 0000000 / * \n \t S o u r c e c o n t a 0000010 i n i n g C R / L F l i n e 0000020 e n d i n g s . \n \t T h e g 0000030 o f m t ' e d o u t p u t m 0000040 u s t o n l y h a v e L F 0000050 \n \t l i n e e n d i n g s . \n 0000060 * / \n p a c k a g e m a i n \n 0000070 \n f u n c m a i n ( ) { \n \t 0000080 / / l i n e c o m m e n t \n 0000090 \t p r i n t l n ( " h e l l o , 00000a0 w o r l d ! " ) / / a n o 00000b0 t h e r l i n e c o m m e n 00000c0 t \n \t p r i n t l n ( ) \n } \n 00000cf
Shenghou Ma [Wed, 19 Sep 2012 16:58:34 +0000 (00:58 +0800)]
src/all.bat: fix banner
we need to restore %PATH% before calling "dist banner", so that
it could suggest the user to add %GOROOT%/bin to %PATH% if necessary.
Shenghou Ma [Wed, 19 Sep 2012 16:27:23 +0000 (00:27 +0800)]
misc/cgo/stdio: make it work on Windows and also test it
use a function to get stdout and stderr, instead of depending
on a specific libc implementation.
also make test/run.go replace \r\n by \n before comparing
output.
api: fix build; regenerate api.txt with fixed signatures
Update to tip (to get 6475062 and 6525047)
Rebuild cmd/api.
Switch to a go1 release branch.
Run go tool api > api/go1.txt.new in release branch.
Back to tip.
race: linker changes
This is the second part of a bigger change that adds data race detection feature:
https://golang.org/cl/6456044
This change makes the linker emit dependency on runtime/race package when supplied with -b flag.
race: build system changes
This is the first part of a bigger change that adds data race detection feature:
https://golang.org/cl/6456044
Adds -race flag to go command.
API change:
+pkg go/build, type Context struct, InstallTag string
race: cmd/cgo changes
This is a part of a bigger change that adds data race detection feature:
https://golang.org/cl/6456044
This change breaks circular dependency between runtime/race and syscall packages.
runtime: refactor goroutine blocking
The change is a preparation for the new scheduler.
It introduces runtime.park() function,
that will atomically unlock the mutex and park the goroutine.
It will allow to remove the racy readyonstop flag
that is difficult to implement w/o the global scheduler mutex.
R=rsc, remyoudompheng, dave
CC=golang-dev
https://golang.org/cl/6501077
Daniel Morsing [Tue, 18 Sep 2012 15:40:53 +0000 (17:40 +0200)]
cmd/gc: fix double evaluation in interface comparison
During interface compare, the operands will be evaluated twice. The operands might include function calls for conversion, so make them cheap before comparing them.
Dave Cheney [Mon, 17 Sep 2012 23:55:07 +0000 (09:55 +1000)]
runtime: arm: abort if VFPv3 support missing
Fixes #3456.
This proposal is a reformulation of CL 5987063. This CL resets
the default GOARM value to 6 and allows the use of the VFPv3
optimisation if GOARM=7. Binaries built with this CL in place
will abort if GOARM=7 was used and the target host does not
support VFPv3.
Robert Griesemer [Mon, 17 Sep 2012 19:23:41 +0000 (12:23 -0700)]
spec: unsafe.Alignof/Sizeof also accept non-variable arguments
Both gc and gccgo permit calls such as unsafe.Sizeof(42). The
spec only permits variable arguments. This is a (backward-compatible)
spec change reflecting the status quo. Seems preferrable over
restricting the compilers.
R=r, rsc, iant, ken
CC=golang-dev
https://golang.org/cl/6494140
Rob Pike [Fri, 14 Sep 2012 22:25:37 +0000 (15:25 -0700)]
text/template: towards better errors
Give the right name for errors, and add a test to check we're
getting the errors we expect.
Also fix an ordering bug (calling add after stopParse) that
caused a nil indirection rather than a helpful error.
Fixes #3280.
Command.Start could crash before if no fds were available
because a nil *os.File of /dev/null was added to the cleanup
list, which crashed before returning the proper error.
Robert Griesemer [Fri, 14 Sep 2012 18:31:56 +0000 (11:31 -0700)]
spec: clarify section on string types
Strings happen to be represented similarly to
byte slices internally, but they don't quite
behave like them: While strings can be indexed,
sliced, and have their len() taken like byte
slices, string elements are not addressable,
make() and cap() is not supported, range loops
operate differently, and they are immutable (and
thus behave like values rather then references).
Fixes #4018.
R=r, rsc, iant, ken
CC=golang-dev
https://golang.org/cl/6503116
exp/locale/collate: changed API to allow access to different locales through New(),
instead of variables. Several reasons:
- Encourage users of the API to minimize the number of creations and reuse Collate objects.
- Don't rule out the possibility of using initialization code for collators. For some locales
it will be possible to have very compact representations that can be quickly expanded
into a proper table on demand.
Other changes:
- Change name of root* vars to main*, as the tables are shared between locales.
- Added Locales() method to get a list of supported locales.
Alex Brainman [Fri, 14 Sep 2012 02:53:30 +0000 (12:53 +1000)]
misc/dashboard/builder: use c:\ as default buildroot on windows
We have some tests (misc/cgo/test) that are disabled only because
they will fail to run on go builder - see issue 3358 for details.
This change will allow us to enable these tests.