- 02 Apr, 2015 2 commits
-
-
Josh Bleecher Snyder authored
This prevents conversion noise. No functional changes. Passes toolstash -cmp. Change-Id: I238adf28680f875217827931a689ce7f19a9b371 Reviewed-on: https://go-review.googlesource.com/8164Reviewed-by:
David Chase <drchase@google.com>
-
Mikio Hara authored
This change makes TestDialTimeout work on almost all the supported platforms. Updates #3016. Updates #3307. Updates #3867. Updates #5380. Updates #5349. Change-Id: Iacf0ebea23cdd8f6c0333d70c667a5a5f5eb0ed2 Reviewed-on: https://go-review.googlesource.com/8220Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
- 01 Apr, 2015 15 commits
-
-
Josh Bleecher Snyder authored
Change-Id: I7b0c186ea292655f7ff45c15ac29f6d1b71ef132 Reviewed-on: https://go-review.googlesource.com/8370Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Mikio Hara authored
Fixes #10307. Change-Id: If70f36a6f1c4e465a47a0bc4d38b318424111106 Reviewed-on: https://go-review.googlesource.com/8330Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
David Symonds authored
It functions exactly the same, but this is the more common style for these kinds of multi-key comparison functions, and is more regular. Change-Id: I46630948f893bcc96c05eb3d36eb82e1d97a6fa0 Reviewed-on: https://go-review.googlesource.com/8358Reviewed-by:
Robert Griesemer <gri@golang.org>
-
Robert Griesemer authored
benchmark old ns/op new ns/op delta BenchmarkBinomial 478664 4410 -99.08% Fixes #10084. Change-Id: Ib75034428e32c79c9a660ae9f9bd396afc6a7f11 Reviewed-on: https://go-review.googlesource.com/8351Reviewed-by:
Alan Donovan <adonovan@google.com>
-
Josh Bleecher Snyder authored
This is a follow-up to CL 7360. It was generated with eg and gofmt -r. The only manual changes are the unembedding in syntax.go and backporting changes from y.go to go.y. Passes toolstash -cmp. Change-Id: I3d6d06ecb659809a4bc8592395d5b9a18967218e Reviewed-on: https://go-review.googlesource.com/8053Reviewed-by:
Russ Cox <rsc@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
-
Josh Bleecher Snyder authored
Nodes dominate gc's memory usage, but many fields are only used for a subset of kinds of nodes. This change pulls out fields used only for func-like Nodes. This reduces the size of the Node struct on a 64-bit machine from 504 bytes to 416 bytes (-17%). Compiling the runtime, 1.5% of nodes have a non-nil Func. In html/template, 2.7% of nodes have a non-nil Func. This change introduces an extra alloc and associated GC overhead when Func is non-nil. However, when Func is nil, as it almost always is, it spares the garbage collector scanning some Node fields. Empirically, this change appears to be roughly neutral with regard to GC. To keep the diff readable, this CL uses an embedded Func field. A subsequent CL will unembed the field. Passes toolstash -cmp. Change-Id: Ide86aa954b097fb8e6154f0811d3691497477004 Reviewed-on: https://go-review.googlesource.com/7360Reviewed-by:
Russ Cox <rsc@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Jan Mercl authored
This change stabilizes the result of Sort when the error list contains multiple items for same position. To stabilize the result, newly also the Msg field is considered. The motivation is to avoid diffs of sorted scanner.ErrorList output in repository tracked logs like: -testdata/foo.go:19:44: "bar" testdata/foo.go:19:44: "qux" +testdata/foo.go:19:44: "bar" The change was approved at [0] before submitting. As a side effect, one file in go/parser/testdata must be updated as well. For this file the parser produces two different errors: testdata/issue3106.src:22:5: expected ';', found 'if' testdata/issue3106.src:22:5: expected operand, found 'if' Before comparing the actual and expected errors, the former are filtered to keep only one error per source line[1]. With the new (*ErrorList).Less the outcome is the other error than before which is kept after the call to RemoveMultiplies. [0]: https://groups.google.com/d/msg/golang-nuts/5ChC0XiIwlU/rol_yb2gTj4J [1]: https://github.com/golang/go/blob/9d0239771a2ddd77be0ba64c2782e1328a378190/src/go/parser/error_test.go#L160 Change-Id: Ib72c98a891cdeef34705c22dfbeb0408dcdfddf8 Reviewed-on: https://go-review.googlesource.com/8340Reviewed-by:
Robert Griesemer <gri@golang.org>
-
Sebastien Binet authored
cmd/gofmt and go/format had 3 functions (parse, format and isSpace) that had to be kept in-sync. This CL extracts these 3 functions and refactors them into a new internal/format package. This CL is just code reorganization with no behavior nor semantic change. Change-Id: I593f24e9d3cadbbd9559a67e3b1d2ff190b4fd90 Reviewed-on: https://go-review.googlesource.com/6760Reviewed-by:
Robert Griesemer <gri@golang.org>
-
Josh Bleecher Snyder authored
The c2go translation left a lot of case expressions on separate lines. Merge expressions onto single lines subject to these constraints: * Max 4 clauses, all literals or names * Don't move expressions with comments The change was created by running http://play.golang.org/p/yHajs72h-g: $ mergecase cmd/internal/{ld,gc,obj}/*.go cmd/internal/obj/*/*.go Passes toolstash -cmp. Change-Id: Iba41b390d302e5486e5dc6ba7599a92270676556 Reviewed-on: https://go-review.googlesource.com/7593Reviewed-by:
Russ Cox <rsc@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
-
Preetam Jinka authored
Change-Id: I32ec2d8cb838fb850b3779726cf347dac21dff68 Reviewed-on: https://go-review.googlesource.com/8322Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
This makes it cheaper to copy string literals. This happens just about anywhere that they are used. Example: func f() string { return "f" } Using 6g, compiler output before: "".f t=1 size=32 value=0 args=0x10 locals=0x0 0x0000 00000 (p.go:3) TEXT "".f+0(SB),4,$0-16 0x0000 00000 (p.go:3) FUNCDATA $0,gclocals·d64e51a4c4bfeaa840e480961ec6b0b3+0(SB) 0x0000 00000 (p.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB) 0x0000 00000 (p.go:4) LEAQ go.string."f"+0(SB),BX 0x0007 00007 (p.go:4) MOVQ (BX),BP 0x000a 00010 (p.go:4) MOVQ BP,"".~r0+8(FP) 0x000f 00015 (p.go:4) MOVQ 8(BX),BP 0x0013 00019 (p.go:4) MOVQ BP,"".~r0+16(FP) 0x0018 00024 (p.go:4) RET , After: "".f t=1 size=32 value=0 args=0x10 locals=0x0 0x0000 00000 (p.go:3) TEXT "".f+0(SB),4,$0-16 0x0000 00000 (p.go:3) FUNCDATA $0,gclocals·d64e51a4c4bfeaa840e480961ec6b0b3+0(SB) 0x0000 00000 (p.go:3) FUNCDATA $1,gclocals·3280bececceccd33cb74587feedb1f9f+0(SB) 0x0000 00000 (p.go:4) MOVQ $go.string."f"+16(SB),BX 0x0007 00007 (p.go:4) MOVQ BX,"".~r0+8(FP) 0x000c 00012 (p.go:4) MOVQ $1,"".~r0+16(FP) 0x0015 00021 (p.go:4) RET , The leading MOVQ here will be converted into a LEAQ by the linker, but there is still a net reduction of two MOVQs. Before: TEXT main.f(SB) p.go:4 0x2000 488d1d49500500 LEAQ 0x55049(IP), BX p.go:4 0x2007 488b2b MOVQ 0(BX), BP p.go:4 0x200a 48896c2408 MOVQ BP, 0x8(SP) p.go:4 0x200f 488b6b08 MOVQ 0x8(BX), BP p.go:4 0x2013 48896c2410 MOVQ BP, 0x10(SP) p.go:4 0x2018 c3 RET After: TEXT main.f(SB) p.go:4 0x2000 488d1dd94c0500 LEAQ 0x54cd9(IP), BX p.go:4 0x2007 48895c2408 MOVQ BX, 0x8(SP) p.go:4 0x200c 48c744241001000000 MOVQ $0x1, 0x10(SP) p.go:4 0x2015 c3 RET The performance improvement is small but widespread. As a nice small example, net/url's sole benchmark using 6g: benchmark old ns/op new ns/op delta BenchmarkString 16372 16118 -1.55% And with 8g: benchmark old ns/op new ns/op delta BenchmarkString 22034 21709 -1.47% Change-Id: I4ce202ee7dbd4057be869e2faaaa638c28a1fff0 Reviewed-on: https://go-review.googlesource.com/2587Reviewed-by:
Russ Cox <rsc@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
-
Andrei Korzhevskii authored
This change provides a convenient way to monitor database connection pool. Change-Id: I4b3757855b43f3b254acf9312e2a16e2f87840d0 Reviewed-on: https://go-review.googlesource.com/7950 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Dave Cheney authored
This CL is an amagamation of several fixes Canonical have made on their fork of the cmd/go tool (packaged as gccgo-go.deb on Ubuntu 14.04+). Additionally this CL brings gccgoToolchain.ldi() up to date with the version that will ship in gccgo-5.0. As gccgo is most likely to be used with its own version of the go tool that it supples it makes good sense that the libgo version should dictate the contents of gccgotoolchain.ld() Please see https://codereview.appspot.com/222890043/ for more details on the issues fixed. Change-Id: Icf7deb43f8e80b424757f1673e6bca7a0aa2a1ac Reviewed-on: https://go-review.googlesource.com/8250Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Evan Phoenix authored
Currently, scanner uses -1 to represent 2 different states: 1. I haven't yet scanned anything, call it "Beginning of File" 2. I've reached the end of the input, ie EOF The result of this behavior is that calling Peek() when next() has detected the end of the input and set s.ch to scanner.EOF, is that Peek() things "oh, s.ch is < 0, which to me means that I haven't scanned any next yet, let me try and clear the BOM marker." When this behavior is run on a typical IO, next() will issue a Read and get (0, io.EOF) back for the second time without blocking and Peek() will return scanner.EOF. The bug comes into play when, inside a terminal, hitting Control-D. This causes the terminal to return a EOF condition to the reader but it does not actually close the fd. So, combining these 2 situations, we arrive at the bug: What is expected: hitting Control-D in a terminal will make Peek() return scanner.EOF instantly. What actually happens: 0. Code waiting in Next() 1. User hits Control-D 2. fd returns EOF condition 3. EOF bubbles it's way out to line 249 in scanner.go 4. next() returns scanner.EOF 5. Next() saves the scanner.EOF to s.ch and returns the previous value 6. Peek() runs, sees s.ch < 0, mistakenly thinks it hasn't run yet and tries to read the BOM marker. 7. next() sees the buffer is empty and tries to fill it again, blocking on line 249. The fix is simple: use a different code to indicate that no data has been scanned. Change-Id: Iee8f4da5881682c4d4c36b93b9bf397ac5798179 Reviewed-on: https://go-review.googlesource.com/7913Reviewed-by:
Robert Griesemer <gri@golang.org>
-
Martin Möhrmann authored
The tests in the basic string section are now covering more code paths for encoding a string into the hexadecimal representation of its bytes. Changed the basic string and basic bytes tests so that they mirror each other. Change-Id: Ib5dc7b33876769965f9aba2ac270040abc4b2451 Reviewed-on: https://go-review.googlesource.com/2611Reviewed-by:
Robert Griesemer <gri@golang.org> Reviewed-by:
Rob Pike <r@golang.org>
-
- 31 Mar, 2015 10 commits
-
-
Mikio Hara authored
This change adds socket system call hooks to existing test cases for simulating a bit complicated network conditions to help making timeout and dual IP stack test cases work more properly in followup changes. Also test cases print debugging information in non-short mode like the following: Leaked goroutines: net.TestWriteTimeout.func2(0xc20802a5a0, 0xc20801d000, 0x1000, 0x1000, 0xc2081d2ae0) /go/src/net/timeout_test.go:170 +0x98 created by net.TestWriteTimeout /go/src/net/timeout_test.go:173 +0x745 net.runDatagramPacketConnServer(0xc2080730e0, 0x2bd270, 0x3, 0x2c1770, 0xb, 0xc2081d2ba0, 0xc2081d2c00) /go/src/net/server_test.go:398 +0x667 created by net.TestTimeoutUDP /go/src/net/timeout_test.go:247 +0xc9 (snip) Leaked sockets: 3: {Cookie:615726511685632 Err:<nil> SocketErr:0} 5: {Cookie:7934075906097152 Err:<nil> SocketErr:0} Socket statistical information: {Family:1 Type:805306370 Protocol:0 Opened:17 Accepted:0 Connected:5 Closed:17} {Family:2 Type:805306369 Protocol:0 Opened:450 Accepted:234 Connected:279 Closed:636} {Family:1 Type:805306369 Protocol:0 Opened:11 Accepted:5 Connected:5 Closed:16} {Family:28 Type:805306369 Protocol:0 Opened:95 Accepted:22 Connected:16 Closed:116} {Family:2 Type:805306370 Protocol:0 Opened:84 Accepted:0 Connected:34 Closed:83} {Family:28 Type:805306370 Protocol:0 Opened:52 Accepted:0 Connected:4 Closed:52} Change-Id: I0e84be59a0699bc31245c78e2249423459b8cdda Reviewed-on: https://go-review.googlesource.com/6390Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Robert Griesemer authored
NaNs make the API more complicated for no real good reasons. There are few operations that produce NaNs with IEEE arithmetic, there's no need to copy the behavior. It's easy to test for these scenarios and avoid them (on the other hand, it's not easy to test for overflow or underflow, so we want to keep +/-Inf). Also: - renamed IsNeg -> Signbit (clearer, especially for x == -0) - removed IsZero (Sign() == 0 is sufficient and efficient) - removed IsFinite (now same as !IsInf) Change-Id: I3f3b4445c325d9bbb1bf46ce2e298a6aeb498e07 Reviewed-on: https://go-review.googlesource.com/8280Reviewed-by:
Alan Donovan <adonovan@google.com>
-
Michael Hudson-Doyle authored
In preparation for being able to run a go program that has code in several objects, this changes from having several linker symbols used by the runtime into having one linker symbol that points at a structure containing the needed data. Multiple object support will construct a linked list of such structures. A follow up will initialize the slices in the themoduledata structure directly from the linker but I was aiming for a minimal diff for now. Change-Id: I613cce35309801cf265a1d5ae5aaca8d689c5cbf Reviewed-on: https://go-review.googlesource.com/7441Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Michael Hudson-Doyle authored
Relying on an importing package being linked at the same time as the imported package does not work in the shared library world. This also lets us remove some obscure code from the linker. Change-Id: I57cd5447b42a1a6129b02951d44efffb10cf64be Reviewed-on: https://go-review.googlesource.com/7797Reviewed-by:
Russ Cox <rsc@golang.org>
-
Robert Griesemer authored
- fix bounds checks for exponent range of denormalized numbers - use correct rounding precision for denormalized numbers - added extra tests Change-Id: I6be56399afd0d9a603300a2e44b5539e08d6f592 Reviewed-on: https://go-review.googlesource.com/8096Reviewed-by:
Alan Donovan <adonovan@google.com>
-
Brad Fitzpatrick authored
Change-Id: I9c2b9143d80d253d90d12d2b7686e045ec19c96c Reviewed-on: https://go-review.googlesource.com/8291 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Alex Brainman authored
cl8167 introduced internal/syscall/windows.GetVersion, but we already have that function in syscall.GetVersion. Use that instead. Also revert all internal/syscall/windows cl8167 changes. Change-Id: I512a5bf4b3b696e93aaf69e9e8b7df7022670ec0 Reviewed-on: https://go-review.googlesource.com/8302Reviewed-by:
Daniel Theophanes <kardianos@gmail.com> Reviewed-by:
Minux Ma <minux@golang.org>
-
Austin Clements authored
Currently, gcDrainN is documented saying that it must be run on the system stack. In fact, the problem and solution here are somewhat subtler. First, it doesn't have to happen on the system stack, it just has to be non-stoppable (that is, non-preemptible). Second, this isn't specific to gcDrainN (though gcDrainN is perhaps the most surprising instance); it's general to anything that uses the gcWork structure. Move the comment to gcWork and generalize it. Change-Id: I5277b5abb070e47f8d783bc15a310b379c6adc22 Reviewed-on: https://go-review.googlesource.com/8247Reviewed-by:
Rick Hudson <rlh@golang.org>
-
Austin Clements authored
gcDrain used to be passed a *workbuf to start draining from, but now it takes a gcWork, which hides whether or not there's an initial workbuf. Update the comment to match this. Change-Id: I976b58e5bfebc451cfd4fa75e770113067b5cc07 Reviewed-on: https://go-review.googlesource.com/8246Reviewed-by:
Rick Hudson <rlh@golang.org>
-
John Potocny authored
The strings.Trim function and variants allocate memory on the heap when creating a function to pass into TrimFunc. Add a benchmark to document the behavior; an issue will be submitted to address this behavior in the compiler if possible. Change-Id: I8b66721f077951f7e7b8cf3cf346fac27a9b68c0 Reviewed-on: https://go-review.googlesource.com/8200Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
- 30 Mar, 2015 13 commits
-
-
Lee Packham authored
Being able to printer pointers to strings means one will able to output the result of things like the flag library and other components that use string pointers. While here, adjusted the tests for gdb to test original string pretty printing as well as pointers to them. It was doing it via the map before but for completeness this ensures it's tested as a unit. Change-Id: I4926547ae4fa6c85ef74301e7d96d49ba4a7b0c6 Reviewed-on: https://go-review.googlesource.com/8217 TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Rob Pike authored
A residue of the automatic translation, this closure is easily rewritten to a simpler, smaller, and faster construct. Discovered while analyzing #10269, which I still plan to fix. Change-Id: I76b12290280d81880c446b4cf75da633a94482d4 Reviewed-on: https://go-review.googlesource.com/8270Reviewed-by:
Dave Cheney <dave@cheney.net> Reviewed-by:
Minux Ma <minux@golang.org>
-
Shenghou Ma authored
Change-Id: I624b336a9eb27fbbc8ef13f141023b4f60966245 Reviewed-on: https://go-review.googlesource.com/8240Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Michael Hudson-Doyle authored
runtime·main·f is normalized by the linker to runtime.main.f, as is the compiler-generated symbol runtime.main·f. Change the former to runtime·mainPC instead. Fixes issue #9934 Change-Id: I656a6fa6422d45385fa2cc55bd036c6affa1abfe Reviewed-on: https://go-review.googlesource.com/8234 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Michael Hudson-Doyle authored
For shared libraries we need to be more flexible in how these symbols are handled (e.g. sometimes tlsg needs to be global, or you can get a SDYNIMPORT symbol that has .Hide == true) so handling these cases in genasmsym makes everything much more regular. Even ignoring shared libraries, I think this is a bit cleaner. Change-Id: If5beb093a261e79f4496183226e1765ee7aa6717 Reviewed-on: https://go-review.googlesource.com/8230 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
After moving the darwin/arm builder to new hardware several new flaky error messages appeared. This provided enough information to Google to make it clear that iOS build systems have been flaky for many years, and that is unlikely to change any time soon. However, all of the pain of lldb and using a breakpoint early in program initialization gives us an advantage: all install and initialization flakiness appears to happen before the Go program ever gets going. So if we see an error or we timeout before we reach our breakpoint (before any test code has executed), we can assume it is the fault of the builder and restart without risking hiding a flaky Go test. This code has successfully processed the last 8 builds. I am hopeful. Change-Id: Ide24aaae4fa7bdab9d8f4432bb85d8f2256c7606 Reviewed-on: https://go-review.googlesource.com/8241Reviewed-by:
Hyang-Ah Hana Kim <hyangah@gmail.com>
-
David Crawshaw authored
In the spirit of nacltest.bash and androidtest.bash. Sets up the exec script and reboots the device. The reboot helps make sure previous runs do not interfere with the current run. It is reasonably easy for a bad program, e.g. one with a corrupt stack, to get the device stuck. Change-Id: I61317527741c45a70c390fe21adc4895510fc79f Reviewed-on: https://go-review.googlesource.com/8242Reviewed-by:
Hyang-Ah Hana Kim <hyangah@gmail.com>
-
David Chase authored
Change-Id: Icbc42bcff5a3eabe9f43cff7fcc126141e209ded Reviewed-on: https://go-review.googlesource.com/8203Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
David Chase authored
Extend escape analysis to convT2E and conT2I. If the interface value does not escape supply runtime with a stack buffer for the object copy. This is a straight port from .c to .go of Dmitry's patch Change-Id: Ic315dd50d144d94dd3324227099c116be5ca70b6 Reviewed-on: https://go-review.googlesource.com/8201Reviewed-by:
Dmitry Vyukov <dvyukov@google.com>
-
Daniel Theophanes authored
Windows XP SP2 and Windows 2003 do not support SHA2. Change-Id: Ica5faed040e9ced8b79fe78d512586e0e8788b3f Reviewed-on: https://go-review.googlesource.com/8167 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
Currently, various functions are marked with the comment // May run without a P, so write barriers are not allowed. However, "running without a P" is ambiguous. We intended these to mean that m.p may be nil (which is the condition checked by the write barrier). The comment could also be taken to mean that a stop-the-world may happen, which is not the case for these functions because they run in situations where there is in fact a function on the stack holding a P locally, it just isn't in m.p. Change these comments to state precisely what we mean, that m.p may be nil. Change-Id: I4a4a1d26aebd455e5067540e13b9f96a7482146c Reviewed-on: https://go-review.googlesource.com/8209Reviewed-by:
Minux Ma <minux@golang.org> Reviewed-by:
Rick Hudson <rlh@golang.org>
-
Alexandre Cesaro authored
Change-Id: Id82c3111d7571263208ced3d011ad80f3fe55984 Reviewed-on: https://go-review.googlesource.com/7892Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
-
Dmitry Vyukov authored
False positives (var incorrectly escapes) are marked with BAD. Change-Id: I002ac5965ec6748adafa2c4c657c97d8f7ff75d0 Reviewed-on: https://go-review.googlesource.com/5311Reviewed-by:
Keith Randall <khr@golang.org>
-