]> Cypherpunks repositories - gostls13.git/log
gostls13.git
11 years agocmd/gc: correct liveness for fat variables
Russ Cox [Sat, 15 Feb 2014 15:58:55 +0000 (10:58 -0500)]
cmd/gc: correct liveness for fat variables

The VARDEF placement must be before the initialization
but after any final use. If you have something like s = ... using s ...
the rhs must be evaluated, then the VARDEF, then the lhs
assigned.

There is a large comment in pgen.c on gvardef explaining
this in more detail.

This CL also includes Ian's suggestions from earlier CLs,
namely commenting the use of mode in link.h and fixing
the precedence of the ~r check in dcl.c.

This CL enables the check that if liveness analysis decides
a variable is live on entry to the function, that variable must
be a function parameter (not a result, and not a local variable).
If this check fails, it indicates a bug in the liveness analysis or
in the generated code being analyzed.

The race detector generates invalid code for append(x, y...).
The code declares a temporary t and then uses cap(t) before
initializing t. The new liveness check catches this bug and
stops the compiler from writing out the buggy code.
Consequently, this CL disables the race detector tests in
run.bash until the race detector bug can be fixed
(golang.org/issue/7334).

Except for the race detector bug, the liveness analysis check
does not detect any problems (this CL and the previous CLs
fixed all the detected problems).

The net test still fails with GOGC=0 but the rest of the tests
now pass or time out (because GOGC=0 is so slow).

TBR=iant
CC=golang-codereviews
https://golang.org/cl/64170043

11 years agocmd/gc: do not lower copy to a value node in go/defer.
Rémy Oudompheng [Sat, 15 Feb 2014 15:39:04 +0000 (16:39 +0100)]
cmd/gc: do not lower copy to a value node in go/defer.

The existing tests issue4463.go and issue4654.go had failures at
typechecking and did not test walking the AST.

Fixes #7272.

LGTM=khr
R=khr, rsc, iant
CC=golang-codereviews
https://golang.org/cl/60550044

11 years agotext/template: don't panic when function call evaluates a nil pointer
Rob Pike [Sat, 15 Feb 2014 00:26:47 +0000 (16:26 -0800)]
text/template: don't panic when function call evaluates a nil pointer
Catch the error instead and return it to the user. Before this fix,
the template package panicked. Now you get:
        template: bug11:1:14: executing "bug11" at <.PS>: dereference of nil pointer of type *string
Extended example at http://play.golang.org/p/uP6pCW3qKT

Fixes #7333.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/64150043

11 years agocodereview: fix for Mercurial 2.9
Anthony Martin [Fri, 14 Feb 2014 23:56:58 +0000 (15:56 -0800)]
codereview: fix for Mercurial 2.9

The branchtags method was removed but we should've
been using branchmap all along.

http://selenic.com/hg/rev/4274eda143cb

LGTM=franciscossouza, r
R=golang-codereviews, franciscossouza, r
CC=golang-codereviews
https://golang.org/cl/57500045

11 years agocompress/bzip2: support superfluous Huffman levels.
Adam Langley [Fri, 14 Feb 2014 22:17:19 +0000 (17:17 -0500)]
compress/bzip2: support superfluous Huffman levels.

These should never be found in a bzip2 file but it does appear that
there's a buggy encoder that is producing them. Since the official
bzip2 handles this case, this change makes the Go code do likewise.

With this change, the code produces the same output as the official
bzip2 code on the invalid example given in the bug.

Fixes #7279.

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/64010043

11 years agoruntime: fix "invalid address in sys call" on Plan 9
David du Colombier [Fri, 14 Feb 2014 21:27:47 +0000 (22:27 +0100)]
runtime: fix "invalid address in sys call" on Plan 9

Rfork is not splitting the stack when creating a new thread,
so the parent and child are executing on the same stack.
However, if the parent returns and keeps executing before
the child can read the arguments from the parent stack,
the child will not see the right arguments. The solution
is to load the needed pieces from the parent stack into
register before INT $64.

Thanks to Russ Cox for the explanation.

LGTM=rsc
R=rsc
CC=ality, golang-codereviews
https://golang.org/cl/64140043

11 years agomath/big: Add text marshaller interface to Int
Michael T. Jones [Fri, 14 Feb 2014 20:57:03 +0000 (12:57 -0800)]
math/big: Add text marshaller interface to Int

Fixes #7329

LGTM=gri
R=gri, bradfitz, mtj
CC=golang-codereviews
https://golang.org/cl/63710043

11 years agocmd/go: remove cross compiling restriction on cgo
Elias Naur [Fri, 14 Feb 2014 19:36:52 +0000 (11:36 -0800)]
cmd/go: remove cross compiling restriction on cgo

A previous CL added support for cross compiling with cgo, but
missed the GOOS check in cmd/go. Remove it.

Update #4714

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/57210046

11 years agoruntime: if traceback sees a breakpoint, don't change the PC
Ian Lance Taylor [Fri, 14 Feb 2014 19:06:53 +0000 (11:06 -0800)]
runtime: if traceback sees a breakpoint, don't change the PC

Changing the PC confuses gdb, because execution does not
continue where gdb expects it.  Not changing the PC has the
potential to confuse a stack dump, but when running under gdb
it seems better to confuse a stack dump than to confuse gdb.

Fixes #6776.

LGTM=rsc
R=golang-codereviews, dvyukov, rsc
CC=golang-codereviews
https://golang.org/cl/49580044

11 years agonet: handle IP interface stack correctly on linux
Mikio Hara [Fri, 14 Feb 2014 16:07:51 +0000 (01:07 +0900)]
net: handle IP interface stack correctly on linux

A configuration like the following:

7: tun6rd: <NOARP,UP,LOWER_UP> mtu 1280
        link/sit 10.11.12.13 brd 0.0.0.0
        inet 1.2.3.4/24 scope global tun6rd
        inet6 2014:1001:a0b:c0d::1/32 scope global
        inet6 ::10.11.12.13/128 scope global
9: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1496
        link/ppp
        inet 192.168.101.234 peer 192.168.102.234/32 scope global ppp0
        inet 10.20.30.40/24 scope global ppp0
        inet6 2014:1002::1/64 scope global
11: tun0@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1480
        link/ipip 192.168.202.34 peer 192.168.202.69
        inet 192.168.10.1/24 scope global tunnel0
        inet6 2014:1003::1/64 scope global

will be handled like below.

"tun6rd": flags "up", ifindex 7, mtu 1280
        hardware address ""
        interface address "1.2.3.4/24"
        interface address "2014:1001:a0b:c0d::1/32"
        interface address "::a0b:c0d/128"
"ppp0": flags "up|pointtopoint|multicast", ifindex 9, mtu 1496
        hardware address ""
        interface address "192.168.101.234/32"
        interface address "10.20.30.40/24"
        interface address "2014:1002::1/64"
"tun0": flags "up|pointtopoint", ifindex 11, mtu 1480
        hardware address ""
        interface address "192.168.10.1/24"
        interface address "2014:1003::1/64"

Fixes #6433.
Update #4839

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/57700043

11 years agosyscall: make use of include/linux when generating system constants
Mikio Hara [Fri, 14 Feb 2014 15:47:28 +0000 (00:47 +0900)]
syscall: make use of include/linux when generating system constants

On Linux include/net directory is just to help porting applications
from BSDs and files under net keep less information than include/linux.
Making use of files under include/linux instead of include/net prevents
lack of information.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/63930043

11 years agoruntime: remove misleading message during crash
Dmitriy Vyukov [Fri, 14 Feb 2014 09:24:48 +0000 (13:24 +0400)]
runtime: remove misleading message during crash
The following checkdead message is false positive:

$ go test -race -c runtime
$ ./runtime.test -test.cpu=2 -test.run=TestSmhasherWindowed -test.v
=== RUN TestSmhasherWindowed-2
checkdead: find g 18 in status 1
SIGABRT: abort
PC=0x42bff1

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews, iant, khr
https://golang.org/cl/59490046

11 years agoruntime: fix mem profile when both large and small objects are allocated at the same...
Dmitriy Vyukov [Fri, 14 Feb 2014 09:20:41 +0000 (13:20 +0400)]
runtime: fix mem profile when both large and small objects are allocated at the same stack
Currently small and large (size>rate) objects are merged into a single entry.
But rate adjusting is required only for small objects.
As a result pprof either incorrectly adjusts large objects
or does not adjust small objects.
With this change objects of different sizes are stored in different buckets.

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/59220049

11 years agocmd/gc: fix build for 'default unsigned char' compilers
Russ Cox [Fri, 14 Feb 2014 05:43:43 +0000 (00:43 -0500)]
cmd/gc: fix build for 'default unsigned char' compilers

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63680045

11 years agocmd/go: hide the "TERM" environment variable from "go env"
Shenghou Ma [Fri, 14 Feb 2014 05:38:55 +0000 (00:38 -0500)]
cmd/go: hide the "TERM" environment variable from "go env"
It's implementation detail.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/63690043

11 years agocmd/gc: correct liveness for various non-returning functions
Russ Cox [Fri, 14 Feb 2014 05:38:24 +0000 (00:38 -0500)]
cmd/gc: correct liveness for various non-returning functions

When the liveness code doesn't know a function doesn't return
(but the generated code understands that), the liveness analysis
invents a control flow edge that is not really there, which can cause
variables to seem spuriously live. This is particularly bad when the
variables are uninitialized.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63720043

11 years agoruntime: fix windows cpu profiler
Dmitriy Vyukov [Fri, 14 Feb 2014 05:20:51 +0000 (09:20 +0400)]
runtime: fix windows cpu profiler
Currently it periodically fails with the following message.
The immediate cause is the wrong base register when obtaining g
in sys_windows_amd64/386.s.
But there are several secondary problems as well.

runtime: unknown pc 0x0 after stack split
panic: invalid memory address or nil pointer dereference
fatal error: panic during malloc
[signal 0xc0000005 code=0x0 addr=0x60 pc=0x42267a]

runtime stack:
runtime.panic(0x7914c0, 0xc862af)
        c:/src/perfer/work/windows-amd64-a15f344a9efa/go/src/pkg/runtime/panic.c:217 +0x2c
runtime: unexpected return pc for runtime.externalthreadhandler called from 0x0

R=rsc, alex.brainman
CC=golang-codereviews
https://golang.org/cl/63310043

11 years agocmd/gc: correct liveness for func ending in panic
Russ Cox [Fri, 14 Feb 2014 04:56:53 +0000 (23:56 -0500)]
cmd/gc: correct liveness for func ending in panic

The registerization code needs the function to end in a RET,
even if that RET is actually unreachable.

The liveness code needs to avoid such unreachable RETs.
It had a special case for final RET after JMP, but no case
for final RET after UNDEF. Instead of expanding the special
cases, let fixjmp - which already knows what is and is not
reachable definitively - mark the unreachable RET so that
the liveness code can identify it.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63680043

11 years agocmd/gc: correct liveness for wrappers containing tail jumps
Russ Cox [Fri, 14 Feb 2014 04:33:20 +0000 (23:33 -0500)]
cmd/gc: correct liveness for wrappers containing tail jumps

A normal RET is treated as using the return values,
but a tail jump RET does not - it is jumping to the
function that is going to fill in the return values.
If a tail jump RET is recorded as using the return values,
since nothing initializes them they will be marked as
live on entry to the function, which is clearly wrong.

Found and tested by the new code in plive.c that looks
for variables that are incorrectly live on entry.
That code is disabled for now because there are other
cases remaining to be fixed. But once it is enabled,
test/live1.go becomes a real test of this CL.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63570045

11 years agocmd/gc: handle variable initialization by block move in liveness
Russ Cox [Fri, 14 Feb 2014 03:45:16 +0000 (22:45 -0500)]
cmd/gc: handle variable initialization by block move in liveness

Any initialization of a variable by a block copy or block zeroing
or by multiple assignments (componentwise copying or zeroing
of a multiword variable) needs to emit a VARDEF. These cases were not.

Fixes #7205.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63650044

11 years agocmd/5g, cmd/8g: fix build
Russ Cox [Fri, 14 Feb 2014 03:30:35 +0000 (22:30 -0500)]
cmd/5g, cmd/8g: fix build

The test added in CL 63630043 fails on 5g and 8g because they
were not emitting the VARDEF instruction when clearing a fat
value by clearing the components. 6g had the call in the right place.

Hooray tests.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63660043

11 years agosyscall: fix system calls with misaligned arguments on freebsd/arm
Mikio Hara [Fri, 14 Feb 2014 03:22:13 +0000 (12:22 +0900)]
syscall: fix system calls with misaligned arguments on freebsd/arm

This CL enables the current tree to work with FreeBSD 10-STABLE
on ARM EABI platforms, though there are still a few test fails.

Also updates documentation.

LGTM=iant
R=iant, dave
CC=golang-codereviews
https://golang.org/cl/61060044

11 years agonet: disable TestDNSThreadLimit even in non-short mode by default
Mikio Hara [Fri, 14 Feb 2014 03:20:21 +0000 (12:20 +0900)]
net: disable TestDNSThreadLimit even in non-short mode by default

TestDNSThreadLimit creates tons of DNS queries and it occasionally
causes an unintentional traffic jam and/or crash of some virtual
machine software, especially its builtin networking stuff.

We can run TestDNSThreadLimit with -dnsflood flag instead.

LGTM=dave, rsc
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/63600043

11 years agocmd/gc: rename AFATVARDEF to AVARDEF
Russ Cox [Fri, 14 Feb 2014 03:17:22 +0000 (22:17 -0500)]
cmd/gc: rename AFATVARDEF to AVARDEF

The "fat" referred to being used for multiword values only.
We're going to use it for non-fat values sometimes too.

No change other than the renaming.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63650043

11 years agocmd/gc: fix liveness for addressed results
Russ Cox [Fri, 14 Feb 2014 02:11:50 +0000 (21:11 -0500)]
cmd/gc: fix liveness for addressed results

Was spuriously marking results live on entry to function.

TBR=iant
CC=golang-codereviews
https://golang.org/cl/63640043

11 years agocmd/gc: rephrase the invalid indexing operation error message
Shenghou Ma [Fri, 14 Feb 2014 02:01:33 +0000 (21:01 -0500)]
cmd/gc: rephrase the invalid indexing operation error message
Old:
prog.go:9: invalid operation: this[i] (index of type int)
New:
prog.go:9: invalid operation: this[i] (type int does not support indexing)

LGTM=r
R=golang-codereviews, r
CC=golang-codereviews
https://golang.org/cl/52540043

11 years agocmd/gc: distinguish unnamed vs blank-named return variables better
Russ Cox [Fri, 14 Feb 2014 01:59:39 +0000 (20:59 -0500)]
cmd/gc: distinguish unnamed vs blank-named return variables better

Before, an unnamed return value turned into an ONAME node n with n->sym
named ~anon%d, and n->orig == n.

A blank-named return value turned into an ONAME node n with n->sym
named ~anon%d but n->orig == the original blank n. Code generation and
printing uses n->orig, so that this node formatted as _.

But some code does not use n->orig. In particular the liveness code does
not know about the n->orig convention and so mishandles blank identifiers.
It is possible to fix but seemed better to avoid the confusion entirely.

Now the first kind of node is named ~r%d and the second ~b%d; both have
n->orig == n, so that it doesn't matter whether code uses n or n->orig.

After this change the ->orig field is only used for other kinds of expressions,
not for ONAME nodes.

This requires distinguishing ~b from ~r names in a few places that care.
It fixes a liveness analysis bug without actually changing the liveness code.

TBR=ken2
CC=golang-codereviews
https://golang.org/cl/63630043

11 years agocmd/gc: relax address-of escape analysis
Russ Cox [Fri, 14 Feb 2014 00:59:09 +0000 (19:59 -0500)]
cmd/gc: relax address-of escape analysis

Make the loop nesting depth of &x depend on where x is declared,
not on where the &x appears. The latter is only a conservative
estimate of the former. Being more careful can avoid some
variables escaping, and it is easier to reason about.

It would have avoided issue 7313, although that was still a bug
worth fixing.

Not much effect in the tree: one variable in the whole tree
is saved from a heap allocation (something in x509 parsing).

LGTM=daniel.morsing
R=daniel.morsing
CC=golang-codereviews
https://golang.org/cl/62380043

11 years agocontainer/list: mark must be an element of the list
Markus Zimmermann [Fri, 14 Feb 2014 00:43:52 +0000 (16:43 -0800)]
container/list: mark must be an element of the list

The methods MoveAfter and MoveBefore of the container/list package did silently corrupt the interal structure of the list if a mark element is used which is not an element of the list.

LGTM=gri
R=golang-codereviews, gobot, gri
CC=golang-codereviews
https://golang.org/cl/60980043

11 years agoA+C: Markus Zimmermann (individual CLA)
Robert Griesemer [Fri, 14 Feb 2014 00:43:28 +0000 (16:43 -0800)]
A+C: Markus Zimmermann (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/63620043

11 years agomath/big: Optimise ARM assembler
Nick Craig-Wood [Fri, 14 Feb 2014 00:19:38 +0000 (16:19 -0800)]
math/big: Optimise ARM assembler

Tweak the ARM assembler to improve its performance.

  * Use TEQ instead of CMP which preserves the carry flag.  This means
    we can avoid saving and restoring CPSR which is very slow.

  * Use conditional instructions to read the value of the carry flag.

  * Use 3 argument ARM instructions to save instructions

  * Improve scheduling for MOVW instructions (LDR)

  * Use RSB constant to save an instruction in bitLen

Results of -test.bench 'VV|VW|VU|WW|Bit' -test.benchtime 3s on Samsung
Exynos5 Chromebook.

There are a few small regressions in the benchmarks which I believe to
be noise, perhaps due to different cacheline alignment.

The changes to bitLen are apparently no faster, however less
instructions means less I-cache usage which is a win. I suspect it
will be a win on older ARM processors.

benchmark                 old ns/op    new ns/op    delta
BenchmarkAddVV_1                 48           14  -70.84%
BenchmarkAddVV_2                 87           17  -80.25%
BenchmarkAddVV_3                126           20  -83.97%
BenchmarkAddVV_4                165           23  -86.00%
BenchmarkAddVV_5                204           26  -87.21%
BenchmarkAddVV_1e1              399           41  -89.72%
BenchmarkAddVV_1e2             3921          315  -91.97%
BenchmarkAddVV_1e3            39085         2972  -92.40%
BenchmarkAddVV_1e4           390330        29623  -92.41%
BenchmarkAddVV_1e5          3935366       343431  -91.27%
BenchmarkAddVW_1                 20           10  -49.04%
BenchmarkAddVW_2                 60           14  -76.53%
BenchmarkAddVW_3                 99           16  -83.38%
BenchmarkAddVW_4                140           18  -86.50%
BenchmarkAddVW_5                179           21  -88.04%
BenchmarkAddVW_1e1              376           33  -91.20%
BenchmarkAddVW_1e2             3933          256  -93.49%
BenchmarkAddVW_1e3            39630         2378  -94.00%
BenchmarkAddVW_1e4           396218        23623  -94.04%
BenchmarkAddVW_1e5          3972901       238403  -94.00%
BenchmarkAddMulVVW_1             11           11   -4.27%
BenchmarkAddMulVVW_2             15           15   +0.00%
BenchmarkAddMulVVW_3             18           19   +4.37%
BenchmarkAddMulVVW_4             21           21   +4.29%
BenchmarkAddMulVVW_5             24           24   -0.82%
BenchmarkAddMulVVW_1e1           40           39   -2.70%
BenchmarkAddMulVVW_1e2          329          326   -0.91%
BenchmarkAddMulVVW_1e3         3200         3098   -3.19%
BenchmarkAddMulVVW_1e4        38457        40013   +4.05%
BenchmarkAddMulVVW_1e5       461880       428580   -7.21%
BenchmarkBitLen0                  5            5   -0.19%
BenchmarkBitLen1                  5            5   +0.00%
BenchmarkBitLen2                  5            5   -0.56%
BenchmarkBitLen3                  5            5   +0.38%
BenchmarkBitLen4                  5            5   +0.19%
BenchmarkBitLen5                  5            5   +0.56%
BenchmarkBitLen8                  5            5   -0.19%
BenchmarkBitLen9                  5            5   -0.56%
BenchmarkBitLen16                 5            5   -0.19%
BenchmarkBitLen17                 5            5   -0.37%
BenchmarkBitLen31                 5            5   -1.30%
BenchmarkBitset                  72           70   -2.49%
BenchmarkBitsetNeg             1584          396  -75.00%
BenchmarkBitsetOrig            1990         1980   -0.50%
BenchmarkBitsetNegOrig         4031         2877  -28.63%

benchmark                  old MB/s     new MB/s  speedup
BenchmarkAddVV_1             657.71      2251.28    3.42x
BenchmarkAddVV_2             730.65      3700.37    5.06x
BenchmarkAddVV_3             757.29      4754.30    6.28x
BenchmarkAddVV_4             772.95      5541.58    7.17x
BenchmarkAddVV_5             781.30      6125.59    7.84x
BenchmarkAddVV_1e1           800.33      7814.14    9.76x
BenchmarkAddVV_1e2           815.98     10129.62   12.41x
BenchmarkAddVV_1e3           818.73     10767.07   13.15x
BenchmarkAddVV_1e4           819.82     10802.12   13.18x
BenchmarkAddVV_1e5           813.14      9317.73   11.46x
BenchmarkAddVW_1            1539.56      3006.13    1.95x
BenchmarkAddVW_2            1057.66      4502.20    4.26x
BenchmarkAddVW_3             960.67      5797.65    6.04x
BenchmarkAddVW_4             913.19      6776.86    7.42x
BenchmarkAddVW_5             891.72      7467.82    8.37x
BenchmarkAddVW_1e1           850.12      9681.85   11.39x
BenchmarkAddVW_1e2           813.48     12494.27   15.36x
BenchmarkAddVW_1e3           807.45     13451.80   16.66x
BenchmarkAddVW_1e4           807.64     13545.64   16.77x
BenchmarkAddVW_1e5           805.46     13422.64   16.66x
BenchmarkAddMulVVW_1        2727.29      2847.66    1.04x
BenchmarkAddMulVVW_2        4162.30      4158.69    1.00x
BenchmarkAddMulVVW_3        5236.91      5015.98    0.96x
BenchmarkAddMulVVW_4        6090.27      5837.52    0.96x
BenchmarkAddMulVVW_5        6549.86      6598.60    1.01x
BenchmarkAddMulVVW_1e1      7850.72      8068.00    1.03x
BenchmarkAddMulVVW_1e2      9724.38      9794.40    1.01x
BenchmarkAddMulVVW_1e3      9997.18     10328.58    1.03x
BenchmarkAddMulVVW_1e4      8320.88      7997.39    0.96x
BenchmarkAddMulVVW_1e5      6928.20      7466.50    1.08x

LGTM=gri
R=golang-codereviews, dave, gri
CC=golang-codereviews
https://golang.org/cl/61290043

11 years agonet/http: increase panic stack trace buffer size from 4 KB to 64 KB.
David Symonds [Thu, 13 Feb 2014 23:15:38 +0000 (10:15 +1100)]
net/http: increase panic stack trace buffer size from 4 KB to 64 KB.

4 KB is a bit too small in some situations (e.g. panic during a
template execution), and ends up with an unhelpfully-truncated trace.
64 KB should be much more likely to capture the useful information.
There's not a garbage generation issue, since this code should only
be triggered when there's something seriously wrong with the program.

LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://golang.org/cl/63520043

11 years agocrypto/rsa: explain random parameter for GenerateKey and GenerateMultiPrimeKey.
Shenghou Ma [Thu, 13 Feb 2014 20:56:48 +0000 (15:56 -0500)]
crypto/rsa: explain random parameter for GenerateKey and GenerateMultiPrimeKey.
Fixes #6850.

LGTM=agl
R=golang-codereviews, agl
CC=golang-codereviews
https://golang.org/cl/60500046

11 years agocmd/go: fix cgo error output rewrite
Shenghou Ma [Thu, 13 Feb 2014 20:55:14 +0000 (15:55 -0500)]
cmd/go: fix cgo error output rewrite
for example, we now rewrite *_Ctype_int to *C.int.
Fixes #6781.

LGTM=iant
R=golang-codereviews, rsc, iant
CC=golang-codereviews
https://golang.org/cl/36860043

11 years agoruntime: update malloc comment for MSpan.needzero
Russ Cox [Thu, 13 Feb 2014 19:31:48 +0000 (14:31 -0500)]
runtime: update malloc comment for MSpan.needzero

Missed this suggestion in CL 57680046.

LGTM=iant
R=iant
CC=golang-codereviews
https://golang.org/cl/63390043

11 years agolib9: fix Solaris build
David du Colombier [Thu, 13 Feb 2014 19:30:42 +0000 (20:30 +0100)]
lib9: fix Solaris build

In file included from src/lib9/utf/utfecpy.c:17:0:
src/lib9/utf/utfdef.h:28:0: error: "nil" redefined [-Werror]
In file included from src/lib9/utf/utfrrune.c:17:0:
src/lib9/utf/utfdef.h:28:0: error: "nil" redefined [-Werror]

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/63410043

11 years agolib9: enable on Plan 9
David du Colombier [Thu, 13 Feb 2014 19:06:41 +0000 (20:06 +0100)]
lib9: enable on Plan 9

This change depends on CL 57170052.

LGTM=rsc
R=rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/60840049

11 years agolib9: fix inconsistencies and warnings on Plan 9
David du Colombier [Thu, 13 Feb 2014 19:05:55 +0000 (20:05 +0100)]
lib9: fix inconsistencies and warnings on Plan 9

warning: src/lib9/fmt/dorfmt.c:64 unreachable code RETURN
warning: src/lib9/fmt/fltfmt.c:184 set and not used: p
warning: src/lib9/utf/utflen.c:35 unreachable code RETURN
warning: src/lib9/utf/utfrrune.c:45 unreachable code RETURN
warning: src/lib9/utf/utfrune.c:44 unreachable code RETURN

LGTM=rsc
R=rsc, iant, gobot
CC=golang-codereviews
https://golang.org/cl/57170052

11 years agocmd/gc: for loop init statement misanalyzed by escape analysis
Daniel Morsing [Thu, 13 Feb 2014 19:04:43 +0000 (19:04 +0000)]
cmd/gc: for loop init statement misanalyzed by escape analysis

Logically, the init statement is in the enclosing scopes loopdepth, not inside the for loop.

Fixes #7313.

LGTM=rsc
R=golang-codereviews, gobot, rsc
CC=golang-codereviews
https://golang.org/cl/62430043

11 years agocmd/go, go/build: support .m files
Carlos Castillo [Thu, 13 Feb 2014 18:11:44 +0000 (10:11 -0800)]
cmd/go, go/build: support .m files

go/build is changed to list the .m files in a package, and match them for build constraints, adding them to a new field: Package.MFiles.

The go tool is changed to support building .m files and linking in the results during CGO and SWIG builds. This means packages that create a C interface to calls Objective-C code from go are now go-gettable without producing and distributing .syso files. This change is analogous to the one in Go 1.2 made to support C++ built code.

This change doesn't support .mm files (Objective C++).

Also added support for these MFiles to go list's -json mode.

Fixes #6536.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/60590044

11 years agocrypto/x509: Add certificate signature request (CSR) support.
Kyle Isom [Thu, 13 Feb 2014 17:54:04 +0000 (12:54 -0500)]
crypto/x509: Add certificate signature request (CSR) support.

This change adds support for parsing and serialisation of PKCS #10,
certificate signature requests.

LGTM=agl
R=golang-codereviews, agl
CC=agl, golang-codereviews, nick
https://golang.org/cl/49830048

11 years agomath/big: add support for general encoding interfaces
Michael T. Jones [Thu, 13 Feb 2014 16:42:19 +0000 (08:42 -0800)]
math/big: add support for general encoding interfaces
TextMarshaller and TextUnmarshaller to ease transport of
unlimited precision rational numbers.

Fixes #7287.

Consists of encode and decode functions and two test
functions, one using JSON and one using XML. Each
verifies round trips for integers (rationals with
denominator == 1) and for fractional vaues.

LGTM=gri
R=gri, cookieo9, bradfitz, mtj
CC=golang-codereviews
https://golang.org/cl/61180043

11 years agocmd/gc: fix windows build
Dmitriy Vyukov [Thu, 13 Feb 2014 16:15:19 +0000 (20:15 +0400)]
cmd/gc: fix windows build
c:\src\go\pkg\obj\windows_amd64\libgc.a(lex.o): In function `catcher':
c:/src/go/src/cmd/gc/lex.c:181: undefined reference to `noted'

LGTM=0intro
R=0intro
CC=golang-codereviews
https://golang.org/cl/63270043

11 years agoruntime: introduce MSpan.needzero instead of writing to span data
Russ Cox [Thu, 13 Feb 2014 16:10:31 +0000 (11:10 -0500)]
runtime: introduce MSpan.needzero instead of writing to span data

This cleans up the code significantly, and it avoids any
possible problems with madvise zeroing out some but
not all of the data.

Fixes #6400.

LGTM=dave
R=dvyukov, dave
CC=golang-codereviews
https://golang.org/cl/57680046

11 years agoruntime: fix concurrent GC sweep
Dmitriy Vyukov [Thu, 13 Feb 2014 15:36:45 +0000 (19:36 +0400)]
runtime: fix concurrent GC sweep
The issue was that one of the MSpan_Sweep callers
was doing sweep with preemption enabled.
Additional checks are added.

LGTM=rsc
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/62990043

11 years agocmd/gc: catch notes on Plan 9
David du Colombier [Thu, 13 Feb 2014 15:35:51 +0000 (16:35 +0100)]
cmd/gc: catch notes on Plan 9

LGTM=rsc
R=rsc, jas, gobot
CC=ality, golang-codereviews
https://golang.org/cl/51650051

11 years agonet: only return unique hosts during hostname lookup on plan 9
Nicolas Owens [Thu, 13 Feb 2014 15:26:16 +0000 (10:26 -0500)]
net: only return unique hosts during hostname lookup on plan 9

TestLookupHost expects that no duplicate addresses are returned. when cs is consulted for a name, e.g net!localhost!1, it will possibly return multiple available paths, e.g. via il and tcp. this confuses the tests.

LGTM=aram
R=jas, 0intro, aram
CC=golang-codereviews
https://golang.org/cl/58120045

11 years agoarchive/tar: support extended attributes
Alexander Larsson [Thu, 13 Feb 2014 09:08:30 +0000 (20:08 +1100)]
archive/tar: support extended attributes

This adds support for archives with the SCHILY.xattr field in the
pax header. This is what gnu tar and star generate.
Fixes #7154.

LGTM=dsymonds
R=golang-codereviews, gobot, dsymonds
CC=golang-codereviews
https://golang.org/cl/54570043

11 years agocmd/6c, cmd/8c, cmd/8g: fix print of pc (which is vlong).
Shenghou Ma [Thu, 13 Feb 2014 08:09:03 +0000 (03:09 -0500)]
cmd/6c, cmd/8c, cmd/8g: fix print of pc (which is vlong).
While we're at it, fix a wrong for statement in cmd/8g.

LGTM=rsc
R=rsc, golang-codereviews
CC=golang-codereviews
https://golang.org/cl/62700044

11 years agocmd/gc: fix warnings on Plan 9
David du Colombier [Thu, 13 Feb 2014 06:28:22 +0000 (07:28 +0100)]
cmd/gc: fix warnings on Plan 9

warning: src/cmd/gc/popt.c:700 format mismatch d VLONG, arg 4
warning: src/cmd/gc/popt.c:700 format mismatch d VLONG, arg 5

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/62910043

11 years agoruntime/pprof: fix arm build after CL 61270043
Russ Cox [Thu, 13 Feb 2014 06:16:20 +0000 (01:16 -0500)]
runtime/pprof: fix arm build after CL 61270043

TBR=dvyukov
CC=golang-codereviews
https://golang.org/cl/62960043

11 years agocodereview: warn about 'hg upload' not uploading
Russ Cox [Thu, 13 Feb 2014 05:06:46 +0000 (05:06 +0000)]
codereview: warn about 'hg upload' not uploading

This seems to be what causes the 'chunk mismatch' errors.
I don't know why the server tells us there's nothing to upload,
but at the least we can warn that it did, so that the user
will try again.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/62840043

11 years agoA+C: Mikhail Panchenko (individual CLA)
Andrew Gerrand [Thu, 13 Feb 2014 04:34:30 +0000 (15:34 +1100)]
A+C: Mikhail Panchenko (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/62890043

11 years agoA+C: Michael Pearson (individual CLA)
Andrew Gerrand [Thu, 13 Feb 2014 04:30:15 +0000 (15:30 +1100)]
A+C: Michael Pearson (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/62880043

11 years agoA+C: Marc Weistroff (individual CLA)
Andrew Gerrand [Thu, 13 Feb 2014 04:29:10 +0000 (15:29 +1100)]
A+C: Marc Weistroff (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/62870043

11 years agoA+C: Alexey Palazhchenko (individual CLA)
Andrew Gerrand [Thu, 13 Feb 2014 04:27:36 +0000 (15:27 +1100)]
A+C: Alexey Palazhchenko (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/62860043

11 years agocmd/5g: fix regopt bug in copyprop
Russ Cox [Thu, 13 Feb 2014 03:54:55 +0000 (03:54 +0000)]
cmd/5g: fix regopt bug in copyprop

copyau1 was assuming that it could deduce the type of the
middle register p->reg from the type of the left or right
argument: in CMPF F1, F2, the p->reg==2 must be a D_FREG
because p->from is F1, and in CMP R1, R2, the p->reg==2 must
be a D_REG because p->from is R1.

This heuristic fails for CMP $0, R2, which was causing copyau1
not to recognize p->reg==2 as a reference to R2, which was
keeping it from properly renaming the register use when
substituting registers.

cmd/5c has the right approach: look at the opcode p->as to
decide the kind of register. It is unclear where 5g's copyau1
came from; perhaps it was an attempt to avoid expanding 5c's
a2type to include new instructions used only by 5g.

Copy a2type from cmd/5c, expand to include additional instructions,
and make it crash the compiler if asked about an instruction
it does not understand (avoid silent bugs in the future if new
instructions are added).

Should fix current arm build breakage.

While we're here, fix the print statements dumping the pred and
succ info in the asm listing to pass an int arg to %.4ud
(Prog.pc is a vlong now, due to the liblink merge).

TBR=ken2
CC=golang-codereviews
https://golang.org/cl/62730043

11 years agocmd/5g: fix print format in peephole debugging
Anthony Martin [Thu, 13 Feb 2014 01:03:21 +0000 (17:03 -0800)]
cmd/5g: fix print format in peephole debugging

Fixes #7294.

LGTM=minux.ma, dave, bradfitz
R=golang-codereviews, minux.ma, dave, bradfitz
CC=golang-codereviews
https://golang.org/cl/61370043

11 years agodebug/macho: Add support for opening fat/universal binaries.
Robert Sesek [Thu, 13 Feb 2014 00:04:13 +0000 (11:04 +1100)]
debug/macho: Add support for opening fat/universal binaries.

New testdata was created from existing using:
$ lipo gcc-386-darwin-exec gcc-amd64-darwin-exec -create -output fat-gcc-386-amd64-darwin-exec

Fixes #7250.

LGTM=dave
R=golang-codereviews, dave, josharian, bradfitz
CC=golang-codereviews
https://golang.org/cl/60190043

11 years agodebug/macho: add test file for CL 60190043
Dave Cheney [Wed, 12 Feb 2014 23:58:23 +0000 (10:58 +1100)]
debug/macho: add test file for CL 60190043

From the description of CL 60190043

debug/macho: Add support for opening fat/universal binaries.

New testdata was created from existing using:
$ lipo gcc-386-darwin-exec gcc-amd64-darwin-exec -create -output
fat-gcc-386-amd64-darwin-exec

Update #7250

LGTM=iant
R=golang-codereviews, gobot, dsymonds, iant
CC=golang-codereviews
https://golang.org/cl/61720044

11 years agocrypto/md5: always test the portable block function too
Brad Fitzpatrick [Wed, 12 Feb 2014 21:31:05 +0000 (13:31 -0800)]
crypto/md5: always test the portable block function too

So it doesn't bitrot.

Like the sha1 version (https://golang.org/cl/62270043)

LGTM=agl
R=agl
CC=golang-codereviews
https://golang.org/cl/62420043

11 years agoruntime: fix non-concurrent sweep
Russ Cox [Wed, 12 Feb 2014 20:54:21 +0000 (15:54 -0500)]
runtime: fix non-concurrent sweep

State of the world:

CL 46430043 introduced a new concurrent sweep but is broken.

CL 62360043 made the new sweep non-concurrent
to try to fix the world while we understand what's wrong with
the concurrent version.

This CL fixes the non-concurrent form to run finalizers.
This CL is just a band-aid to get the build green again.

Dmitriy is working on understanding and then fixing what's
wrong with the concurrent sweep.

TBR=dvyukov
CC=golang-codereviews
https://golang.org/cl/62370043

11 years agoA+C: Kyle Isom (individual CLA)
Adam Langley [Wed, 12 Feb 2014 20:40:45 +0000 (15:40 -0500)]
A+C: Kyle Isom (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/57680047

11 years agoruntime: temporary disable concurrent GC sweep
Dmitriy Vyukov [Wed, 12 Feb 2014 20:03:27 +0000 (00:03 +0400)]
runtime: temporary disable concurrent GC sweep
We see failures on builders, e.g.:
http://build.golang.org/log/70bb28cd6bcf8c4f49810a011bb4337a61977bf4

LGTM=rsc, dave
R=rsc, dave
CC=golang-codereviews
https://golang.org/cl/62360043

11 years agocmd/cc, cmd/gc, cmd/ld: consolidate print format routines
Anthony Martin [Wed, 12 Feb 2014 19:29:11 +0000 (14:29 -0500)]
cmd/cc, cmd/gc, cmd/ld: consolidate print format routines

We now use the %A, %D, %P, and %R routines from liblink
across the board.

Fixes #7178.
Fixes #7055.

LGTM=iant
R=golang-codereviews, gobot, rsc, dave, iant, remyoudompheng
CC=golang-codereviews
https://golang.org/cl/49170043

11 years agocrypto/sha1: always test the portable block function too
Brad Fitzpatrick [Wed, 12 Feb 2014 19:27:36 +0000 (11:27 -0800)]
crypto/sha1: always test the portable block function too

So it doesn't bitrot.

LGTM=agl
R=golang-codereviews, agl
CC=golang-codereviews
https://golang.org/cl/62270043

11 years agoruntime: more precise mprof sampling
Dmitriy Vyukov [Wed, 12 Feb 2014 18:36:45 +0000 (22:36 +0400)]
runtime: more precise mprof sampling
Better sampling of objects that are close in size to sampling rate.
See the comment for details.

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/43830043

11 years agoruntime: improve cpu profiles for GC/syscalls/cgo
Dmitriy Vyukov [Wed, 12 Feb 2014 18:31:36 +0000 (22:31 +0400)]
runtime: improve cpu profiles for GC/syscalls/cgo
Current "System->etext" is not very informative.
Add parent "GC" frame.
Replace un-unwindable syscall/cgo frames with Go stack that leads to the call.

LGTM=rsc
R=rsc, alex.brainman, ality
CC=golang-codereviews
https://golang.org/cl/61270043

11 years agoAn ARM version of sha1block.go with a big improvement in throughput
Nick Craig-Wood [Wed, 12 Feb 2014 18:24:52 +0000 (13:24 -0500)]
An ARM version of sha1block.go with a big improvement in throughput
(up to 2.8x).

This is a partially unrolled version which performs better for small
hashes and only sacrifices a small amount of ultimate speed to a fully
unrolled version which uses 5k of code.

Code size

  Before 1636 bytes
  After 1880 bytes
  15% larger

Benchmarks on Samsung Exynos 5 ARMv7 Chromebook

benchmark              old ns/op    new ns/op    delta
BenchmarkHash8Bytes         1907         1136  -40.43%
BenchmarkHash1K            20280         7547  -62.79%
BenchmarkHash8K           148469        52576  -64.59%

benchmark               old MB/s     new MB/s  speedup
BenchmarkHash8Bytes         4.19         7.04    1.68x
BenchmarkHash1K            50.49       135.68    2.69x
BenchmarkHash8K            55.18       155.81    2.82x

LGTM=dave, agl
R=dave, bradfitz, agl, adg, nick
CC=golang-codereviews
https://golang.org/cl/56990044

11 years agoruntime: refactor level-triggered IO support
Dmitriy Vyukov [Wed, 12 Feb 2014 18:24:29 +0000 (22:24 +0400)]
runtime: refactor level-triggered IO support
Remove GOOS_solaris ifdef from netpoll code,
instead introduce runtime edge/level triggered IO flag.
Replace armread/armwrite with a single arm(mode) function,
that's how all other interfaces look like and these functions
will need to do roughly the same thing anyway.

LGTM=rsc
R=golang-codereviews, dave, rsc
CC=golang-codereviews
https://golang.org/cl/55500044

11 years agoruntime: refactor chan code
Dmitriy Vyukov [Wed, 12 Feb 2014 18:21:38 +0000 (22:21 +0400)]
runtime: refactor chan code
1. Make internal chan functions static.
2. Move selgen local variable instead of a member of G struct.
3. Change "bool *pres/selected" parameter of chansend/chanrecv to "bool block",
   which is simpler, faster and less code.
-37 lines total.

LGTM=rsc
R=golang-codereviews, dave, gobot, rsc
CC=bradfitz, golang-codereviews, iant, khr
https://golang.org/cl/58610043

11 years agoruntime: concurrent GC sweep
Dmitriy Vyukov [Wed, 12 Feb 2014 18:16:42 +0000 (22:16 +0400)]
runtime: concurrent GC sweep
Moves sweep phase out of stoptheworld by adding
background sweeper goroutine and lazy on-demand sweeping.

It turned out to be somewhat trickier than I expected,
because there is no point in time when we know size of live heap
nor consistent number of mallocs and frees.
So everything related to next_gc, mprof, memstats, etc becomes trickier.

At the end of GC next_gc is conservatively set to heap_alloc*GOGC,
which is much larger than real value. But after every sweep
next_gc is decremented by freed*GOGC. So when everything is swept
next_gc becomes what it should be.

For mprof I had to introduce 3-generation scheme (allocs, revent_allocs, prev_allocs),
because by the end of GC we know number of frees for the *previous* GC.

Significant caution is required to not cross yet-unknown real value of next_gc.
This is achieved by 2 means:
1. Whenever I allocate a span from MCentral, I sweep a span in that MCentral.
2. Whenever I allocate N pages from MHeap, I sweep until at least N pages are
returned to heap.
This provides quite strong guarantees that heap does not grow when it should now.

http-1
allocated                    7036         7033      -0.04%
allocs                         60           60      +0.00%
cputime                     51050        46700      -8.52%
gc-pause-one             34060569      1777993     -94.78%
gc-pause-total               2554          133     -94.79%
latency-50                 178448       170926      -4.22%
latency-95                 284350       198294     -30.26%
latency-99                 345191       220652     -36.08%
rss                     101564416    101007360      -0.55%
sys-gc                    6606832      6541296      -0.99%
sys-heap                 88801280     87752704      -1.18%
sys-other                 7334208      7405928      +0.98%
sys-stack                  524288       524288      +0.00%
sys-total               103266608    102224216      -1.01%
time                        50339        46533      -7.56%
virtual-mem             292990976    293728256      +0.25%

garbage-1
allocated                 2983818      2990889      +0.24%
allocs                      62880        62902      +0.03%
cputime                  16480000     16190000      -1.76%
gc-pause-one            828462467    487875135     -41.11%
gc-pause-total            4142312      2439375     -41.11%
rss                    1151709184   1153712128      +0.17%
sys-gc                   66068352     66068352      +0.00%
sys-heap               1039728640   1039728640      +0.00%
sys-other                37776064     40770176      +7.93%
sys-stack                 8781824      8781824      +0.00%
sys-total              1152354880   1155348992      +0.26%
time                     16496998     16199876      -1.80%
virtual-mem            1409564672   1402281984      -0.52%

LGTM=rsc
R=golang-codereviews, sameer, rsc, iant, jeremyjackins, gobot
CC=golang-codereviews, khr
https://golang.org/cl/46430043

11 years agoencoding/json: fix test failure
Dmitriy Vyukov [Wed, 12 Feb 2014 17:50:58 +0000 (21:50 +0400)]
encoding/json: fix test failure
$ go test -cpu=1,1,1,1,1,1,1,1,1 encoding/json
--- FAIL: TestIndentBig (0.00 seconds)
        scanner_test.go:131: Indent(jsonBig) did not get bigger
On 4-th run initBig generates an empty array.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/49930051

11 years agocrypto/subtle: panic if slices of different lengths are passed to ConstantTimeCompare.
Adam Langley [Wed, 12 Feb 2014 16:58:48 +0000 (11:58 -0500)]
crypto/subtle: panic if slices of different lengths are passed to ConstantTimeCompare.

ConstantTimeCompare has always been documented to take equal length
slices but perhaps this is too subtle, even for 'subtle'.

Fixes #7304.

LGTM=hanwen, bradfitz
R=golang-codereviews, hanwen, bradfitz
CC=golang-codereviews
https://golang.org/cl/62190043

11 years agocrypto/tls: better error messages.
Adam Langley [Wed, 12 Feb 2014 16:20:01 +0000 (11:20 -0500)]
crypto/tls: better error messages.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/60580046

11 years agonet/http: make responseAndError satisfy the net.Error interface
Rick Arnold [Wed, 12 Feb 2014 15:59:58 +0000 (07:59 -0800)]
net/http: make responseAndError satisfy the net.Error interface

Allow clients to check for timeouts without relying on error substring
matching.

Fixes #6185.

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/55470048

11 years agodebug/pe: delete unnecessary type conversions
Robert Dinu [Wed, 12 Feb 2014 15:35:54 +0000 (07:35 -0800)]
debug/pe: delete unnecessary type conversions

Fixes #7104.

LGTM=iant
R=golang-dev, iant
CC=golang-codereviews
https://golang.org/cl/61480049

11 years agoA+C: Alexander Larsson (individual CLA)
David Symonds [Wed, 12 Feb 2014 01:34:04 +0000 (12:34 +1100)]
A+C: Alexander Larsson (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/53410046

11 years agogo/parser: better error messages for if/switch/for conditions/expressions
Robert Griesemer [Wed, 12 Feb 2014 00:45:31 +0000 (16:45 -0800)]
go/parser: better error messages for if/switch/for conditions/expressions

Fixes #7102.

LGTM=adonovan
R=adonovan
CC=golang-codereviews
https://golang.org/cl/56770045

11 years agoapi: update next.txt
Shenghou Ma [Wed, 12 Feb 2014 00:37:36 +0000 (19:37 -0500)]
api: update next.txt

LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/54830045

11 years agocmd/ld, cmd/6l: part 2 of solaris/amd64 linker changes.
Shenghou Ma [Tue, 11 Feb 2014 23:43:05 +0000 (18:43 -0500)]
cmd/ld, cmd/6l: part 2 of solaris/amd64 linker changes.
Second part of the solaris/amd64 linker changes: relocation and symbol table.

LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://golang.org/cl/61330043

11 years agogo/parser: check presence of 2nd and 3rd index in 3-index slice
Robert Griesemer [Tue, 11 Feb 2014 21:40:37 +0000 (13:40 -0800)]
go/parser: check presence of 2nd and 3rd index in 3-index slice

Fixes #7305.

LGTM=adonovan
R=bradfitz, adonovan
CC=golang-codereviews
https://golang.org/cl/58950045

11 years agocmd/6g, cmd/8g, cmd/5g: make the undefined instruction have no successors
Daniel Morsing [Tue, 11 Feb 2014 20:25:40 +0000 (20:25 +0000)]
cmd/6g, cmd/8g, cmd/5g: make the undefined instruction have no successors

The UNDEF instruction was listed in the instruction data as having the next instruction in the stream as its successor. This confused the optimizer into adding a load where it wasn't needed, in turn confusing the liveness analysis pass for GC bitmaps into thinking that the variable was live.

Fixes #7229.

LGTM=iant, rsc
R=golang-codereviews, bradfitz, iant, dave, rsc
CC=golang-codereviews
https://golang.org/cl/56910045

11 years agoarchive/zip: re-use flate.Writers when writing compressed files
Brad Fitzpatrick [Tue, 11 Feb 2014 19:41:25 +0000 (11:41 -0800)]
archive/zip: re-use flate.Writers when writing compressed files

Prevents a ton of garbage. (Noticed this when writing large
Camlistore zip archives to Amazon Glacier)

Note that the Closer part of the io.WriteCloser is never given
to users. It's an internal detail of the package.

benchmark                         old ns/op     new ns/op     delta
BenchmarkCompressedZipGarbage     42884123      40732373      -5.02%

benchmark                         old allocs     new allocs     delta
BenchmarkCompressedZipGarbage     204            149            -26.96%

benchmark                         old bytes     new bytes     delta
BenchmarkCompressedZipGarbage     4397576       66744         -98.48%

LGTM=adg, rsc
R=adg, rsc
CC=golang-codereviews
https://golang.org/cl/54300053

11 years agoruntime: do not profile blocked netpoll on windows
Dmitriy Vyukov [Tue, 11 Feb 2014 09:41:46 +0000 (13:41 +0400)]
runtime: do not profile blocked netpoll on windows
There is frequently a thread hanging on GQCS,
currently it skews profiles towards netpoll,
but it is not bad and is not consuming any resources.

R=alex.brainman
CC=golang-codereviews
https://golang.org/cl/61560043

11 years agoruntime: homogenize panic strings on Plan 9
David du Colombier [Tue, 11 Feb 2014 08:34:43 +0000 (09:34 +0100)]
runtime: homogenize panic strings on Plan 9

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/61410046

11 years agoA+C: Péter Szilágyi (individual CLA)
Andrew Gerrand [Tue, 11 Feb 2014 06:29:40 +0000 (17:29 +1100)]
A+C: Péter Szilágyi (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/61410050

11 years agoarchive/zip: use correct test, fix 32-bit build
Andrew Gerrand [Tue, 11 Feb 2014 05:27:14 +0000 (16:27 +1100)]
archive/zip: use correct test, fix 32-bit build

LGTM=dsymonds
R=dsymonds
CC=golang-codereviews
https://golang.org/cl/61070047

11 years agoarchive/zip: actually test uncompressed size
Andrew Gerrand [Tue, 11 Feb 2014 05:09:42 +0000 (16:09 +1100)]
archive/zip: actually test uncompressed size

Fixes #7292.

LGTM=dsymonds
R=dsymonds
CC=golang-codereviews
https://golang.org/cl/61650046

11 years agodoc: remove "Code that grows with grace" video from front page
Andrew Gerrand [Tue, 11 Feb 2014 05:00:44 +0000 (16:00 +1100)]
doc: remove "Code that grows with grace" video from front page

It was deleted from Vimeo. I will attempt to get a new version online.

Fixes #7297.

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/61740043

11 years agocmd/gc: change compile error to "use of package %S without selector"
Brendan Daniel Tracey [Tue, 11 Feb 2014 01:27:31 +0000 (20:27 -0500)]
cmd/gc: change compile error to "use of package %S without selector"

At present, when a package identifier is used outside of a selector expression, gc gives the error "use of package %S outside selector". However, in the selector expression x.f, the spec defines f as the selector. This change makes the error clearer.

Fixes #7133.

LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://golang.org/cl/50060047

11 years agoA+C: Brendan Daniel Tracey (individual CLA)
Russ Cox [Tue, 11 Feb 2014 01:27:21 +0000 (20:27 -0500)]
A+C: Brendan Daniel Tracey (individual CLA)

Generated by addca.

R=gobot
CC=golang-codereviews
https://golang.org/cl/55870046

11 years agodoc: restore race detector manual
Andrew Gerrand [Mon, 10 Feb 2014 22:26:34 +0000 (09:26 +1100)]
doc: restore race detector manual

This got deleted mistakenly during the content re-org.

Fixes #7275.

LGTM=dvyukov
R=golang-codereviews, minux.ma, dvyukov
CC=golang-codereviews
https://golang.org/cl/60850043

11 years agocontainer/heap: avoid and/or ambiguity in documentation
Robert Griesemer [Mon, 10 Feb 2014 20:48:56 +0000 (12:48 -0800)]
container/heap: avoid and/or ambiguity in documentation

(per suggestion by Doug McIlroy)

LGTM=r
R=r
CC=golang-codereviews
https://golang.org/cl/50580046

11 years agoruntime: handle "sys: trap: divide error" note on Plan 9
David du Colombier [Mon, 10 Feb 2014 20:47:52 +0000 (21:47 +0100)]
runtime: handle "sys: trap: divide error" note on Plan 9

Fixes #7286.

LGTM=rsc
R=rsc
CC=golang-codereviews
https://golang.org/cl/61410044

11 years agolib/codereview: allow addca CLs without LGTM
Russ Cox [Mon, 10 Feb 2014 19:40:19 +0000 (14:40 -0500)]
lib/codereview: allow addca CLs without LGTM

LGTM=gri
R=golang-codereviews, gri
CC=golang-codereviews
https://golang.org/cl/61610043

11 years agocmd/go: fix comment
Dmitriy Vyukov [Mon, 10 Feb 2014 17:48:43 +0000 (21:48 +0400)]
cmd/go: fix comment

R=r
CC=golang-codereviews
https://golang.org/cl/61650044

11 years agoruntime: fix crash during cpu profiling
Dmitriy Vyukov [Mon, 10 Feb 2014 16:24:47 +0000 (20:24 +0400)]
runtime: fix crash during cpu profiling
mp->mcache can be concurrently modified by runtime·helpgc.
In such case sigprof can remember mcache=nil, then helpgc sets it to non-nil,
then sigprof restores it back to nil, GC crashes with nil mcache.

R=rsc
CC=golang-codereviews
https://golang.org/cl/58860044

11 years agocmd/go: better advice for heap profiling
Dmitriy Vyukov [Mon, 10 Feb 2014 14:59:07 +0000 (18:59 +0400)]
cmd/go: better advice for heap profiling

R=golang-codereviews, bradfitz
CC=golang-codereviews
https://golang.org/cl/60760048

11 years agoruntime: do not cpu profile idle threads on windows
Dmitriy Vyukov [Mon, 10 Feb 2014 11:40:55 +0000 (15:40 +0400)]
runtime: do not cpu profile idle threads on windows
Currently this leads to a significant skew towards 'etext' entry,
since all idle threads are profiled every tick.
Before:
Total: 66608 samples
   63188  94.9%  94.9%    63188  94.9% etext
     278   0.4%  95.3%      278   0.4% sweepspan
     216   0.3%  95.6%      448   0.7% runtime.mallocgc
     122   0.2%  95.8%      122   0.2% scanblock
     113   0.2%  96.0%      113   0.2% net/textproto.canonicalMIMEHeaderKey
After:
Total: 8008 samples
    3949  49.3%  49.3%     3949  49.3% etext
     231   2.9%  52.2%      231   2.9% scanblock
     211   2.6%  54.8%      211   2.6% runtime.cas64
     182   2.3%  57.1%      408   5.1% runtime.mallocgc
     178   2.2%  59.3%      178   2.2% runtime.atomicload64

LGTM=alex.brainman
R=golang-codereviews, alex.brainman
CC=golang-codereviews
https://golang.org/cl/61250043