- 07 Apr, 2015 21 commits
-
-
ALTree authored
Fixed bug that caused Exp(x, y, m) ( i.e. x**y (mod m) ) to return x instead of x (mod m) when y == 1. See issue page on github for more details. Added test case Fixes #9826 Change-Id: Ibabb58275a20c4231c9474199b7f1c10e54241ce Reviewed-on: https://go-review.googlesource.com/8409Reviewed-by: Robert Griesemer <gri@golang.org>
-
Rob Pike authored
Fix the other places the slice length was being believed, and refactor the code to use a single function to unify the check. Fixes #10273. Change-Id: Ia62b25203fbe87c95d71a70ebc1db8d202eaa4a4 Reviewed-on: https://go-review.googlesource.com/8511Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Dave Cheney authored
Add OGETG to the list of ignored operations. We don't instrument the runtime package, but calls to runtime.getg can appear in other packages, for example, after inlining runtime.LockOSThread. Change-Id: I8d6e91f1f3c8fd1302b596bdead42d588c059911 Reviewed-on: https://go-review.googlesource.com/8553Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Dave Cheney authored
Add special case for OGETG which should never be instrumented. Change-Id: I7d082abb8608537f82b03362b687baf2a1d809dc Reviewed-on: https://go-review.googlesource.com/8551Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
Russ Cox authored
This more closely restores what the old C runtime did. (In C, g was an 'extern register' with the same effective implementation as in this CL.) On a late 2012 MacBookPro10,2, best of 5 old vs best of 5 new: benchmark old ns/op new ns/op delta BenchmarkBinaryTree17 4981312777 4463426605 -10.40% BenchmarkFannkuch11 3046495712 3006819428 -1.30% BenchmarkFmtFprintfEmpty 89.3 79.8 -10.64% BenchmarkFmtFprintfString 284 262 -7.75% BenchmarkFmtFprintfInt 282 262 -7.09% BenchmarkFmtFprintfIntInt 480 448 -6.67% BenchmarkFmtFprintfPrefixedInt 382 358 -6.28% BenchmarkFmtFprintfFloat 529 486 -8.13% BenchmarkFmtManyArgs 1849 1773 -4.11% BenchmarkGobDecode 12835963 11794385 -8.11% BenchmarkGobEncode 10527170 10288422 -2.27% BenchmarkGzip 436109569 438422516 +0.53% BenchmarkGunzip 110121663 109843648 -0.25% BenchmarkHTTPClientServer 81930 85446 +4.29% BenchmarkJSONEncode 24638574 24280603 -1.45% BenchmarkJSONDecode 93022423 85753546 -7.81% BenchmarkMandelbrot200 4703899 4735407 +0.67% BenchmarkGoParse 5319853 5086843 -4.38% BenchmarkRegexpMatchEasy0_32 151 151 +0.00% BenchmarkRegexpMatchEasy0_1K 452 453 +0.22% BenchmarkRegexpMatchEasy1_32 131 132 +0.76% BenchmarkRegexpMatchEasy1_1K 761 722 -5.12% BenchmarkRegexpMatchMedium_32 228 224 -1.75% BenchmarkRegexpMatchMedium_1K 63751 64296 +0.85% BenchmarkRegexpMatchHard_32 3188 3238 +1.57% BenchmarkRegexpMatchHard_1K 95396 96756 +1.43% BenchmarkRevcomp 661587262 687107364 +3.86% BenchmarkTemplate 108312598 104008540 -3.97% BenchmarkTimeParse 453 459 +1.32% BenchmarkTimeFormat 475 441 -7.16% The garbage benchmark from the benchmarks subrepo gets 2.6% faster as well. Change-Id: I320aeda332db81012688b26ffab23f6581c59cfa Reviewed-on: https://go-review.googlesource.com/8460Reviewed-by: Rick Hudson <rlh@golang.org> Run-TryBot: Rick Hudson <rlh@golang.org> Reviewed-by: Austin Clements <austin@google.com>
-
Mikio Hara authored
Using IPv6 link-local addresses to make connections between on-link nodes is useful for small distributed applications but it requires zone identifiers to distinguish a correct IP link. It's the same for transports using URI for destination discovery such as HTTP, WebSocket. This change allows Parse, ParseRequestURI functions and String method of URL to parse/return a literal IPv6 address followed by a zone identifier within a URI as described in RFC 6874. Fixes #6530. Change-Id: I2936ea65c1446994770cf2ee2c28a1c73faaa0ca Reviewed-on: https://go-review.googlesource.com/2431Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
kortschak authored
Change-Id: I6859bd9c9dba30fc5eeb9bbc1de90af67984944c Reviewed-on: https://go-review.googlesource.com/8526Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
This change deflakes TestDialerDualStackFDLeak, TestDialerDualStack, TestResolve{TCP,UDP,IP}Addr by removing external dependencies. Fixes #8764. Change-Id: I5cca0a93776cf05652e0e6a4a4ff4af392ccb885 Reviewed-on: https://go-review.googlesource.com/8485Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Alex Brainman authored
This reverts commit 9fa9f966. The change has broken darwin and netbsd builders. It needs to be tested properly. Change-Id: Id9e2d30caa8764c362c9f33890015dfc1aae0dab Reviewed-on: https://go-review.googlesource.com/8527 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
-
Brad Fitzpatrick authored
Change-Id: Iace8941c947253b1141f4194c5d2010c420ec220 Reviewed-on: https://go-review.googlesource.com/8540Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Jiong Du authored
Bug Description: When reduce db.maxOpen via db.SetMaxOpenConns, the unnecssary connections won't been released until all other connections are free. Fixes #9453 Change-Id: I9afb2e4b184139b31029ae53d7f5fd1fdb8d8d7e Reviewed-on: https://go-review.googlesource.com/2200Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Alex Brainman authored
Change-Id: I5939524f75f8fbbd67bd54b7c9e4b8c162337e9d Reviewed-on: https://go-review.googlesource.com/8525 Run-TryBot: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Alex Brainman authored
Update #4339. Change-Id: Ic1a7535562b8b824ba166777725f7ba5b9623d77 Reviewed-on: https://go-review.googlesource.com/8523 Run-TryBot: Minux Ma <minux@golang.org> Reviewed-by: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mikio Hara authored
This change tries to stop various tester goroutines at the end of each scope for avoiding interference between test cases including benchmarks. Not yet finished completely but enough to land upcoming changes to Dial functions. The rest will be fixed later. Change-Id: Ic38b8681a3a2ddbcd69ba3696f24a61d418a0346 Reviewed-on: https://go-review.googlesource.com/8398Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
Convert Embedded, Method, and Colas to bools. I believe that this is the last of the Node fields that can be trivially converted to bools. No functional changes. Passes toolstash -cmp. Change-Id: I81962ee47866596341fc60d24d6959c20cd7fc1c Reviewed-on: https://go-review.googlesource.com/8440Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Mikio Hara authored
Change-Id: I1f2d4e3b0351a7a47c3a6073833a17dbc0c7b05c Reviewed-on: https://go-review.googlesource.com/8520Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Mikio Hara authored
This change adds testHookLookIP to enable to inject DNS name to IP address mappings for Happ{y,yish,ier} Eyeballs dial testing. Change-Id: I8ac04a594e1e2bd77909528df0552889914a7790 Reviewed-on: https://go-review.googlesource.com/8399Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Michael Hudson-Doyle authored
Ian complained about these in a review and then submitted the change before I could fix them. Change-Id: I23d890db2f3648ed1003ed3d13e7247435b913e5 Reviewed-on: https://go-review.googlesource.com/8480Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
The tests in doc/progs appear to have been originally written for use with the old test driver. At some later point, they acquired their own test driver. Both ran tests in serial. This CL rewrites the current test driver in Go, runs tests concurrently, and cleans up historical artifacts from the old drivers. The primary motivation is to speed up all.bash. On my laptop, using tip, this CL reduces doc/progs test wall time from 26s to 7s. The savings will remain even when the compiler gets faster. Using Go 1.4, this CL reduces test wall time from 15s to 4s. Change-Id: Iae945a8490222beee76e8a2118a0d7956092f543 Reviewed-on: https://go-review.googlesource.com/8410Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Hudson-Doyle authored
A quick pass through link.go, mostly removing fields that are not used on the "creating a single object file" side of the fence. Change-Id: I35ba41378c2c418f7df2f2f88dce65bc64a1a45d Reviewed-on: https://go-review.googlesource.com/7672 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
Bison includes suggestions about what tokens are expected in the current state when there's only four or fewer of them. For example: syntax error: unexpected literal 2.01, expecting semicolon or newline or } This CL adds the same functionality to cmd/yacc, which fully restores the previous error message behavior from Go 1.4. Updates #9968. Change-Id: I2c1a1677c6d829a829d812c05e8813aa8829d09c Reviewed-on: https://go-review.googlesource.com/8494 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
- 06 Apr, 2015 12 commits
-
-
Josh Bleecher Snyder authored
Change-Id: Idd42e0f5c6ed55be2e153ac83022439e5272c1a7 Reviewed-on: https://go-review.googlesource.com/8444Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
David Crawshaw authored
At the moment this function does nothing, runtime initialization is still done in android.c:init_go_runtime. Fixes #10358 Change-Id: I1d762383ba61efcbcf0bbc7c77895f5c1dbf8968 Reviewed-on: https://go-review.googlesource.com/8510Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
-
Rob Pike authored
decBuffer.Drop is called using data provided by the user, don't panic if it's bogus. Fixes #10272. Change-Id: I913ae9c3c45cef509f2b8eb02d1efa87fbd52afa Reviewed-on: https://go-review.googlesource.com/8496Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Austin Clements authored
When the gctrace GODEBUG option is enabled, it will now report three heap sizes: the heap size at the beginning of the GC cycle, the heap size at the end of the GC cycle before sweeping, and marked heap size, which is the amount of heap that will be retained until the next GC cycle. Change-Id: Ie13f8a6d5c609bc9cc47c7555960ab55b37b5f1c Reviewed-on: https://go-review.googlesource.com/8430Reviewed-by: Rick Hudson <rlh@golang.org>
-
Austin Clements authored
In the STW collector, next_gc was both the heap size to trigger GC at as well as the goal heap size. Early in the concurrent collector's development, next_gc was the goal heap size, but was also used as the heap size to trigger GC at. This meant we always overshot the goal because of allocation during concurrent GC. Currently, next_gc is still the goal heap size, but we trigger concurrent GC at 7/8*GOGC heap growth. This complicates shouldtriggergc, but was necessary because of the incremental maintenance of next_gc. Now we simply compute next_gc for the next cycle during mark termination. Hence, it's now easy to take the simpler route and redefine next_gc as the heap size at which the next GC triggers. We can directly compute this with the 7/8 backoff during mark termination and shouldtriggergc can simply test if the live heap size has grown over the next_gc trigger. This will also simplify later changes once we start setting next_gc in more sophisticated ways. Change-Id: I872be4ae06b4f7a0d7f7967360a054bd36b90eea Reviewed-on: https://go-review.googlesource.com/8420Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
Currently there are two main consumers of memstats.heap_alloc: updatememstats (aka ReadMemStats) and shouldtriggergc. updatememstats recomputes heap_alloc from the ground up, so we don't need to keep heap_alloc up to date for it. shouldtriggergc wants to know how many bytes were marked by the previous GC plus how many bytes have been allocated since then, but this *isn't* what heap_alloc tracks. heap_alloc also includes objects that are not marked and haven't yet been swept. Introduce a new memstat called heap_live that actually tracks what shouldtriggergc wants to know and stop keeping heap_alloc up to date. Unlike heap_alloc, heap_live follows a simple sawtooth that drops during each mark termination and increases monotonically between GCs. heap_alloc, on the other hand, has much more complicated behavior: it may drop during sweep termination, slowly decreases from background sweeping between GCs, is roughly unaffected by allocation as long as there are unswept spans (because we sweep and allocate at the same rate), and may go up after background sweeping is done depending on the GC trigger. heap_live simplifies computing next_gc and using it to figure out when to trigger garbage collection. Currently, we guess next_gc at the end of a cycle and update it as we sweep and get a better idea of how much heap was marked. Now, since we're directly tracking how much heap is marked, we can directly compute next_gc. This also corrects bugs that could cause us to trigger GC early. Currently, in any case where sweep termination actually finds spans to sweep, heap_alloc is an overestimation of live heap, so we'll trigger GC too early. heap_live, on the other hand, is unaffected by sweeping. Change-Id: I1f96807b6ed60d4156e8173a8e68745ffc742388 Reviewed-on: https://go-review.googlesource.com/8389Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
This tracks the number of heap bytes marked by a GC cycle. We'll use this information to precisely trigger the next GC cycle. Currently this aggregates the work counter in gcWork and dispose atomically aggregates this into a global work counter. dispose happens relatively infrequently, so the contention on the global counter should be low. If this turns out to be an issue, we can reduce the number of disposes, and if it's still a problem, we can switch to per-P counters. Change-Id: I1bc377cb2e802ef61c2968602b63146d52e7f5db Reviewed-on: https://go-review.googlesource.com/8388Reviewed-by: Russ Cox <rsc@golang.org>
-
Rob Pike authored
It referred to the wrong architecture. Fixes #10355. Change-Id: I5b9d31c9f04f3106b93f94fa68c848b2518b128e Reviewed-on: https://go-review.googlesource.com/8495Reviewed-by: Dave Cheney <dave@cheney.net>
-
Robert Griesemer authored
This fixes the formerly extremely slow conversion of floating-point constants with large exponents (e.g., "const c = 1e1000000000" could stall the machine). Change-Id: I36e02158e3334d32b18743ec0c259fec77baa74f Reviewed-on: https://go-review.googlesource.com/8466Reviewed-by: Alan Donovan <adonovan@google.com>
-
Igor Dolzhikov authored
net/http, math/big, cmd/internal/gc/big: replaced errors.New(fmt.Sprintf(...)) in favour fmt.Errorf() Change-Id: I38fc0ab84a374cb9be0234e40665d7cea0e76fc1 Reviewed-on: https://go-review.googlesource.com/8402Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
As noted on recently on golang-nuts, there's currently no way to know the total size of a strings.Reader or bytes.Reader when using ReadAt on them. Most callers resort to wrapping it in an io.SectionReader to retain that information. The SizeReaderAt abstraction (an io.ReaderAt with a Size() int64 method) has proven useful as a way of expressing a concurrency-safe read-only number of bytes. As one example, see http://talks.golang.org/2013/oscon-dl.slide#49 and the rest of that presentation for its use in dl.google.com. SizeReaderAt is also used in the open source google-api-go-client, and within Google's internal codebase, where it exists in a public package created in 2013 with the package comment: "These may migrate to the standard library after we have enough experience with their feel." I'm still as happy with the SizeReaderAt abstraction and its composabilty as I was in 2013, so I'd like to make these two Readers also be SizeReaderAts. Fixes #9667 Change-Id: Ie6f145ada419dd116280472d8c029f046d5edf70 Reviewed-on: https://go-review.googlesource.com/3199Reviewed-by: Andrew Gerrand <adg@golang.org> Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Paul Marks authored
Now, only a zero deadline is interpreted as noDeadline. Any other time in the past yields an immediate timeout. TestConnectDeadlineInThePast already covers this case. We just need to un-skip it for plan9, where dialChannel is used. Change-Id: I995fd1a632c31f8004dac772c3d7c43a2a5853b0 Reviewed-on: https://go-review.googlesource.com/8435Reviewed-by: Mikio Hara <mikioh.mikioh@gmail.com>
-
- 04 Apr, 2015 5 commits
-
-
Josh Bleecher Snyder authored
The the has been deleted. Change-Id: I4290105435d4f1fd10c7014f913a3147ddeb3c2b Reviewed-on: https://go-review.googlesource.com/8469Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
Previously, a production rule like A: B C D would cause yacc to check that A and B have the same declared types, but then it would generate an implicit action of { $$ = $3 } (i.e., copy the value from D), even if A and D have different types. Fixes #10192. Change-Id: I51cfd7baa0011557141dca33b7af1d892cc6f49e Reviewed-on: https://go-review.googlesource.com/7780Reviewed-by: Russ Cox <rsc@golang.org>
-
Adam Langley authored
This is a follow on to 28f33b4a which removes one of the boolean flags and adds a test for the key-driven cipher selection. Change-Id: If2a400de807eb19110352912a9f467491cc8986c Reviewed-on: https://go-review.googlesource.com/8428Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Adam Langley <agl@golang.org> Reviewed-by: Jacob Haven <jacob@cloudflare.com>
-
Michael Hudson-Doyle authored
I wrote some code that added a function in gentext() by sticking it after Ctxt.Etextp and was very confused when this wasn't written out sometimes. It turned out that Etextp was not updated by deadcode() so if the last function is not reachable, my new function was never seen. This changes deadcode() to update Etextp to the last reachable funtion. Change-Id: Ib6a3e7c67ccfb8a15826ce9e0ef046732b5e25d2 Reviewed-on: https://go-review.googlesource.com/8233Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Robert Griesemer authored
Change-Id: Ic2d9fdae43d18255c198ae62376212bdc89b75da Reviewed-on: https://go-review.googlesource.com/8464Reviewed-by: Alan Donovan <adonovan@google.com>
-
- 03 Apr, 2015 2 commits
-
-
Rob Pike authored
Change-Id: I8e2177ffdb4b75e7f3687109311306fc02fcc8e3 Reviewed-on: https://go-review.googlesource.com/8468Reviewed-by: Rob Pike <r@golang.org>
-
Cristian Staretu authored
Obtaining the actual size of the underlying storage of the buffer can be very useful in various scenarios. Long running programs which write and read large amounts of data to buffers might have to recycle buffers in order to avoid holding onto potentially huge buffers. For example, a piece of code which buffers a lot of data in a buffer might need to release the big buffer and start again with a smaller buffer after it finished processing the huge amount of data. In cases where pools of bytes.Buffer are used, being able to check the size of the allocated data can be very useful. Instead of forking bytes.Buffer or writing new code, we can export the Cap() method. Change-Id: I79d4f0a3cff53b9419d82c8122964761e9e38566 Reviewed-on: https://go-review.googlesource.com/8342Reviewed-by: Rob Pike <r@golang.org>
-