summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* misc/emacs: ignore backquote in comment or stringRui Ueyama2014-04-091-1/+13
| | | | | | | | | | | | | | | | | 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>
* runtime: use 3x fewer nanotime calls in garbage collectionRuss Cox2014-04-091-5/+11
| | | | | | | | | 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
* doc: tweak Solaris wordingRuss Cox2014-04-091-2/+1
| | | | | | | | | Suggested in comments on CL 85740043. LGTM=aram R=golang-codereviews, aram CC=dave, golang-codereviews, r https://codereview.appspot.com/85990044
* runtime: fix flaky linux/386 buildRuss Cox2014-04-091-1/+1
| | | | | | TBR=iant CC=golang-codereviews https://codereview.appspot.com/86030043
* cmd/gc: drop { } around single-line if-statement bodyJan Ziak2014-04-091-2/+1
| | | | | | | LGTM=rsc R=rsc CC=golang-codereviews https://codereview.appspot.com/85890043
* cmd/gc: avoid confusing error message "ovf in mpaddxx"Jan Ziak2014-04-092-1/+112
| | | | | | | | | Fixes issue 6889 LGTM=rsc R=gri, rsc CC=golang-codereviews https://codereview.appspot.com/85080044
* cmd/gc: ignore blank (_) labels in label declarationsJan Ziak2014-04-093-0/+32
| | | | | | | | | Fixes issue 7538 LGTM=rsc R=gri, rsc CC=golang-codereviews https://codereview.appspot.com/85040045
* html/template: fix two unrelated bugsRob Pike2014-04-092-15/+68
| | | | | | | | | | | | | | | 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
* doc/go1.3.html: go command, major library changesRob Pike2014-04-091-10/+39
| | | | | | | LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/85840043
* runtime: fix GOTRACEBACK on Plan 9David du Colombier2014-04-091-1/+9
| | | | | | | | | | | | 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
* doc/go1.3.html: gc precision, nacl, solarisRob Pike2014-04-091-4/+14
| | | | | | | LGTM=rsc R=rsc, bradfitz CC=golang-codereviews https://codereview.appspot.com/85740043
* doc: add a couple net/http go1.3 itemsBrad Fitzpatrick2014-04-081-2/+11
| | | | | | | LGTM=r R=r CC=golang-codereviews https://codereview.appspot.com/85760043
* runtime: cache gotraceback settingRuss Cox2014-04-082-11/+28
| | | | | | | | | | | | | | | | 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
* cmd/go: allow use of Context in 'go list -f'Rick Arnold2014-04-084-5/+96
| | | | | | | | | | | | | | 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>
* reflect: fix variadic arg for funcs created by MakeFunc.Carl Chatfield2014-04-082-11/+28
| | | | | | | | | | | | | 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>
* A+C: Carl Chatfield (individual CLA)Russ Cox2014-04-082-0/+2
| | | | | | | | Generated by addca. R=gobot CC=golang-codereviews https://codereview.appspot.com/85820043
* doc/go1.3.html: gccgo statusRob Pike2014-04-091-1/+4
| | | | | | | LGTM=iant R=iant CC=golang-codereviews https://codereview.appspot.com/85720043
* crypto/(ec)dsa: use Fermat's inversion.Adam Langley2014-04-082-2/+22
| | | | | | | | | | | | | | | | | | | | | | | | 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
* doc/go1.3.html: linker, go command, miscellanyRob Pike2014-04-091-15/+25
| | | | | | | LGTM=bradfitz R=golang-codereviews, bradfitz CC=golang-codereviews https://codereview.appspot.com/85660043
* doc/go1.3.html: Performance, plus some library detailsRob Pike2014-04-091-24/+96
| | | | | | | LGTM=dvyukov, iant, rsc R=golang-codereviews, dvyukov, iant, rsc CC=golang-codereviews https://codereview.appspot.com/85250043
* go/doc: fix URL matched in ToHTMLRobert Griesemer2014-04-082-9/+74
| | | | | | | | | | | | | 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
* encoding/xml: unmarshal into interfacesJosh Bleecher Snyder2014-04-082-0/+36
| | | | | | | | | | | 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>
* encoding/xml: Makes XML Marshaler take into account XMLName field from ↵Alexander Zhavnerchik2014-04-082-0/+44
| | | | | | | | | | | | | 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>
* A+C: Alexander Zhavnerchik (individual CLA)Russ Cox2014-04-082-0/+2
| | | | | | | | Generated by addca. R=gobot CC=golang-codereviews https://codereview.appspot.com/85490043
* reflect, runtime: fix crash in GC due to reflect.call + precise GCRuss Cox2014-04-089-18/+167
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* runtime/race: more precise handling of channel synchronizationDmitriy Vyukov2014-04-082-27/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* liblink: remove code that is never executedIan Lance Taylor2014-04-072-37/+0
| | | | | | | | | | | | 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
* doc/go1.3.html: drop support for windows 2000Rob Pike2014-04-081-6/+11
| | | | | | | LGTM=bradfitz, alex.brainman R=golang-codereviews, bradfitz, alex.brainman CC=golang-codereviews https://codereview.appspot.com/85190043
* runtime: make sure associated defers are copyable before trying to copy a stack.Keith Randall2014-04-072-12/+74
| | | | | | | | | | | | | | | 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
* runtime: fix heapdump bugs.Keith Randall2014-04-071-4/+13
| | | | | | | | | | | | 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
* net: move error messages related to OpError into net.goMikio Hara2014-04-082-9/+10
| | | | | | | | | | | | 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
* net: remove "net:" prefix from error messagesMikio Hara2014-04-083-9/+9
| | | | | | | | | | | | 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
* cmd/go: Check error from SWIG link step.Albert Strasheim2014-04-071-1/+3
| | | | | | | | | LGTM=iant R=iant CC=golang-codereviews https://codereview.appspot.com/85070043 Committer: Ian Lance Taylor <iant@golang.org>
* net/textproto: simplify common header interningBrad Fitzpatrick2014-04-072-75/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | 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
* libbio, libmach: warnings from the Plan 9 tool chainLucio De Re2014-04-073-29/+33
| | | | | | | | | | | | | 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>
* net: fix data race in benchmarkDmitriy Vyukov2014-04-071-6/+12
| | | | | | | | | | | | 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
* A+C: StalkR (individual CLA)Brad Fitzpatrick2014-04-062-0/+2
| | | | | | | | Generated by addca. R=gobot CC=golang-codereviews https://codereview.appspot.com/84710045
* build: remove depdenency on GNU makeAndrew Gerrand2014-04-073-11/+2
| | | | | | | LGTM=bradfitz R=bradfitz CC=golang-codereviews https://codereview.appspot.com/84920043
* cmd/8g: fix liveness for 387 build (including plan9)Russ Cox2014-04-062-6/+19
| | | | | | TBR=khr CC=golang-codereviews https://codereview.appspot.com/84570045
* syscall: use unsafe.Pointer instead of uintptr on windows when possibleAlex Brainman2014-04-063-16/+16
| | | | | | | | | Fixes issue 7171 LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/84330043
* cmd/gc: compute size of keys & values before making map bucketKeith Randall2014-04-042-0/+19
| | | | | | | | | Fixes issue 7547 LGTM=iant R=iant, khr CC=golang-codereviews https://codereview.appspot.com/84470046
* runtime: fix plan9 warning.Keith Randall2014-04-041-1/+1
| | | | | | | | | | 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
* cmd/gc: check duplicate keys in maps with interface{} key typeJan Ziak2014-04-042-6/+51
| | | | | | | | | Fixes issue 7214 LGTM=rsc R=golang-codereviews, bradfitz, rsc CC=golang-codereviews, minux.ma https://codereview.appspot.com/82080044
* cmd/6g, cmd/8g: disable Duff's device on NaCl.R?my Oudompheng2014-04-044-6/+6
| | | | | | | | | | | 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
* net: fix format string in TestAcceptIgnoreSomeErrorsAlex Brainman2014-04-041-1/+1
| | | | | | | LGTM=mikioh.mikioh R=golang-codereviews, mikioh.mikioh CC=golang-codereviews https://codereview.appspot.com/84340043
* os/exec: always try appropriate command extensions during Cmd.Start on windowsAlex Brainman2014-04-044-147/+384
| | | | | | | | | | | Update issue 7362 Fixes issue 7377 Fixes issue 7570 LGTM=rsc R=golang-codereviews, rsc CC=golang-codereviews https://codereview.appspot.com/83020043
* net: drop unnecessary indirection from PacketConn testsMikio Hara2014-04-041-19/+11
| | | | | | | LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/83880043
* cmd/gc: fix buildMikio Hara2014-04-041-1/+1
| | | | | | | LGTM=minux.ma R=rsc, minux.ma CC=golang-codereviews https://codereview.appspot.com/84260043
* cmd/gc, runtime: make GODEBUG=gcdead=1 mode work with livenessRuss Cox2014-04-037-74/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* net: don't export netFD closeRead and closeWrite methodsMikio Hara2014-04-046-12/+12
| | | | | | | LGTM=iant R=iant CC=golang-codereviews https://codereview.appspot.com/83910043