]> Cypherpunks repositories - gostls13.git/log
gostls13.git
13 years agoruntime: fix select pass 3
Hector Chu [Mon, 18 Jul 2011 20:15:01 +0000 (16:15 -0400)]
runtime: fix select pass 3

Fixes #2075

R=rsc, ken, r
CC=golang-dev
https://golang.org/cl/4748045

13 years agoruntime: track running goroutine count
Russ Cox [Mon, 18 Jul 2011 19:50:55 +0000 (15:50 -0400)]
runtime: track running goroutine count

Used to use mcpu+msyscall but that's
problematic for packing into a single
atomic word.  The running goroutine count
(where running == Go code or syscall)
can be maintained separately, always
manipulated under lock.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/4767041

13 years agoruntime: add per-M caches for MemStats
Dmitriy Vyukov [Mon, 18 Jul 2011 18:56:22 +0000 (14:56 -0400)]
runtime: add per-M caches for MemStats
Avoid touching centralized state during
memory manager operations.

R=mirtchovski
CC=golang-dev, rsc
https://golang.org/cl/4766042

13 years agoruntime: add per-M caches for MemStats
Dmitriy Vyukov [Mon, 18 Jul 2011 18:52:57 +0000 (14:52 -0400)]
runtime: add per-M caches for MemStats
Avoid touching centralized state during
memory manager opreations.

R=rsc
CC=golang-dev
https://golang.org/cl/4766042

13 years agodebug/proc: Remove.
Ian Lance Taylor [Mon, 18 Jul 2011 16:55:09 +0000 (09:55 -0700)]
debug/proc: Remove.

The package was always GNU/Linux specific, and is no longer
used by anything now that exp/ogle has been removed.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4757049

13 years agosync: add fast paths to WaitGroup
Dmitriy Vyukov [Mon, 18 Jul 2011 16:35:55 +0000 (12:35 -0400)]
sync: add fast paths to WaitGroup
benchmark                                        old ns/op    new ns/op    delta
BenchmarkWaitGroupUncontended                        93.50        33.60  -64.06%
BenchmarkWaitGroupUncontended-2                      44.30        16.90  -61.85%
BenchmarkWaitGroupUncontended-4                      21.80         8.47  -61.15%
BenchmarkWaitGroupUncontended-8                      12.10         4.86  -59.83%
BenchmarkWaitGroupUncontended-16                      7.38         3.35  -54.61%
BenchmarkWaitGroupAddDone                            58.40        33.70  -42.29%
BenchmarkWaitGroupAddDone-2                         293.00        85.80  -70.72%
BenchmarkWaitGroupAddDone-4                         243.00        51.10  -78.97%
BenchmarkWaitGroupAddDone-8                         236.00        52.20  -77.88%
BenchmarkWaitGroupAddDone-16                        215.00        43.30  -79.86%
BenchmarkWaitGroupAddDoneWork                       826.00       794.00   -3.87%
BenchmarkWaitGroupAddDoneWork-2                     450.00       424.00   -5.78%
BenchmarkWaitGroupAddDoneWork-4                     277.00       220.00  -20.58%
BenchmarkWaitGroupAddDoneWork-8                     440.00       116.00  -73.64%
BenchmarkWaitGroupAddDoneWork-16                    569.00        66.50  -88.31%
BenchmarkWaitGroupWait                               29.00         8.04  -72.28%
BenchmarkWaitGroupWait-2                             74.10         4.15  -94.40%
BenchmarkWaitGroupWait-4                            117.00         2.30  -98.03%
BenchmarkWaitGroupWait-8                            111.00         1.31  -98.82%
BenchmarkWaitGroupWait-16                           104.00         1.27  -98.78%
BenchmarkWaitGroupWaitWork                          802.00       792.00   -1.25%
BenchmarkWaitGroupWaitWork-2                        411.00       401.00   -2.43%
BenchmarkWaitGroupWaitWork-4                        210.00       199.00   -5.24%
BenchmarkWaitGroupWaitWork-8                        206.00       105.00  -49.03%
BenchmarkWaitGroupWaitWork-16                       334.00        54.40  -83.71%

R=rsc
CC=golang-dev
https://golang.org/cl/4672050

13 years ago5l: assume Linux binary, not Plan 9
Russ Cox [Mon, 18 Jul 2011 16:30:10 +0000 (12:30 -0400)]
5l: assume Linux binary, not Plan 9

R=bradfitz
CC=golang-dev
https://golang.org/cl/4767042

13 years agohttp: let FileServer work when path doesn't begin with a slash
Brad Fitzpatrick [Mon, 18 Jul 2011 16:04:48 +0000 (09:04 -0700)]
http: let FileServer work when path doesn't begin with a slash

... as when it's over-stripped with StripPrefix.

R=golang-dev, andybalholm, rsc
CC=golang-dev
https://golang.org/cl/4759052

13 years agold: allow seek within write buffer
Russ Cox [Mon, 18 Jul 2011 16:04:09 +0000 (12:04 -0400)]
ld: allow seek within write buffer

Reduces number of write+seek's from 88516 to 2080
when linking godoc with 6l.

Thanks to Alex Brainman for pointing out the
many small writes.

R=golang-dev, r, alex.brainman, robert.hencke
CC=golang-dev
https://golang.org/cl/4743043

13 years agosyscall: Parse and encode SCM_RIGHTS and SCM_CREDENTIALS.
Albert Strasheim [Mon, 18 Jul 2011 15:21:59 +0000 (11:21 -0400)]
syscall: Parse and encode SCM_RIGHTS and SCM_CREDENTIALS.

R=rsc, agl, mikioh.mikioh
CC=golang-dev
https://golang.org/cl/4667066

13 years agoruntime: fix data race in Plan9 sysalloc
Dmitriy Vyukov [Mon, 18 Jul 2011 14:50:04 +0000 (10:50 -0400)]
runtime: fix data race in Plan9 sysalloc
Add mutex to protect brk limit.
Add mstats.sys update.

R=rsc
CC=golang-dev
https://golang.org/cl/4762045

13 years agocgo: add missing semicolon in generated struct
Brad Fitzpatrick [Mon, 18 Jul 2011 14:23:52 +0000 (07:23 -0700)]
cgo: add missing semicolon in generated struct

This affected certain signatures needing padding
like:

//export Foo
func Foo() (int, C.long) { ... }

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4745047

13 years agogc: fix silent sign truncation in pgen.c
Dave Cheney [Mon, 18 Jul 2011 11:09:28 +0000 (21:09 +1000)]
gc: fix silent sign truncation in pgen.c

Fixes #2076.

R=golang-dev, r, r, dsymonds, lucio.dere
CC=golang-dev
https://golang.org/cl/4744047

13 years agoexp/template: dig into empty interfaces so a struct (say) stored in an empty
Rob Pike [Mon, 18 Jul 2011 07:34:42 +0000 (17:34 +1000)]
exp/template: dig into empty interfaces so a struct (say) stored in an empty
interface field can be unpacked. We don't have type assertions here so we
must be forthright.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4757047

13 years agodoc: fix padding on h1 tags
Andrew Gerrand [Mon, 18 Jul 2011 07:30:00 +0000 (17:30 +1000)]
doc: fix padding on h1 tags

See /doc/codewalk/sharemem/ for an example of how it's broken.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4742044

13 years agopath/filepath: fixes for windows paths
Alex Brainman [Mon, 18 Jul 2011 07:08:12 +0000 (17:08 +1000)]
path/filepath: fixes for windows paths

- Clean and IsAbs to handle paths with drive letter properly.
- Clean to replace / with \.

R=golang-dev, adg
CC=golang-dev, mattn.jp
https://golang.org/cl/4758051

13 years agoruntime: fix panic for make(chan [0]byte).
Nigel Tao [Mon, 18 Jul 2011 05:54:11 +0000 (15:54 +1000)]
runtime: fix panic for make(chan [0]byte).

I suspect that this was introduced by
http://code.google.com/p/go/source/detail?r=6e4ee32fffd1

R=r
CC=golang-dev
https://golang.org/cl/4764045

13 years agohttp: drain the pipe output in TestHandlerPanic to avoid logging deadlock.
David Symonds [Mon, 18 Jul 2011 02:59:16 +0000 (12:59 +1000)]
http: drain the pipe output in TestHandlerPanic to avoid logging deadlock.

R=r
CC=golang-dev
https://golang.org/cl/4756047

13 years agofmt: fix a couple of documentation glitches.
Rob Pike [Mon, 18 Jul 2011 01:44:27 +0000 (11:44 +1000)]
fmt: fix a couple of documentation glitches.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4758050

13 years agoreflect: panic if Method index is out of range for a type.
Rob Pike [Mon, 18 Jul 2011 01:34:13 +0000 (11:34 +1000)]
reflect: panic if Method index is out of range for a type.
Makes the code agree with the documentation.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4759050

13 years ago5c: attempt to fix build by silencing warnings about unused variables.
Rob Pike [Mon, 18 Jul 2011 01:08:55 +0000 (11:08 +1000)]
5c: attempt to fix build by silencing warnings about unused variables.
The story is more complicated; this is just a bandaid.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4755047

13 years agogob: minor cleanup
Quan Yong Zhai [Mon, 18 Jul 2011 00:48:31 +0000 (10:48 +1000)]
gob: minor cleanup

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4754050

13 years agofmt: Scan(&int) was mishandling a lone zero.
Rob Pike [Mon, 18 Jul 2011 00:05:35 +0000 (10:05 +1000)]
fmt: Scan(&int) was mishandling a lone zero.
It took it as an octal base prefix but assumed more digits were coming.
Fixes #2077.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4764044

13 years agocmd/5l/Makefile: directory prefix nit, "../5l/" is not needed.
Lucio De Re [Sun, 17 Jul 2011 22:46:47 +0000 (08:46 +1000)]
cmd/5l/Makefile: directory prefix nit, "../5l/" is not needed.

R=golang-dev, r
CC=golang-dev, rsc
https://golang.org/cl/4755046

13 years agohttp: make tests quiet, fixing a test race
Brad Fitzpatrick [Sun, 17 Jul 2011 22:46:10 +0000 (15:46 -0700)]
http: make tests quiet, fixing a test race

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4754044

13 years agolog: more locking
Brad Fitzpatrick [Sun, 17 Jul 2011 22:46:00 +0000 (15:46 -0700)]
log: more locking

This didn't actually cause a bug, but looks wrong.

There was a lock but there was more shared mutable state not
guarded by it.

R=golang-dev, dsymonds, r
CC=golang-dev
https://golang.org/cl/4760047

13 years agoexp/templates: variable scope persists until "end".
Rob Pike [Sun, 17 Jul 2011 03:31:59 +0000 (13:31 +1000)]
exp/templates: variable scope persists until "end".
The previous CL doicumented and diagnosed the old situation.
This one changes it to something more traditional: any action
may declare a variable, and the block structure of scopes
applies only to control seequences.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4748047

13 years agoexp/template: allow declaration of variables only inside control structures.
Rob Pike [Sun, 17 Jul 2011 02:32:00 +0000 (12:32 +1000)]
exp/template: allow declaration of variables only inside control structures.
In simple pipelines the declaration has no scope.
Also document the scope.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4761044

13 years agohttp: fixes for sniffing
Russ Cox [Fri, 15 Jul 2011 16:07:37 +0000 (12:07 -0400)]
http: fixes for sniffing

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4753044

13 years ago6a, 6c, 6l: fix for Plan 9 build
Lucio De Re [Fri, 15 Jul 2011 15:58:39 +0000 (11:58 -0400)]
6a, 6c, 6l: fix for Plan 9 build

6a/a.h:
. Dropped <u.h> and <libc.h>.
. Made definition of EOF conditional.

6a/a.y:
. Added <u.h> and <libc.h>.

6a/lex.c:
. Added <u.h> and <libc.h>.
. Dropped <ctype.h> (now in <u.h>).

6c/gc.h:
. Added varargck pragma for "lD".

6c/swt.c:
. Dropped unused "thestring" argument in Bprint() calls.

6l/Makefile:
. Dropped unneeded directory prefix.

6l/l.h:
. Dropped unneeded directory prefix.
. Added varargck pragma for "I" and "i".

6l/obj.c:
. Dropped unneeded assignment.
. Dropped unreachable goto statement.

6l/pass.c:
. Dropped assignments flagged as unused.

6l/prof.c:
. Replaced "#if 0" with "#ifdef NOTDEF".

6l/span.c:
. Dropped unused incrementation.
. Added USED() as required.
. Dropped unreachable "return" statement.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4747044

13 years ago5a, 5c, 5l: fix for Plan 9 build
Lucio De Re [Fri, 15 Jul 2011 15:58:28 +0000 (11:58 -0400)]
5a, 5c, 5l: fix for Plan 9 build

5a/a.h:
. Removed <u.h> and <lib.h>.
. Made definition of EOF conditional.

5a/a.y:
. Added <u.h> and <lib.h>.

5a/lex.c:
. Added <u.h> and <lib.h>.
. Dropped <ctype.h> (now in <u.h>).

5c/peep.c:
. Removed unnecessary "return 0" statement.

5c/reg.c:
. Added compilation condition around unused code.

5c/swt.c:
. Removed unused "thestring" argument from Bprint() calls.

5l/asm.c:
. Added USED() statements as required.
. Adjusted a few format specifications.
. Added compilation condition around unused code.

5l/l.h:
. Dropped directory prefix from <../5l/5.out.h>.
. Added varargck pragma for "I" and "i".

5l/obj.c:
. Cascaded consecutive "if" statements.
. Dropped unnecessary incrementation and assignments.

5l/pass.c:
. Dropped unnecessary assignment.

5l/prof.c:
. #if 0 converted to #ifdef NOTDEF.

5l/span.c:
. Dropped unnecessary incrementation and assignments.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4752041

13 years ago8l: nits
Lucio De Re [Fri, 15 Jul 2011 15:51:59 +0000 (11:51 -0400)]
8l: nits

8l/Makefile:
. Dropped unnecessary prefix from "../8l/8.out.h"

8l/l.h:
. Dropped unnecessary prefix from "../8l/8.out.h"
. Dropped unused and inconsistent "I" vararg pragma.

R=golang-dev
CC=golang-dev, rsc
https://golang.org/cl/4754041

13 years agoruntime: native xadd for 386/amd64
Dmitriy Vyukov [Fri, 15 Jul 2011 15:27:16 +0000 (11:27 -0400)]
runtime: native xadd for 386/amd64

benchmark                          old ns/op    new ns/op    delta
BenchmarkSemaUncontended               37.40        34.10   -8.82%
BenchmarkSemaUncontended-2             18.90        17.70   -6.35%
BenchmarkSemaUncontended-4             11.90        10.90   -8.40%
BenchmarkSemaUncontended-8              6.26         5.19  -17.09%
BenchmarkSemaUncontended-16             4.39         3.91  -10.93%
BenchmarkSemaSyntNonblock              38.00        35.30   -7.11%
BenchmarkSemaSyntNonblock-2            83.00        46.70  -43.73%
BenchmarkSemaSyntNonblock-4           124.00       101.00  -18.55%
BenchmarkSemaSyntNonblock-8           124.00       116.00   -6.45%
BenchmarkSemaSyntNonblock-16          148.00       114.00  -22.97%

(on HP Z600 2 x Xeon E5620, 8 HT cores, 2.40GHz)

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4755041

13 years agogc: some enhancements to printing debug info.
Luuk van Dijk [Fri, 15 Jul 2011 14:00:05 +0000 (16:00 +0200)]
gc: some enhancements to printing debug info.

R=rsc
CC=golang-dev
https://golang.org/cl/4710046

13 years agohttp: sniffing placeholder
Russ Cox [Fri, 15 Jul 2011 05:01:49 +0000 (01:01 -0400)]
http: sniffing placeholder

R=dsymonds
CC=golang-dev
https://golang.org/cl/4746041

13 years agogo/build: less aggressive failure when GOROOT not found
Andrew Gerrand [Fri, 15 Jul 2011 03:45:22 +0000 (13:45 +1000)]
go/build: less aggressive failure when GOROOT not found

R=golang-dev, rsc, dsymonds
CC=golang-dev
https://golang.org/cl/4743041

13 years agoruntime: make TestSideEffectOrder work twice
Russ Cox [Fri, 15 Jul 2011 03:43:03 +0000 (23:43 -0400)]
runtime: make TestSideEffectOrder work twice

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4714045

13 years agocgi: make test less flaky
Brad Fitzpatrick [Fri, 15 Jul 2011 00:00:14 +0000 (17:00 -0700)]
cgi: make test less flaky

Previously, during the anti-zombie test, a
CGI process had to finish within ~625ms.
Now it gets ~5.6 seconds.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4741041

13 years agogo/printer: simplify internal state
Robert Griesemer [Thu, 14 Jul 2011 23:09:15 +0000 (16:09 -0700)]
go/printer: simplify internal state

No formatting changes.

R=rsc
CC=golang-dev
https://golang.org/cl/4735042

13 years agogo spec: (up-)date
Robert Griesemer [Thu, 14 Jul 2011 22:58:37 +0000 (15:58 -0700)]
go spec: (up-)date

R=rsc, bradfitz, r
CC=golang-dev
https://golang.org/cl/4738042

13 years agogo/printer: changed max. number of newlines from 3 to 2
Robert Griesemer [Thu, 14 Jul 2011 21:39:40 +0000 (14:39 -0700)]
go/printer: changed max. number of newlines from 3 to 2

manual changes in src/pkg/go/printer, src/cmd/gofix/signal_test.go
(cd src/cmd/gofix/testdata; gofmt -w *.in *.out)
(cd src/pkg/go/printer; gotest -update)
gofmt -w misc src

runs all tests

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4715041

13 years agogo: require { } around else block
Russ Cox [Thu, 14 Jul 2011 21:15:52 +0000 (17:15 -0400)]
go: require { } around else block

R=gri, ken, r
CC=golang-dev
https://golang.org/cl/4721044

13 years agojson: add omitempty struct tag option
Brad Fitzpatrick [Thu, 14 Jul 2011 18:54:55 +0000 (11:54 -0700)]
json: add omitempty struct tag option

Fixes #2032

R=rsc, dsymonds, r, r
CC=golang-dev
https://golang.org/cl/4709044

13 years agogodoc: fix build (add Makefile change)
Robert Griesemer [Thu, 14 Jul 2011 18:48:23 +0000 (11:48 -0700)]
godoc: fix build (add Makefile change)

R=bradfitz
CC=golang-dev
https://golang.org/cl/4733041

13 years agogodoc: support for file systems stored in .zip files
Robert Griesemer [Thu, 14 Jul 2011 18:34:53 +0000 (11:34 -0700)]
godoc: support for file systems stored in .zip files

Instead of serving files of the underlying OS file system,
a .zip file may be provided to godoc containing the files
to serve; for instance:

   godoc -http=:6060 -zip=go.zip

using a .zip file created from a clean tree as follows:

   zip -r go.zip $GOROOT

R=rsc
CC=golang-dev
https://golang.org/cl/4670053

13 years agogc: fix closure bug
Luuk van Dijk [Thu, 14 Jul 2011 16:13:39 +0000 (18:13 +0200)]
gc: fix closure bug

Fixes #2056.

R=rsc
CC=golang-dev
https://golang.org/cl/4709042

13 years agojson: escape < and > in any JSON string.
David Symonds [Thu, 14 Jul 2011 03:30:08 +0000 (13:30 +1000)]
json: escape < and > in any JSON string.

Angle brackets can trigger some browser sniffers, causing
some forms of JSON output to be interpreted as HTML.
Escaping angle brackets closes that security hole.

R=rsc
CC=golang-dev
https://golang.org/cl/4701047

13 years agoexp/template: allow range actions to declare a key and element variable.
Rob Pike [Thu, 14 Jul 2011 03:15:55 +0000 (13:15 +1000)]
exp/template: allow range actions to declare a key and element variable.
        {{range $key, $element := pipeline}}
This CL is smaller than it looks due to some rearrangement and renaming.

R=rsc, r
CC=golang-dev
https://golang.org/cl/4709047

13 years agomime: fix build
Russ Cox [Thu, 14 Jul 2011 03:04:12 +0000 (20:04 -0700)]
mime: fix build

R=bradfitz
CC=golang-dev
https://golang.org/cl/4695060

13 years agoexp/template: escape < and > in JS escaper.
David Symonds [Thu, 14 Jul 2011 02:02:58 +0000 (12:02 +1000)]
exp/template: escape < and > in JS escaper.

Angle brackets can trigger some browser sniffers,
causing some output to be interpreted as HTML.
Escaping angle brackets closes that security hole.

R=r
CC=golang-dev
https://golang.org/cl/4714044

13 years agoexp/template: include function name in error returned by function or method call.
Rob Pike [Thu, 14 Jul 2011 01:32:06 +0000 (11:32 +1000)]
exp/template: include function name in error returned by function or method call.

R=golang-dev, rsc, r
CC=golang-dev
https://golang.org/cl/4711049

13 years agoexp/template: simplify method and function calls by using the value's Method
Rob Pike [Thu, 14 Jul 2011 01:00:23 +0000 (11:00 +1000)]
exp/template: simplify method and function calls by using the value's Method
rather than the type's, so a method's invocation works the same as a function's.

R=golang-dev, rsc, r
CC=golang-dev
https://golang.org/cl/4704049

13 years agojson: allow using '$' and '-' as the struct field's tag
Mikio Hara [Thu, 14 Jul 2011 00:41:33 +0000 (17:41 -0700)]
json: allow using '$' and '-' as the struct field's tag

R=adg, rsc, bradfitz, mattn.jp, gustavo
CC=golang-dev
https://golang.org/cl/4625081

13 years agoreflect: trivial addition: Value.NumMethod.
Rob Pike [Thu, 14 Jul 2011 00:38:15 +0000 (10:38 +1000)]
reflect: trivial addition: Value.NumMethod.
Just an oversight it was missing.

R=rsc, dsymonds, bradfitz, r
CC=golang-dev
https://golang.org/cl/4695059

13 years agoos: Plan 9: add Process.Signal as a way to send notes.
Yuval Pavel Zholkover [Wed, 13 Jul 2011 23:29:37 +0000 (16:29 -0700)]
os: Plan 9: add Process.Signal as a way to send notes.
Move the Signal interface from exec_posix.go to exec.go.
Remove some unsused code from file_plan9.go.

R=fshahriar, rsc
CC=golang-dev
https://golang.org/cl/4683044

13 years agoruntime: correct FixedStack value (fixes windows build)
Alex Brainman [Wed, 13 Jul 2011 23:13:39 +0000 (09:13 +1000)]
runtime: correct FixedStack value (fixes windows build)

Fixes #2068.

R=rsc
CC=golang-dev
https://golang.org/cl/4705046

13 years agocc: fixes for Plan 9 build
Lucio De Re [Wed, 13 Jul 2011 23:01:29 +0000 (16:01 -0700)]
cc: fixes for Plan 9 build

<ctype.h> has been moved into <u.h>, specifically to be able to
drop it from these modules.

Will someone check platforms other than UBUNTU/386, please?

R=bsiegert, rsc
CC=golang-dev
https://golang.org/cl/4648078

13 years agofix build from e904b6784768 breakage
Brad Fitzpatrick [Wed, 13 Jul 2011 22:48:57 +0000 (15:48 -0700)]
fix build from e904b6784768 breakage

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4696047

13 years agosyscall: add Flock on Linux
Russ Cox [Wed, 13 Jul 2011 22:34:36 +0000 (15:34 -0700)]
syscall: add Flock on Linux

Fixes #2069.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4703048

13 years agosyscall: change missing from windows net fixes
Russ Cox [Wed, 13 Jul 2011 22:34:21 +0000 (15:34 -0700)]
syscall: change missing from windows net fixes

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/4701045

13 years agofilepath/path: fix a comment
Robert Griesemer [Wed, 13 Jul 2011 22:10:50 +0000 (15:10 -0700)]
filepath/path: fix a comment

R=bradfitz
CC=golang-dev
https://golang.org/cl/4704047

13 years agoexp/template: tweak behavior of booleans.
Rob Pike [Wed, 13 Jul 2011 21:59:04 +0000 (07:59 +1000)]
exp/template: tweak behavior of booleans.
Russ suggested this technique, making the "and" and "or" functions handier.
But it's hacky, and I can be talked out of it.

R=dsymonds, rsc
CC=golang-dev
https://golang.org/cl/4698044

13 years agoexp/template: allow niladic methods inside chained field references.
Rob Pike [Wed, 13 Jul 2011 21:52:07 +0000 (07:52 +1000)]
exp/template: allow niladic methods inside chained field references.
Also really fix the bug about dot vs. receivers.

R=rsc, r
CC=golang-dev
https://golang.org/cl/4705047

13 years agohttp: fix Content-Type of file extension.
Yasuhiro Matsumoto [Wed, 13 Jul 2011 21:39:33 +0000 (14:39 -0700)]
http: fix Content-Type of file extension.
ServeFile() pass empty string to serveFile(). serveFile() should get
file extension via joining root and filename.

R=bradfitz, rsc
CC=golang-dev
https://golang.org/cl/4654089

13 years agonet: windows/amd64 port
Wei Guangjing [Wed, 13 Jul 2011 19:44:21 +0000 (12:44 -0700)]
net: windows/amd64 port

R=rsc, alex.brainman
CC=golang-dev
https://golang.org/cl/3790044

13 years agodebug/elf: Read ELF Program headers.
Matthew Horsnell [Wed, 13 Jul 2011 19:34:29 +0000 (12:34 -0700)]
debug/elf: Read ELF Program headers.

NewFile has been fixed to read ELF Program headers into the structs.
Added test coverage.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4628062

13 years agoA+C: Matthew Horsnell (individual CLA)
Russ Cox [Wed, 13 Jul 2011 19:33:03 +0000 (12:33 -0700)]
A+C: Matthew Horsnell (individual CLA)

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/4700044

13 years agoruntime: stdcall_raw stack 16byte align for Win64
Wei Guangjing [Wed, 13 Jul 2011 18:44:44 +0000 (11:44 -0700)]
runtime: stdcall_raw stack 16byte align for Win64

R=alex.brainman, rsc
CC=golang-dev
https://golang.org/cl/4681049

13 years agoruntime: fix data race during Itab hash update/lookup
Dmitriy Vyukov [Wed, 13 Jul 2011 18:22:41 +0000 (11:22 -0700)]
runtime: fix data race during Itab hash update/lookup
The data race is on newly published Itab nodes, which are
both unsafely published and unsafely acquired. It can
break on IA-32/Intel64 due to compiler optimizations
(most likely not an issue as of now) and on ARM due to
hardware memory access reorderings.

R=rsc
CC=golang-dev
https://golang.org/cl/4673055

13 years agodocs: fix wrong it's -> its
Brad Fitzpatrick [Wed, 13 Jul 2011 17:54:51 +0000 (10:54 -0700)]
docs: fix wrong it's -> its

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/4702046

13 years agoexp/regexp/syntax: add Prog.NumCap
Sam Thorogood [Wed, 13 Jul 2011 17:15:00 +0000 (10:15 -0700)]
exp/regexp/syntax: add Prog.NumCap

R=rsc, r
CC=golang-dev
https://golang.org/cl/4662083

13 years agoexp/eval, exp/ogle: remove packages eval and ogle
Robert Griesemer [Wed, 13 Jul 2011 16:40:53 +0000 (09:40 -0700)]
exp/eval, exp/ogle: remove packages eval and ogle

An externally maintained version of exp/eval can
be found at: https://bitbucket.org/binet/go-eval/ .

R=golang-dev, r, rsc
CC=golang-dev
https://golang.org/cl/4695047

13 years agogob: register more slice types
Bobby Powers [Wed, 13 Jul 2011 07:12:17 +0000 (17:12 +1000)]
gob: register more slice types

Without explicitly registering slice types, gob fails to encode
map[string]interface{} instances where the value is a slice,
failing with a message such as:

  gob: type not registered for interface: []string

Fixes #2065.

R=golang-dev, gri, r
CC=golang-dev
https://golang.org/cl/4672056

13 years agohtml: update section references in comments to the latest HTML5 spec.
Nigel Tao [Wed, 13 Jul 2011 06:53:02 +0000 (16:53 +1000)]
html: update section references in comments to the latest HTML5 spec.

R=r
CC=golang-dev
https://golang.org/cl/4699048

13 years agoC+A: Bobby Powers <bobbypowers@gmail.com>
Rob Pike [Wed, 13 Jul 2011 06:10:12 +0000 (16:10 +1000)]
C+A: Bobby Powers <bobbypowers@gmail.com>

R=golang-dev, dsymonds
CC=bobbypowers, golang-dev
https://golang.org/cl/4695050

13 years agoexp/template: doc and API changes suggested by rsc.
Rob Pike [Wed, 13 Jul 2011 05:58:31 +0000 (15:58 +1000)]
exp/template: doc and API changes suggested by rsc.
- template invocation is by string constant only.
- NewSet is gone.
- no global Funcs
- writer is now first arg to Execute

R=rsc, r
CC=golang-dev
https://golang.org/cl/4700043

13 years agoexp/template: add Set.AddSet and Set.Union.
Rob Pike [Wed, 13 Jul 2011 03:50:05 +0000 (13:50 +1000)]
exp/template: add Set.AddSet and Set.Union.
Document and test that Set.Parse can be called multiple times.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4703044

13 years agoexp/template: allow variables as template names.
Rob Pike [Wed, 13 Jul 2011 03:21:18 +0000 (13:21 +1000)]
exp/template: allow variables as template names.
Just an oversight it wasn't already there.
Thanks to islandberry@live.com for pointing out the omission.

R=golang-dev, dsymonds
CC=golang-dev, islandberry
https://golang.org/cl/4703043

13 years agogo_tutorial: change the way it's generated.
Rob Pike [Wed, 13 Jul 2011 03:20:05 +0000 (13:20 +1000)]
go_tutorial: change the way it's generated.
No longer do we generate HTML from it; instead the input
file is already in HTML but has template invocations to
extract programs from other files.
Delete htmlgen, which is no longer needed.
Add tmpltohtml, which runs the templating code.

R=golang-dev, dsymonds, adg
CC=golang-dev
https://golang.org/cl/4699041

13 years ago5l, 6l, 8l: Add a PT_LOAD PHDR entry for the PHDR.
David Anderson [Wed, 13 Jul 2011 00:49:55 +0000 (17:49 -0700)]
5l, 6l, 8l: Add a PT_LOAD PHDR entry for the PHDR.

Per the TIS ELF spec, if a PHDR entry is present in the
program header table, it must be part of the memory image of
the program. Failure to do this makes elflint complain, and
causes some tools that manipulate ELF to crash.

R=iant, rsc
CC=dave, golang-dev
https://golang.org/cl/4650067

13 years agocsv: fix spelling errors in comments
Robert Griesemer [Wed, 13 Jul 2011 00:45:29 +0000 (17:45 -0700)]
csv: fix spelling errors in comments

Fixes #2066.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/4699045

13 years agotag release.r58.1: adds OS X Lion support
Russ Cox [Wed, 13 Jul 2011 00:44:59 +0000 (17:44 -0700)]
tag release.r58.1: adds OS X Lion support

R=adg, dsymonds
CC=golang-dev
https://golang.org/cl/4702043

13 years agoruntime: replace runtime.mcpy with runtime.memmove
Quan Yong Zhai [Wed, 13 Jul 2011 00:30:40 +0000 (17:30 -0700)]
runtime: replace runtime.mcpy with runtime.memmove
faster string operations, and more

tested on linux/386

runtime_test.BenchmarkSliceToString                    642          532  -17.13%
runtime_test.BenchmarkStringToSlice                    636          528  -16.98%
runtime_test.BenchmarkConcatString                    1109          897  -19.12%

R=r, iant, rsc
CC=golang-dev
https://golang.org/cl/4674042

13 years agodoc: gofix io2010 demo programs
Andrew Gerrand [Tue, 12 Jul 2011 23:40:49 +0000 (09:40 +1000)]
doc: gofix io2010 demo programs

R=golang-dev, gri, r, agl
CC=golang-dev
https://golang.org/cl/4696046

13 years agodebug/pe: fixes ImportedSymbols for Win64.
Wei Guangjing [Tue, 12 Jul 2011 18:29:38 +0000 (11:29 -0700)]
debug/pe: fixes ImportedSymbols for Win64.

R=golang-dev, alex.brainman
CC=golang-dev
https://golang.org/cl/4639086

13 years agogc: make size of struct{} and [0]byte 0 bytes
Robert Hencke [Tue, 12 Jul 2011 18:12:06 +0000 (11:12 -0700)]
gc: make size of struct{} and [0]byte 0 bytes

Fixes #1949.

R=iant, rsc
CC=golang-dev
https://golang.org/cl/4634124

13 years agoruntime: eliminate false sharing during stack growth
Dmitriy Vyukov [Tue, 12 Jul 2011 17:56:21 +0000 (10:56 -0700)]
runtime: eliminate false sharing during stack growth
Remove static variable from runtimeĀ·oldstack().
Benchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)
are as follows (with CL 4657091 applied):
benchmark                                        old ns/op    new ns/op    delta
BenchmarkStackGrowth                               1183.00      1180.00   -0.25%
BenchmarkStackGrowth-2                             1249.00      1211.00   -3.04%
BenchmarkStackGrowth-4                              954.00       805.00  -15.62%
BenchmarkStackGrowth-8                              701.00       683.00   -2.57%
BenchmarkStackGrowth-16                             465.00       415.00  -10.75%

R=rsc
CC=golang-dev
https://golang.org/cl/4693042

13 years agoruntime: fix comment (lost in shuffle)
Russ Cox [Tue, 12 Jul 2011 16:26:05 +0000 (09:26 -0700)]
runtime: fix comment (lost in shuffle)

TBR=dvyukov
CC=golang-dev
https://golang.org/cl/4710041

13 years agoruntime: eliminate contention during stack allocation
Dmitriy Vyukov [Tue, 12 Jul 2011 16:24:32 +0000 (09:24 -0700)]
runtime: eliminate contention during stack allocation
Standard-sized stack frames use plain malloc/free
instead of centralized lock-protected FixAlloc.
Benchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)
are as follows:
benchmark                                        old ns/op    new ns/op    delta
BenchmarkStackGrowth                               1045.00       949.00   -9.19%
BenchmarkStackGrowth-2                             3450.00       800.00  -76.81%
BenchmarkStackGrowth-4                             5076.00       513.00  -89.89%
BenchmarkStackGrowth-8                             7805.00       471.00  -93.97%
BenchmarkStackGrowth-16                           11751.00       321.00  -97.27%

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4657091

13 years agosync: improve RWMutex performance
Dmitriy Vyukov [Tue, 12 Jul 2011 16:24:21 +0000 (09:24 -0700)]
sync: improve RWMutex performance
The new implementation features wait-free
fast path for readers which significantly improves
performance/scalability on read-mostly workloads.
Benchmark results on HP Z600 (2 x Xeon E5620, 8 HT cores, 2.40GHz)
are as follows:
benchmark                              old ns/op    new ns/op    delta
BenchmarkRWMutexUncontended               179.00        96.60  -46.03%
BenchmarkRWMutexUncontended-2              89.10        49.10  -44.89%
BenchmarkRWMutexUncontended-4              44.70        24.70  -44.74%
BenchmarkRWMutexUncontended-8              23.30        12.90  -44.64%
BenchmarkRWMutexUncontended-16             16.80         8.75  -47.92%
BenchmarkRWMutexWrite100                   79.60        26.80  -66.33%
BenchmarkRWMutexWrite100-2                305.00        33.00  -89.18%
BenchmarkRWMutexWrite100-4                245.00       113.00  -53.88%
BenchmarkRWMutexWrite100-8                330.00       147.00  -55.45%
BenchmarkRWMutexWrite100-16               371.00       152.00  -59.03%
BenchmarkRWMutexWrite10                    78.30        29.80  -61.94%
BenchmarkRWMutexWrite10-2                 348.00       165.00  -52.59%
BenchmarkRWMutexWrite10-4                 447.00       199.00  -55.48%
BenchmarkRWMutexWrite10-8                 564.00       180.00  -68.09%
BenchmarkRWMutexWrite10-16                492.00       192.00  -60.98%
BenchmarkRWMutexWorkWrite100             1077.00      1037.00   -3.71%
BenchmarkRWMutexWorkWrite100-2            659.00       596.00   -9.56%
BenchmarkRWMutexWorkWrite100-4            509.00       361.00  -29.08%
BenchmarkRWMutexWorkWrite100-8            603.00       351.00  -41.79%
BenchmarkRWMutexWorkWrite100-16           750.00       607.00  -19.07%
BenchmarkRWMutexWorkWrite10               990.00       951.00   -3.94%
BenchmarkRWMutexWorkWrite10-2            1119.00      1070.00   -4.38%
BenchmarkRWMutexWorkWrite10-4            1300.00      1199.00   -7.77%
BenchmarkRWMutexWorkWrite10-8            1424.00      1291.00   -9.34%
BenchmarkRWMutexWorkWrite10-16           1981.00      1786.00   -9.84%

R=rsc
CC=golang-dev
https://golang.org/cl/4671051

13 years agoeffective go: tweak the words about semicolons, parens in control structures,
Rob Pike [Tue, 12 Jul 2011 13:45:10 +0000 (23:45 +1000)]
effective go: tweak the words about semicolons, parens in control structures,
and make and new.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4699043

13 years agohash/crc32: add SSE4.2 support
Adam Langley [Tue, 12 Jul 2011 13:29:24 +0000 (09:29 -0400)]
hash/crc32: add SSE4.2 support

Using the CRC32 instruction speeds up the Castagnoli computation by
about 20x on a modern Intel CPU.

R=rsc
CC=golang-dev
https://golang.org/cl/4650072

13 years agogo/build: include processing of .c files for cgo packages
Alex Brainman [Tue, 12 Jul 2011 07:27:07 +0000 (17:27 +1000)]
go/build: include processing of .c files for cgo packages

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/4696041

13 years agoimage: remove superfluous if condition.
Nigel Tao [Tue, 12 Jul 2011 07:02:55 +0000 (17:02 +1000)]
image: remove superfluous if condition.

DrawMask already returns early if r.Empty().

R=r
CC=golang-dev
https://golang.org/cl/4703041

13 years agoimage: re-organize draw.go.
Nigel Tao [Tue, 12 Jul 2011 06:56:29 +0000 (16:56 +1000)]
image: re-organize draw.go.

There are no behavioral changes, only some copy-and-pastes.

Before, drawFillOver was next to drawCopyOver.

After, drawFillOver is next to drawFillSrc, which is more similar to
drawFillOver than drawCopyOver is.

Similarly, drawCopyOver is now next to drawCopySrc, etc.

R=r
CC=golang-dev
https://golang.org/cl/4695045

13 years agoimage: change Pix from []FooColor to []uint8.
Nigel Tao [Tue, 12 Jul 2011 06:39:38 +0000 (16:39 +1000)]
image: change Pix from []FooColor to []uint8.

Some benchmark numbers below. The image/draw fast-paths show dramatic
improvement, the generic slow-paths show a smaller slow-down.

BEFORE
png.BenchmarkEncodePaletted      200       8203800 ns/op      37.45 MB/s
png.BenchmarkEncodeRGBOpaque         100      26940440 ns/op      45.61 MB/s
png.BenchmarkEncodeRGBA       20      73821000 ns/op      16.65 MB/s
jpeg.BenchmarkEncodeRGBOpaque         50      35598640 ns/op      34.52 MB/s
draw.BenchmarkFillOver      500    4024226 ns/op
draw.BenchmarkFillSrc    10000     152736 ns/op
draw.BenchmarkCopyOver      500    3452824 ns/op
draw.BenchmarkCopySrc    50000      73218 ns/op
draw.BenchmarkNRGBAOver      500    3941234 ns/op
draw.BenchmarkNRGBASrc     1000    2484400 ns/op
draw.BenchmarkYCbCr     1000    2609005 ns/op
draw.BenchmarkGlyphOver     2000    1169575 ns/op
draw.BenchmarkRGBA      200    9031390 ns/op
draw.BenchmarkGenericOver       50   34636620 ns/op
draw.BenchmarkGenericMaskOver      100   16561150 ns/op
draw.BenchmarkGenericSrc      100   13873760 ns/op
draw.BenchmarkGenericMaskSrc      100   25198860 ns/op

AFTER
png.BenchmarkEncodePaletted      200       8206600 ns/op      37.43 MB/s
png.BenchmarkEncodeRGBOpaque         100      26129530 ns/op      47.03 MB/s
png.BenchmarkEncodeRGBA       20      75776750 ns/op      16.22 MB/s
jpeg.BenchmarkEncodeRGBOpaque         50      37192940 ns/op      33.04 MB/s
draw.BenchmarkFillOver      500    3008134 ns/op
draw.BenchmarkFillSrc    10000     154214 ns/op
draw.BenchmarkCopyOver     1000    2169988 ns/op
draw.BenchmarkCopySrc    50000      73095 ns/op
draw.BenchmarkNRGBAOver     1000    2491079 ns/op
draw.BenchmarkNRGBASrc     2000    1361244 ns/op
draw.BenchmarkYCbCr     1000    2554269 ns/op
draw.BenchmarkGlyphOver     2000    1042225 ns/op
draw.BenchmarkRGBA      100   10233340 ns/op
draw.BenchmarkGenericOver       50   38421560 ns/op
draw.BenchmarkGenericMaskOver      100   17521190 ns/op
draw.BenchmarkGenericSrc      100   16351200 ns/op
draw.BenchmarkGenericMaskSrc      100   26538190 ns/op

R=r
CC=golang-dev
https://golang.org/cl/4675076

13 years agoimage/draw: add benchmarks.
Nigel Tao [Tue, 12 Jul 2011 06:17:02 +0000 (16:17 +1000)]
image/draw: add benchmarks.

R=r
CC=golang-dev
https://golang.org/cl/4695043

13 years agodoc: document r58.1
Russ Cox [Tue, 12 Jul 2011 05:39:09 +0000 (01:39 -0400)]
doc: document r58.1

R=adg, dsymonds
CC=golang-dev
https://golang.org/cl/4700041

13 years agoruntime: eliminate false sharing on runtime.goidgen
Dmitriy Vyukov [Tue, 12 Jul 2011 05:25:14 +0000 (01:25 -0400)]
runtime: eliminate false sharing on runtime.goidgen
runtime.goidgen can be quite frequently modified and
shares cache line with the following variables,
it leads to false sharing.
50c6b0 b nfname
50c6b4 b nfunc
50c6b8 b nfunc$17
50c6bc b nhist$17
50c6c0 B runtime.checking
50c6c4 B runtime.gcwaiting
50c6c8 B runtime.goidgen
50c6cc B runtime.gomaxprocs
50c6d0 B runtime.panicking
50c6d4 B strconv.IntSize
50c6d8 B src/pkg/runtime/_xtest_.ss
50c6e0 B src/pkg/runtime/_xtest_.stop
50c6e8 b addrfree
50c6f0 b addrmem
50c6f8 b argv

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4673054

13 years agoruntime: eliminate false sharing on random number generators
Dmitriy Vyukov [Tue, 12 Jul 2011 05:23:58 +0000 (01:23 -0400)]
runtime: eliminate false sharing on random number generators
Use machine-local random number generator instead of
racy global ones.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/4674049