| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
go-mode on Emacs 23 wrongly recognizes a backquote in a comment or
a string as a start of a raw string literal. Below is an example
that go-mode does not work well. This patch is to fix that issue.
// `
var x = 1
// `
LGTM=dominik.honnef
R=golang-codereviews, dominik.honnef, adonovan
CC=golang-codereviews
https://codereview.appspot.com/84900043
Committer: Alan Donovan <adonovan@google.com>
|
|
|
|
|
|
|
|
|
| |
Cuts the number of calls from 6 to 2 in the non-debug case.
LGTM=iant
R=golang-codereviews, iant
CC=0intro, aram, golang-codereviews, khr
https://codereview.appspot.com/86040043
|
|
|
|
|
|
|
|
|
| |
Suggested in comments on CL 85740043.
LGTM=aram
R=golang-codereviews, aram
CC=dave, golang-codereviews, r
https://codereview.appspot.com/85990044
|
|
|
|
|
|
| |
TBR=iant
CC=golang-codereviews
https://codereview.appspot.com/86030043
|
|
|
|
|
|
|
| |
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/85890043
|
|
|
|
|
|
|
|
|
| |
Fixes issue 6889
LGTM=rsc
R=gri, rsc
CC=golang-codereviews
https://codereview.appspot.com/85080044
|
|
|
|
|
|
|
|
|
| |
Fixes issue 7538
LGTM=rsc
R=gri, rsc
CC=golang-codereviews
https://codereview.appspot.com/85040045
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) The code to catch an exception marked the template as escaped
when it was not yet, which caused subsequent executions of the
template to not escape properly.
2) ensurePipelineContains needs to handled Field as well as
Identifier nodes.
Fixes issue 7379.
LGTM=mikesamuel
R=mikesamuel
CC=golang-codereviews
https://codereview.appspot.com/85240043
|
|
|
|
|
|
|
| |
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://codereview.appspot.com/85840043
|
|
|
|
|
|
|
|
|
|
|
|
| |
Getenv() should not call malloc when called from
gotraceback(). Instead, we return a static buffer
in this case, with enough room to hold the longest
value.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/85680043
|
|
|
|
|
|
|
| |
LGTM=rsc
R=rsc, bradfitz
CC=golang-codereviews
https://codereview.appspot.com/85740043
|
|
|
|
|
|
|
| |
LGTM=r
R=r
CC=golang-codereviews
https://codereview.appspot.com/85760043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Plan 9 gotraceback calls getenv calls malloc, and we gotraceback
on every call to gentraceback, which happens during garbage collection.
Honestly I don't even know how this works on Plan 9.
I suspect it does not, and that we are getting by because
no one has tried to run with $GOTRACEBACK set at all.
This will speed up all the other systems by epsilon, since they
won't call getenv and atoi repeatedly.
LGTM=bradfitz
R=golang-codereviews, bradfitz, 0intro
CC=golang-codereviews
https://codereview.appspot.com/85430046
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a $Context variable to the template so that the build.Context values
such as BuildTags can be accessed.
Fixes issue 6666.
LGTM=adg, rsc
R=golang-codereviews, gobot, adg, rsc
CC=golang-codereviews
https://codereview.appspot.com/72770043
Committer: Russ Cox <rsc@golang.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Short circuit for calling values funcs by MakeFunc was placed
before variadic arg rearrangement code in reflect.call.
Fixes issue 7534.
LGTM=khr
R=golang-codereviews, bradfitz, khr, rsc
CC=golang-codereviews
https://codereview.appspot.com/75370043
Committer: Russ Cox <rsc@golang.org>
|
|
|
|
|
|
|
|
| |
Generated by addca.
R=gobot
CC=golang-codereviews
https://codereview.appspot.com/85820043
|
|
|
|
|
|
|
| |
LGTM=iant
R=iant
CC=golang-codereviews
https://codereview.appspot.com/85720043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that we have a constant-time P-256 implementation, it's worth
paying more attention elsewhere.
The inversion of k in (EC)DSA was using Euclid's algorithm which isn't
constant-time. This change switches to Fermat's algorithm, which is
much better. However, it's important to note that math/big itself isn't
constant time and is using a 4-bit window for exponentiation with
variable memory access patterns.
(Since math/big depends quite deeply on its values being in minimal (as
opposed to fixed-length) represetation, perhaps crypto/elliptic should
grow a constant-time implementation of exponentiation in the scalar
field.)
R=bradfitz
Fixes issue 7652.
LGTM=rsc
R=golang-codereviews, bradfitz, rsc
CC=golang-codereviews
https://codereview.appspot.com/82740043
|
|
|
|
|
|
|
| |
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://codereview.appspot.com/85660043
|
|
|
|
|
|
|
| |
LGTM=dvyukov, iant, rsc
R=golang-codereviews, dvyukov, iant, rsc
CC=golang-codereviews
https://codereview.appspot.com/85250043
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Permit paired parentheses in URLs such as:
http://en.wikipedia.org/wiki/Camellia_(cipher)
Fixes issue 5043.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/85610043
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes issue 6836.
LGTM=rsc
R=golang-codereviews, rsc, r, mike
CC=golang-codereviews
https://codereview.appspot.com/33140043
Committer: Russ Cox <rsc@golang.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
anonymous field
Fixes issue 7614.
LGTM=rsc
R=golang-codereviews, r, rsc, dan.kortschak, applezinc
CC=golang-codereviews
https://codereview.appspot.com/79210044
Committer: Russ Cox <rsc@golang.org>
|
|
|
|
|
|
|
|
| |
Generated by addca.
R=gobot
CC=golang-codereviews
https://codereview.appspot.com/85490043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Given
type Outer struct {
*Inner
...
}
the compiler generates the implementation of (*Outer).M dispatching to
the embedded Inner. The implementation is logically:
func (p *Outer) M() {
(p.Inner).M()
}
but since the only change here is the replacement of one pointer
receiver with another, the actual generated code overwrites the
original receiver with the p.Inner pointer and then jumps to the M
method expecting the *Inner receiver.
During reflect.Value.Call, we create an argument frame and the
associated data structures to describe it to the garbage collector,
populate the frame, call reflect.call to run a function call using
that frame, and then copy the results back out of the frame. The
reflect.call function does a memmove of the frame structure onto the
stack (to set up the inputs), runs the call, and the memmoves the
stack back to the frame structure (to preserve the outputs).
Originally reflect.call did not distinguish inputs from outputs: both
memmoves were for the full stack frame. However, in the case where the
called function was one of these wrappers, the rewritten receiver is
almost certainly a different type than the original receiver. This is
not a problem on the stack, where we use the program counter to
determine the type information and understand that during (*Outer).M
the receiver is an *Outer while during (*Inner).M the receiver in the
same memory word is now an *Inner. But in the statically typed
argument frame created by reflect, the receiver is always an *Outer.
Copying the modified receiver pointer off the stack into the frame
will store an *Inner there, and then if a garbage collection happens
to scan that argument frame before it is discarded, it will scan the
*Inner memory as if it were an *Outer. If the two have different
memory layouts, the collection will intepret the memory incorrectly.
Fix by only copying back the results.
Fixes issue 7725.
LGTM=khr
R=khr
CC=dave, golang-codereviews
https://codereview.appspot.com/85180043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It turns out there is a relatively common pattern that relies on
inverted channel semaphore:
gate := make(chan bool, N)
for ... {
// limit concurrency
gate <- true
go func() {
foo(...)
<-gate
}()
}
// join all goroutines
for i := 0; i < N; i++ {
gate <- true
}
So handle synchronization on inverted semaphores with cap>1.
Fixes issue 7718.
LGTM=rsc
R=rsc
CC=golang-codereviews
https://codereview.appspot.com/84880046
|
|
|
|
|
|
|
|
|
|
|
|
| |
This code tests linkmode == LinkExternal but is only invoked
by the compiler/assembler, not the linker.
Update issue 7164
LGTM=rsc
R=rsc, dave
CC=golang-codereviews
https://codereview.appspot.com/85080043
|
|
|
|
|
|
|
| |
LGTM=bradfitz, alex.brainman
R=golang-codereviews, bradfitz, alex.brainman
CC=golang-codereviews
https://codereview.appspot.com/85190043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Defers generated from cgo lie to us about their argument layout.
Mark those defers as not copyable.
CL 83820043 contains an additional test for this code and should be
checked in (and enabled) after this change is in.
Fixes bug 7695.
LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://codereview.appspot.com/84740043
|
|
|
|
|
|
|
|
|
|
|
|
| |
Iterate the right number of times in arrays and channels.
Handle channels with zero-sized objects in them.
Output longer type names if we have them.
Compute argument offset correctly.
LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://codereview.appspot.com/82980043
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also makes ErrWriteToConnected more appropriate; it's used
not only UDPConn operations but UnixConn operations.
Update issue 4856
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://codereview.appspot.com/84800044
|
|
|
|
|
|
|
|
|
|
|
|
| |
The prefix was not uniformly applied and is probably better
left off for using with OpError.
Update issue 4856
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://codereview.appspot.com/84660046
|
|
|
|
|
|
|
|
|
| |
LGTM=iant
R=iant
CC=golang-codereviews
https://codereview.appspot.com/85070043
Committer: Ian Lance Taylor <iant@golang.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Takes advantage of CL 83740044, to optimize map[string] lookup
from []byte key.
Deletes code.
No conditional check for gccgo, since Ian plans to add this
to gccgo before GCC 4.10 (Go 1.3).
benchmark old ns/op new ns/op delta
BenchmarkReadMIMEHeader 6066 5086 -16.16%
benchmark old allocs new allocs delta
BenchmarkReadMIMEHeader 12 12 +0.00%
benchmark old bytes new bytes delta
BenchmarkReadMIMEHeader 1317 1317 +0.00%
Update Issue 3512
LGTM=rsc
R=rsc, dave
CC=golang-codereviews, iant
https://codereview.appspot.com/84230043
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Superficial inconsistencies that trigger warnings in
Plan 9. Small enough to be considered trivial and
seemingly benign outside of the Plan 9 environment.
LGTM=iant
R=golang-codereviews, 0intro, iant
CC=golang-codereviews
https://codereview.appspot.com/73460043
Committer: Ian Lance Taylor <iant@golang.org>
|
|
|
|
|
|
|
|
|
|
|
|
| |
If an error happens on a connection, server goroutine can call b.Logf
after benchmark finishes.
So join both client and server goroutines.
Update issue 7718
LGTM=bradfitz
R=golang-codereviews, bradfitz
CC=golang-codereviews
https://codereview.appspot.com/84750047
|
|
|
|
|
|
|
|
| |
Generated by addca.
R=gobot
CC=golang-codereviews
https://codereview.appspot.com/84710045
|
|
|
|
|
|
|
| |
LGTM=bradfitz
R=bradfitz
CC=golang-codereviews
https://codereview.appspot.com/84920043
|
|
|
|
|
|
| |
TBR=khr
CC=golang-codereviews
https://codereview.appspot.com/84570045
|
|
|
|
|
|
|
|
|
| |
Fixes issue 7171
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://codereview.appspot.com/84330043
|
|
|
|
|
|
|
|
|
| |
Fixes issue 7547
LGTM=iant
R=iant, khr
CC=golang-codereviews
https://codereview.appspot.com/84470046
|
|
|
|
|
|
|
|
|
|
| |
I have no idea what this code is for, but it pretty
clearly needs to be uint64, not uint32.
LGTM=aram
R=0intro, aram
CC=golang-codereviews
https://codereview.appspot.com/84410043
|
|
|
|
|
|
|
|
|
| |
Fixes issue 7214
LGTM=rsc
R=golang-codereviews, bradfitz, rsc
CC=golang-codereviews, minux.ma
https://codereview.appspot.com/82080044
|
|
|
|
|
|
|
|
|
|
|
| |
Native Client forbids jumps/calls to arbitrary locations and
enforces a particular alignement, which makes the Duff's device
ineffective.
LGTM=khr
R=rsc, dave, khr
CC=golang-codereviews
https://codereview.appspot.com/84400043
|
|
|
|
|
|
|
| |
LGTM=mikioh.mikioh
R=golang-codereviews, mikioh.mikioh
CC=golang-codereviews
https://codereview.appspot.com/84340043
|
|
|
|
|
|
|
|
|
|
|
| |
Update issue 7362
Fixes issue 7377
Fixes issue 7570
LGTM=rsc
R=golang-codereviews, rsc
CC=golang-codereviews
https://codereview.appspot.com/83020043
|
|
|
|
|
|
|
| |
LGTM=iant
R=golang-codereviews, iant
CC=golang-codereviews
https://codereview.appspot.com/83880043
|
|
|
|
|
|
|
| |
LGTM=minux.ma
R=rsc, minux.ma
CC=golang-codereviews
https://codereview.appspot.com/84260043
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Trying to make GODEBUG=gcdead=1 work with liveness
and in particular ambiguously live variables.
1. In the liveness computation, mark all ambiguously live
variables as live for the entire function, except the entry.
They are zeroed directly after entry, and we need them not
to be poisoned thereafter.
2. In the liveness computation, compute liveness (and deadness)
for all parameters, not just pointer-containing parameters.
Otherwise gcdead poisons untracked scalar parameters and results.
3. Fix liveness debugging print for -live=2 to use correct bitmaps.
(Was not updated for compaction during compaction CL.)
4. Correct varkill during map literal initialization.
Was killing the map itself instead of the inserted value temp.
5. Disable aggressive varkill cleanup for call arguments if
the call appears in a defer or go statement.
6. In the garbage collector, avoid bug scanning empty
strings. An empty string is two zeros. The multiword
code only looked at the first zero and then interpreted
the next two bits in the bitmap as an ordinary word bitmap.
For a string the bits are 11 00, so if a live string was zero
length with a 0 base pointer, the poisoning code treated
the length as an ordinary word with code 00, meaning it
needed poisoning, turning the string into a poison-length
string with base pointer 0. By the same logic I believe that
a live nil slice (bits 11 01 00) will have its cap poisoned.
Always scan full multiword struct.
7. In the runtime, treat both poison words (PoisonGC and
PoisonStack) as invalid pointers that warrant crashes.
Manual testing as follows:
- Create a script called gcdead on your PATH containing:
#!/bin/bash
GODEBUG=gcdead=1 GOGC=10 GOTRACEBACK=2 exec "$@"
- Now you can build a test and then run 'gcdead ./foo.test'.
- More importantly, you can run 'go test -short -exec gcdead std'
to run all the tests.
Fixes issue 7676.
While here, enable the precise scanning of slices, since that was
disabled due to bugs like these. That now works, both with and
without gcdead.
Fixes issue 7549.
LGTM=khr
R=khr
CC=golang-codereviews
https://codereview.appspot.com/83410044
|
|
|
|
|
|
|
| |
LGTM=iant
R=iant
CC=golang-codereviews
https://codereview.appspot.com/83910043
|