aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-03-29weekly.2011-03-28weekly.2011-03-28Andrew Gerrand
R=r, rsc CC=golang-dev https://golang.org/cl/4272072
2011-03-28go/printer, gofmt: rely on existing line breaks when formatting expression listsRobert Griesemer
No impact on existing sources. Fixes #1632. R=rsc CC=golang-dev https://golang.org/cl/4271083
2011-03-28go/scanner: return literal as string instead of []byteRobert Griesemer
Removed many string conversions in dependent code. Runs all tests. No change to gofmt output. R=r CC=golang-dev https://golang.org/cl/4291070
2011-03-28godoc: fix spelling errorRobert Griesemer
R=r, r2 CC=golang-dev https://golang.org/cl/4289079
2011-03-28doc: gccgo now supports method expressions and multiple init functions.Ian Lance Taylor
R=gri CC=golang-dev https://golang.org/cl/4314047
2011-03-28go/token: use array instead of map for token->string tableRobert Griesemer
R=rsc CC=golang-dev https://golang.org/cl/4284070
2011-03-28net: let OS-specific AddFD routine wake up polling thread.Ian Lance Taylor
With gccgo some operating systems require using select rather than epoll or kevent. Using select means that we have to wake up the polling thread each time we add a new file descriptor. This implements that in the generic code rather than adding another wakeup channel, even though nothing in the current net package uses the capability. R=rsc, iant2 CC=golang-dev https://golang.org/cl/4284069
2011-03-28go/ast: implemented NewPackageRobert Griesemer
NewPackage creates an ast.Package node from a set of package files and resolves unresolved identifiers. Also: - Changed semantics of Scope.Insert: If an object is inserted w/o errors, the result is nil (before it was obj). - Fixed an identifier resolution bug in the parser: map keys must not be resolved. gotype runs through several go/* packages and successfully resolves all (non-field/method) identifiers. R=rog, rsc CC=golang-dev https://golang.org/cl/4298044
2011-03-28strings: Map: avoid allocation when string is unchangedBrad Fitzpatrick
This speeds up strings.ToLower, etc. before/after: strings_test.BenchmarkMapNoChanges 1000000 1013 ns/op strings_test.BenchmarkMapNoChanges 5000000 442 ns/op R=r, rog, eh, rsc CC=golang-dev https://golang.org/cl/4306056
2011-03-28runtime: fix gdb support for goroutines.Luuk van Dijk
in gdb, 'info goroutines' and 'goroutine <n> <cmd> were crashing because the 'g' and 'm' structures had changed a bit. R=rsc CC=golang-dev https://golang.org/cl/4289077
2011-03-27build: add all-qemu.bash, handful of arm fixesRuss Cox
R=r CC=golang-dev https://golang.org/cl/4313051
2011-03-27test: match gccgo error messages for bug323.go.Ian Lance Taylor
bug323.go:18:3: error: reference to undefined field or method ‘Meth’ bug323.go:19:3: error: reference to undefined field or method ‘Meth2’ R=golang-dev, rsc1 CC=golang-dev https://golang.org/cl/4280072
2011-03-27http: avoid crash when asked for multiple file rangesRuss Cox
R=adg CC=golang-dev https://golang.org/cl/4289076
2011-03-27runtime: fix darwin/amd64 thread VM footprintAlexey Borzenkov
On darwin amd64 it was impossible to create more that ~132 threads. While investigating I noticed that go consumes almost 1TB of virtual memory per OS thread and the reason for such a small limit of OS thread was because process was running out of virtual memory. While looking at bsdthread_create I noticed that on amd64 it wasn't using PTHREAD_START_CUSTOM. If you look at http://fxr.watson.org/fxr/source/bsd/kern/pthread_synch.c?v=xnu-1228 you will see that in that case darwin will use stack pointer as stack size, allocating huge amounts of memory for stack. This change fixes the issue and allows for creation of up to 2560 OS threads (which appears to be some Mac OS X limit) with relatively small virtual memory consumption. R=rsc CC=golang-dev https://golang.org/cl/4289075
2011-03-27A+C: Alexey Borzenkov (individual CLA)Russ Cox
R=golang-dev, gri CC=golang-dev https://golang.org/cl/4316042
2011-03-27test: match gccgo error messages for bug325.go.Ian Lance Taylor
bug325.go:13:10: error: invalid indirect of ‘unsafe.Pointer’ bug325.go:14:31: error: reference to field ‘foo’ in object which has no fields or methods R=golang-dev, r CC=golang-dev https://golang.org/cl/4313050
2011-03-26testing: shorten some more testsRob Pike
R=rsc CC=golang-dev https://golang.org/cl/4314044
2011-03-26test: match gccgo error messages for init.goIan Lance Taylor
init.go:16:10: error: invalid reference to unexported identifier ‘runtime.init’ init.go:15:2: error: reference to undefined name ‘init’ init.go:17:10: error: reference to undefined name ‘init’ R=golang-dev, rsc1 CC=golang-dev https://golang.org/cl/4289074
2011-03-25gob: trivial cleanupRobert Hencke
R=golang-dev, r CC=golang-dev https://golang.org/cl/4279074
2011-03-25gc: remove interim ... error which rejects valid code.Ian Lance Taylor
It's been six months. R=rsc CC=golang-dev https://golang.org/cl/4289073
2011-03-26dashboard: remove old python/bash builder, update READMEAndrew Gerrand
R=rsc CC=golang-dev https://golang.org/cl/4275076
2011-03-25test: match gccgo error messages for cmp6.goIan Lance Taylor
cmp6.go:28:9: error: incompatible types in binary expression cmp6.go:29:9: error: incompatible types in binary expression cmp6.go:40:9: error: incompatible types in binary expression cmp6.go:41:9: error: incompatible types in binary expression cmp6.go:48:9: error: expected integer, floating, complex, string, pointer, boolean, interface, slice, map, channel, or function type R=rsc, r2 CC=golang-dev https://golang.org/cl/4281071
2011-03-25testing: shorten some tests.Rob Pike
These are the top runners. More to come. Also print two digits of timing info under -test.v. R=rsc CC=golang-dev https://golang.org/cl/4317044
2011-03-25test: match gccgo error messages for bug081.go.Ian Lance Taylor
bug081.go:9:9: error: expected type R=rsc CC=golang-dev https://golang.org/cl/4280071
2011-03-25build: handle broken awk in version.bashDave Cheney
R=adg, rsc, ality CC=golang-dev https://golang.org/cl/4281069
2011-03-25testing: set up structure for faster testing using the new -test.short flag.Rob Pike
New make target "testshort" runs "gotest -test.short" and is invoked by run.bash, which is invoked by all.bash. Use -test.short to make one package (crypto ecdsa) run much faster. More changes to come. Once this is in, I will update the long-running tests to use the new flag. R=rsc CC=golang-dev https://golang.org/cl/4317043
2011-03-25test: match gccgo error messages for bug016.go.Ian Lance Taylor
bug016.go:11:8: error: negative shift count R=rsc, gri CC=golang-dev https://golang.org/cl/4312055
2011-03-25net: fix Windows buildPeter Mundy
R=rsc CC=golang-dev https://golang.org/cl/4314042
2011-03-25syscall: GetsockoptInt for darwin, freebsd.Albert Strasheim
R=rsc CC=golang-dev https://golang.org/cl/4298060
2011-03-25net: add FileConn, FilePacketConn, FileListenerAlbert Strasheim
R=iant, rsc, brainman CC=golang-dev https://golang.org/cl/4306042
2011-03-25test/run: clear $E in case it's already set in environment.Rob Pike
R=rsc CC=golang-dev https://golang.org/cl/4312054
2011-03-25test: match gccgo error messages for bug274.go.Ian Lance Taylor
bug274.go:23:3: error: missing statement after label bug274.go:25:3: error: missing statement after label bug274.go:28:3: error: label ‘L2’ defined and not used R=rsc CC=golang-dev https://golang.org/cl/4273114
2011-03-25flag: fix error in documentation example.Rob Pike
Fixes #1615. This time for sure. R=rsc, gri CC=golang-dev https://golang.org/cl/4275079
2011-03-25runtime/pprof: disable test on darwinRuss Cox
Fixes #1641. Actually it side steps the real issue, which is that the setitimer(2) implementation on OS X is not useful for profiling of multi-threaded programs. I filed the below using the Apple Bug Reporter. /* Filed as Apple Bug Report #9177434. This program creates a new pthread that loops, wasting cpu time. In the main pthread, it sleeps on a condition that will never come true. Before doing so it sets up an interval timer using ITIMER_PROF. The handler prints a message saying which thread it is running on. POSIX does not specify which thread should receive the signal, but in order to be useful in a user-mode self-profiler like pprof or gprof http://code.google.com/p/google-perftools http://www.delorie.com/gnu/docs/binutils/gprof_25.html it is important that the thread that receives the signal is the one whose execution caused the timer to expire. Linux and FreeBSD handle this by sending the signal to the process's queue but delivering it to the current thread if possible: http://lxr.linux.no/linux+v2.6.38/kernel/signal.c#L802 807 /* 808 * Now find a thread we can wake up to take the signal off the queue. 809 * 810 * If the main thread wants the signal, it gets first crack. 811 * Probably the least surprising to the average bear. 812 * / http://fxr.watson.org/fxr/source/kern/kern_sig.c?v=FREEBSD8;im=bigexcerpts#L1907 1914 /* 1915 * Check if current thread can handle the signal without 1916 * switching context to another thread. 1917 * / On those operating systems, this program prints: $ ./a.out signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread signal on cpu-chewing looper thread $ The OS X kernel does not have any such preference. Its get_signalthread does not prefer current_thread(), in contrast to the other two systems, so the signal gets delivered to the first thread in the list that is able to handle it, which ends up being the main thread in this experiment. http://fxr.watson.org/fxr/source/bsd/kern/kern_sig.c?v=xnu-1456.1.26;im=excerpts#L1666 $ ./a.out signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread signal on sleeping main thread $ The fix is to make get_signalthread use the same heuristic as Linux and FreeBSD, namely to use current_thread() if possible before scanning the process thread list. */ #include <sys/time.h> #include <sys/signal.h> #include <pthread.h> #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <string.h> static void handler(int); static void* looper(void*); static pthread_t pmain, ploop; int main(void) { struct itimerval it; struct sigaction sa; pthread_cond_t cond; pthread_mutex_t mu; memset(&sa, 0, sizeof sa); sa.sa_handler = handler; sa.sa_flags = SA_RESTART; memset(&sa.sa_mask, 0xff, sizeof sa.sa_mask); sigaction(SIGPROF, &sa, 0); pmain = pthread_self(); pthread_create(&ploop, 0, looper, 0); memset(&it, 0, sizeof it); it.it_interval.tv_usec = 10000; it.it_value = it.it_interval; setitimer(ITIMER_PROF, &it, 0); pthread_mutex_init(&mu, 0); pthread_mutex_lock(&mu); pthread_cond_init(&cond, 0); for(;;) pthread_cond_wait(&cond, &mu); return 0; } static void handler(int sig) { static int nsig; pthread_t p; p = pthread_self(); if(p == pmain) printf("signal on sleeping main thread\n"); else if(p == ploop) printf("signal on cpu-chewing looper thread\n"); else printf("signal on %p\n", (void*)p); if(++nsig >= 10) exit(0); } static void* looper(void *v) { for(;;); } R=r CC=golang-dev https://golang.org/cl/4273113
2011-03-25test: match gccgo error messages for label.go and label1.go.Ian Lance Taylor
label.go:30:1: error: label ‘L6’ already defined label.go:28:1: note: previous definition of ‘L6’ was here label.go:23:1: error: label ‘L4’ defined and not used label.go:52:2: error: label ‘defalt’ defined and not used label.go:17:1: error: label ‘L2’ defined and not used label.go:26:1: error: label ‘L5’ defined and not used label.go:20:1: error: label ‘L3’ defined and not used label.go:14:1: error: label ‘L1’ defined and not used label1.go:32:13: error: invalid continue label ‘L2’ label1.go:44:13: error: invalid continue label ‘L3’ label1.go:52:10: error: invalid break label ‘L4’ label1.go:55:13: error: invalid continue label ‘L4’ label1.go:65:9: error: invalid break label ‘L5’ label1.go:68:12: error: invalid continue label ‘L5’ label1.go:76:10: error: invalid break label ‘L1’ label1.go:79:13: error: invalid continue label ‘L1’ R=rsc CC=golang-dev https://golang.org/cl/4275078
2011-03-25runtime: always set *received in chanrecv.Ian Lance Taylor
Also fix comment. The only caller of chanrecv initializes the value to false, so this patch makes no difference at present. But it seems like the right thing to do. R=rsc CC=golang-dev https://golang.org/cl/4312053
2011-03-25runtime/darwin: remove unused local variables.Ian Lance Taylor
R=rsc CC=golang-dev https://golang.org/cl/4309049
2011-03-25http/pprof: cpu profiling supportRuss Cox
R=r CC=golang-dev https://golang.org/cl/4280060
2011-03-25http: modified perl cgi test to remove newline from env variablesRoger Pau Monné
Fixes #1639 R=golang-dev, bradfitzgo CC=golang-dev https://golang.org/cl/4291069
2011-03-25runtime: fix arm buildRuss Cox
R=adg, dfc, r CC=golang-dev https://golang.org/cl/4296042
2011-03-25A+C: Roger Pau Monné (individual CLA)Russ Cox
R=golang-dev CC=golang-dev https://golang.org/cl/4276077
2011-03-25freebsd-386: update defsDevon H. O'Dell
R=golang-dev, adg CC=golang-dev https://golang.org/cl/4273102
2011-03-24go/parser: resolve identifiers properlyRobert Griesemer
Correctly distinguish between lhs and rhs identifiers and resolve/declare them accordingly. Collect field and method names in respective scopes (will be available after some minor AST API changes). Also collect imports since it's useful to have that list directly w/o having to re-traverse the AST (will also be available after some minor AST API changes). No external API changes in this CL. R=rsc, rog CC=golang-dev https://golang.org/cl/4271061
2011-03-24misc/emacs: gofmt: don't clobber the current buffer on failureSameer Ajmani
Change M-x gofmt to display errors in a new buffer instead of clobbering the current buffer. Add gofmt-before-save, which runs gofmt when in go-mode. This can be used with before-save-hook. Add to your .emacs: (add-hook 'before-save-hook 'gofmt-before-save) R=rsc, aclements, amdragon CC=golang-dev https://golang.org/cl/4276059
2011-03-23gob: remove another allocation.Rob Pike
The top level bytes.Buffer is always there and can be re-used. Rpc goes from 83 to 79 mallocs per round trip. R=rsc CC=golang-dev https://golang.org/cl/4271062
2011-03-24runtime: fix freebsd-amd64 (and part of 386)Andrew Gerrand
R=rsc CC=golang-dev https://golang.org/cl/4285063
2011-03-24syscall: StartProcess fixes for windowsAlex Brainman
- StartProcess will work with relative (to attr.Dir, not current directory) executable filenames - StartProcess will only work if executable filename points to the real file, it will not search for executable in the $PATH list and others (see CreateProcess manual for details) - StartProcess argv strings can contain any characters R=golang-dev, r CC=golang-dev https://golang.org/cl/4306041
2011-03-24doc: update contrib.html to be more enticingAndrew Gerrand
doc: refer to golang-dev instead of -nuts in contribute.html R=r, rsc CC=golang-dev https://golang.org/cl/4309043
2011-03-23testing: add -test.cpuprofile flagRuss Cox
R=r CC=golang-dev https://golang.org/cl/4272066
2011-03-235l/6l/8l: undo spadj cleanup at ARET for following instructions in the same ↵Luuk van Dijk
stackframe. 5l was already correct, clarified comment and added diags for unmaintained code. R=rsc CC=golang-dev https://golang.org/cl/4277070