- 02 Apr, 2015 11 commits
-
-
Dave Cheney authored
This change cleans up some of the uglyness introduced in 8fc73a39 by moving the gc.Use_sse into the gc.Arch struct and adjusting its zero value to be more useful. Change-Id: I26ff5d9ac57b3f25e936519e443de6583cdafa56 Reviewed-on: https://go-review.googlesource.com/7994Reviewed-by: Russ Cox <rsc@golang.org>
-
David Crawshaw authored
On arm64, CMP $foo, R is encoded as from=$foo, reg=R, not as from=$foo, to=R. The progtable entry for ACMP incorrectly described the latter form. Because of this, the registerizer was not accounting the registers used in CMP instructions and was incorrectly re-assigning those registers. This was an old problem, but it only became apparent after b115c35e (cmd/internal/gc: move cgen, regalloc, et al to portable code). Previous to this commit, the compiler used a slightly larger register set for the temps than it used for register variables. Since it had plenty registers dedicated to temps, the registers used in CMP instruction never clashed with registers assigned to register variables. Fixes #10253 Change-Id: Iedf4bd882bd59440dff310ac0f81e0f53d80d7ed Reviewed-on: https://go-review.googlesource.com/8387Reviewed-by: Aram Hăvărneanu <aram@mgk.ro> Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
-
Robert Griesemer authored
Change-Id: I9fc12b1a9b1554523e08839c1ff46c8668217ba1 Reviewed-on: https://go-review.googlesource.com/8381Reviewed-by: Alan Donovan <adonovan@google.com>
-
Michael Schaller authored
Fixes #9053 Change-Id: I7b9af3647800671f065c366a6adf9278e64ebec9 Reviewed-on: https://go-review.googlesource.com/8400Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
Currently hashmap is riddled with code that attempts to force a GC on the next allocation if checkgc is set. This no longer works as originally intended with the concurrent collector, and is apparently no longer used anyway. Remove checkgc. Change-Id: Ia6c17c405fa8821dc2e6af28d506c1133ab1ca0c Reviewed-on: https://go-review.googlesource.com/8355Reviewed-by: Keith Randall <khr@golang.org>
-
Austin Clements authored
This tries to clarify that Alloc and HeapAlloc are tied to how much freeing has been done by the sweeper. Change-Id: Id8320074bd75de791f39ec01bac99afe28052d02 Reviewed-on: https://go-review.googlesource.com/8354Reviewed-by: Rick Hudson <rlh@golang.org>
-
Mikio Hara authored
Also updates the comments on test flags. Change-Id: I8dbd90270e08728ab309ab88a3030e0f8e547175 Reviewed-on: https://go-review.googlesource.com/8394Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Robert Griesemer authored
Fixes #10243. Change-Id: I06ac53628980853faecbf1a57ff71b88098d65f2 Reviewed-on: https://go-review.googlesource.com/8382Reviewed-by: Minux Ma <minux@golang.org>
-
Josh Bleecher Snyder authored
This makes it easier to experiment with alternative implementations. While we're here, update the comments. No functional changes. Passes toolstash -cmp. Change-Id: I428535754908f0fdd7cc36c214ddb6e1e60f376e Reviewed-on: https://go-review.googlesource.com/8310Reviewed-by: Keith Randall <khr@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
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 4 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>
-