- 25 Mar, 2011 15 commits
-
-
Ian Lance Taylor authored
bug016.go:11:8: error: negative shift count R=rsc, gri CC=golang-dev https://golang.org/cl/4312055
-
Peter Mundy authored
R=rsc CC=golang-dev https://golang.org/cl/4314042
-
Albert Strasheim authored
R=rsc CC=golang-dev https://golang.org/cl/4298060
-
Albert Strasheim authored
R=iant, rsc, brainman CC=golang-dev https://golang.org/cl/4306042
-
Rob Pike authored
R=rsc CC=golang-dev https://golang.org/cl/4312054
-
Ian Lance Taylor authored
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
-
Rob Pike authored
Fixes #1615. This time for sure. R=rsc, gri CC=golang-dev https://golang.org/cl/4275079
-
Russ Cox authored
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
-
Ian Lance Taylor authored
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
-
Ian Lance Taylor authored
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
-
Ian Lance Taylor authored
R=rsc CC=golang-dev https://golang.org/cl/4309049
-
Russ Cox authored
R=r CC=golang-dev https://golang.org/cl/4280060
-
Roger Pau Monné authored
Fixes #1639 R=golang-dev, bradfitzgo CC=golang-dev https://golang.org/cl/4291069
-
Russ Cox authored
R=adg, dfc, r CC=golang-dev https://golang.org/cl/4296042
-
Russ Cox authored
R=golang-dev CC=golang-dev https://golang.org/cl/4276077
-
- 24 Mar, 2011 7 commits
-
-
Devon H. O'Dell authored
R=golang-dev, adg CC=golang-dev https://golang.org/cl/4273102
-
Robert Griesemer authored
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
-
Sameer Ajmani authored
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
-
Rob Pike authored
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
-
Andrew Gerrand authored
R=rsc CC=golang-dev https://golang.org/cl/4285063
-
Alex Brainman authored
- 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
-
Andrew Gerrand authored
doc: refer to golang-dev instead of -nuts in contribute.html R=r, rsc CC=golang-dev https://golang.org/cl/4309043
-
- 23 Mar, 2011 18 commits
-
-
Russ Cox authored
R=r CC=golang-dev https://golang.org/cl/4272066
-
Luuk van Dijk authored
5l was already correct, clarified comment and added diags for unmaintained code. R=rsc CC=golang-dev https://golang.org/cl/4277070
-
Brad Fitzpatrick authored
rsc's earlier fix, plus tests. R=rsc CC=golang-dev https://golang.org/cl/4285062
-
Brad Fitzpatrick authored
R=rsc, r CC=golang-dev https://golang.org/cl/4287074
-
Albert Strasheim authored
R=rsc, iant CC=golang-dev https://golang.org/cl/4271060
-
Russ Cox authored
R=gri CC=golang-dev https://golang.org/cl/4295062
-
Russ Cox authored
R=r, bradfitzgo, r2 CC=golang-dev https://golang.org/cl/4313041
-
Brad Fitzpatrick authored
This patch adds a connection cache and keep-alive support to Transport, which is used by the HTTP client. It's also structured such that it's easy to add HTTP pipelining in the future. R=rsc, petar-m, bradfitzwork, r CC=golang-dev https://golang.org/cl/4272045
-
Russ Cox authored
R=golang-dev, gri CC=golang-dev https://golang.org/cl/4274079
-
Russ Cox authored
R=r CC=golang-dev https://golang.org/cl/4306043
-
Russ Cox authored
R=r CC=golang-dev https://golang.org/cl/4280061
-
Russ Cox authored
R=iant CC=golang-dev https://golang.org/cl/4291063
-
Russ Cox authored
R=r CC=golang-dev https://golang.org/cl/4273097
-
Russ Cox authored
Found by stkcheck after 6l, 8l bug fixes Luuk is about to submit. R=lvd CC=golang-dev https://golang.org/cl/4306047
-
Anthony Starks authored
R=golang-dev, adg CC=golang-dev https://golang.org/cl/4284058
-
David Symonds authored
R=adg, r CC=golang-dev https://golang.org/cl/4285059
-
Andrew Gerrand authored
Fixes #1631. R=golang-dev, dsymonds CC=golang-dev https://golang.org/cl/4303046
-
Ken Thompson authored
malloc rather than nelements + 1. R=rob CC=golang-dev https://golang.org/cl/4291064
-