- 03 Apr, 2015 16 commits
-
-
Rob Pike authored
Add one option, which is the motivating example, a way to control what happens when a map is indexed with a key that is not in the map. Rather than do something specific for that case, we provide a simple general option mechanism to avoid adding API if something else comes up. This general approach also makes it easy for html/template to track (and adapt, should that become important). New method: Option(option string...). The option strings are key=value pairs or just simple strings (no =). New option: missingkey: Control the behavior during execution if a map is indexed with a key that is not present in the map. "missingkey=default" or "missingkey=invalid" The default behavior: Do nothing and continue execution. If printed, the result of the index operation is the string "<no value>". "missingkey=zero" The operation returns the zero value for the map type's element. "missingkey=error" Execution stops immediately with an error. Fixes #6288. Change-Id: Id811e2b99dc05aff324d517faac113ef3c25293a Reviewed-on: https://go-review.googlesource.com/8462Reviewed-by: Robert Griesemer <gri@golang.org>
-
Matthew Dempsky authored
This CL extends cmd/yacc to expose a yyErrorVerbose variable that changes the error messages from just "syntax error" to "syntax error: unexpected ${tokname}". It also moves the yyToknames table generation to after rules have been processed so that entries can be generated for tokens that aren't mentioned in the preamble (e.g., '.' in the case of go.y). Lastly, it restores gc's old code for applying yytfix to yyToknames, except that substituting "LLITERAL" with litbuf happens in Yyerror. Fixes #9968. Change-Id: Icec188d11fdabc1dae31b8a471c35b5c7f6deec7 Reviewed-on: https://go-review.googlesource.com/8432Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Aside from removing the superfluous comment near syms, this diff is entirely mechanically generated via Emacs's query-replace-regexp to replace "^\tstruct {\n[^}]*}" with "\t". Change-Id: Ide7e4b5995f6a121b3f57415e033933ac5c7431a Reviewed-on: https://go-review.googlesource.com/8427Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org>
-
Josh Bleecher Snyder authored
Fixes #10334 Change-Id: I468230870ca2afc691ce879707dac34e513e1b9e Reviewed-on: https://go-review.googlesource.com/8442Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
David Crawshaw authored
These registers are not available for programs to use. Prior to this change, the compiler would crash attempting to use ZR as a general purpose register. Other programs would compile but on execution would overwrite the G register and cause havoc. Fixes linux/arm64 build. Fixes #10304 Fixes #10320 Change-Id: I5cf51d3b77cfe3db7dd6377324950cafb02f8d8b Reviewed-on: https://go-review.googlesource.com/8456Reviewed-by: Minux Ma <minux@golang.org>
-
Robert Griesemer authored
The original implementation used 16 int "words" but only 29 bits per word for a total of 16*29 = 464 bits, with a space consumption of 16*64 = 1024 bits on a 64 bit machine. Switching to 512 bits increases precision while still using (in the worst case) half the amount of memory per mp value on a 64 bit machine. Also: Decreased permitted number of least-significant mantissa bits which may be incorrect when considering if a precise floating-point constant is an integer from 29 to 16 bits. Change-Id: Iee9287056f0e9aa4f06ceac0724ff4674f710c53 Reviewed-on: https://go-review.googlesource.com/8429Reviewed-by: Russ Cox <rsc@golang.org>
-
Josh Bleecher Snyder authored
Change-Id: I035e6f1cd159644db5eeef83056b9c34c401e60f Reviewed-on: https://go-review.googlesource.com/8441Reviewed-by: Robert Griesemer <gri@golang.org>
-
Russ Cox authored
I first prototyped this change in Sept 2011, and I discarded it because it made no difference in the obvious benchmark loop. It still makes no difference in the obvious benchmark loop, but in a less obvious one, doing some extra computation around the calls to Sqrt, not making the call does have a significant effect. benchmark old ns/op new ns/op delta BenchmarkSqrt 4.56 4.57 +0.22% BenchmarkSqrtIndirect 4.56 4.56 +0.00% BenchmarkSqrtGo 69.4 69.4 +0.00% BenchmarkSqrtPrime 4417 3647 -17.43% This is a warmup for using hardware expansions for some calls to 1-line assembly routines in the runtime (for example getg). Change-Id: Ie66be23f8c09d0f7dc4ddd7ca8a93cfce28f55a4 Reviewed-on: https://go-review.googlesource.com/8356Reviewed-by: Rob Pike <r@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Russ Cox authored
Followup to CL 7728. Change-Id: Ibb0fed7816aab459a94720b139a7737fad65bea2 Reviewed-on: https://go-review.googlesource.com/8425Reviewed-by: Austin Clements <austin@google.com>
-
Shenghou Ma authored
No test cases yet, but I found this while double checking the proginfo table. Change-Id: Ib59675c117c676c1298bcab8765ca6a8fd234de8 Reviewed-on: https://go-review.googlesource.com/8431Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Aram Hăvărneanu <aram@mgk.ro>
-
Ian Lance Taylor authored
I guess we need more builders. Change-Id: I309e3df7608b9eef9339196fdc50dedf5f9422e4 Reviewed-on: https://go-review.googlesource.com/8434Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com> Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Minux Ma <minux@golang.org>
-
Mikio Hara authored
This change makes use of the socktest package instead of the non-thread safe variable syscall.SocketDisableIPv6 for simulating unreachable external networks. Also adds -ipv4 flag, -ipv6 flag already exists, as a control knob for testing on each of IPv4-only, IPv6-only and dual IP stack kernels. Fixes #7687. Change-Id: I82002007fd526e8cf4de207f935e721df049a22f Reviewed-on: https://go-review.googlesource.com/8390Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Srdjan Petrovic authored
This is Part 2 of the change, see Part 1 here: in https://go-review.googlesource.com/#/c/7692/ Suggested by iant@, we use the library initialization entry point to: - create a new OS thread and run the "regular" runtime init stack on that thread - return immediately from the main (i.e., loader) thread - at the first CGO invocation, we wait for the runtime initialization to complete. The above mechanism is implemented only on linux_amd64. Next step is to support it on linux_arm. Other platforms don't yet support shared library compiling/linking, but we intend to use the same strategy there as well. Change-Id: Ib2c81b1b83bee837134084b75a3beecfb8de6bf4 Reviewed-on: https://go-review.googlesource.com/8094 Run-TryBot: Srdjan Petrovic <spetrovic@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Mikio Hara authored
This change makes TestDialTimeoutFDLeak work on almost all the supported platforms. Updates #4384. Change-Id: I3608f438003003f9b7cfa17c9e5fe7077700fd60 Reviewed-on: https://go-review.googlesource.com/8392Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Jacob H. Haven authored
A CSR containing challengePassword or unstructuredName Attributes (included in default OpenSSL prompts) would break ASN.1 parsing. This updates the parsing structures to allow but then ignore these fields. See this CFSSL issue: https://github.com/cloudflare/cfssl/issues/115 Change-Id: I26a3bf1794589d27e6e763da88ae32276f0170c7 Reviewed-on: https://go-review.googlesource.com/8160Reviewed-by: Adam Langley <agl@golang.org>
-
Mikio Hara authored
It's a single, package-wide init function specified for the net package. Change-Id: Id5894d65e1a92297cc16803cc5e4d4eef0b4b099 Reviewed-on: https://go-review.googlesource.com/8391Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 02 Apr, 2015 21 commits
-
-
Austin Clements authored
This tracks both total CPU time used by GC and the total time available to all Ps since the beginning of the program and uses this to derive a cumulative CPU usage percent for the gctrace line. Change-Id: Ica85372b8dd45f7621909b325d5ac713a9b0d015 Reviewed-on: https://go-review.googlesource.com/8350Reviewed-by: Russ Cox <rsc@golang.org>
-
Austin Clements authored
GODEBUG=gctrace=1 turns on a per-GC cycle trace line. The current line is left over from the STW garbage collector and includes a lot of information that is no longer meaningful for the concurrent GC and doesn't include a lot of information that is important. Replace this line with a new line designed for the new garbage collector. This new line is focused more on helping the user understand the impact of the garbage collector on their program and less on telling us, the runtime developers, everything that's happening inside GC. It's designed to fit in 80 columns and intentionally omit some potentially useful things that were in the old line. We might want a "verbose" mode that adds information for us. We'll be able to further simplify the line once we eliminate the STW around enabling the write barrier. Then we'll have just one STW phase, one concurrent phase, and one more STW phase, so we'll be able to reduce the number of times from five to three. Change-Id: Icc30939fe4576fb4491b4eac811649395727aa2a Reviewed-on: https://go-review.googlesource.com/8208Reviewed-by: Russ Cox <rsc@golang.org>
-
Jacob H. Haven authored
This change replaces all direct ECDSA/RSA sign and decrypt operations with calls through the crypto.Signer and crypto.Decrypter interfaces. This is a follow-up to https://go-review.googlesource.com/#/c/3900/ which added crypto.Decrypter and implemented it for RSA. Change-Id: Ie0f3928448b285f329efcd3a93ca3fd5e3b3e42d Reviewed-on: https://go-review.googlesource.com/7804Reviewed-by: Adam Langley <agl@golang.org>
-
Robert Griesemer authored
Also: - introduce Mpprec (remove old constants) - no semantic changes Change-Id: Ie0e77e8e09bd68e09bcf8747a3d875270e736081 Reviewed-on: https://go-review.googlesource.com/8171Reviewed-by: Russ Cox <rsc@golang.org>
-
Robert Griesemer authored
All multi-precision arithmetic is now based on math/big. - passes all.bash - added test cases for fixed bugs Fixes #7740. Fixes #6866. Change-Id: I67268b91766970ced3b928260053ccdce8753d58 Reviewed-on: https://go-review.googlesource.com/7912Reviewed-by: Russ Cox <rsc@golang.org>
-
Robert Griesemer authored
Change-Id: Iab9a1f814acd53d5707bfcd6c3f9616c79fa7789 Reviewed-on: https://go-review.googlesource.com/7858Reviewed-by: Russ Cox <rsc@golang.org>
-
Robert Griesemer authored
Change-Id: I04c2bd18a47cc775c78d074fe521cef2b0d6e7f0 Reviewed-on: https://go-review.googlesource.com/8426 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Matthew Dempsky authored
This restores go.errors from before 3af0d791 along with a fixed up version of the bisonerrors AWK script, translated to Go. However, this means Yyerror needs access to the yacc parser's state, which is currently private. To workaround that, add a "state" accessor method like the Lookahead method added in c7fa3c62. Update issue #9968. Change-Id: Ib868789e92fdb7d135442120a392457923e50121 Reviewed-on: https://go-review.googlesource.com/7270Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Robert Griesemer authored
This is vendored copy of the pure-Go version of math/big. To update, run vendor.bash in place. This will permit the use of the new big.Float functionality in gc (which is not available in 1.4, the version used for bootstrapping). Change-Id: I4dcdea875d54710005ca3fdea2e0e30422b1b46d Reviewed-on: https://go-review.googlesource.com/7857Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-
Matthew Dempsky authored
Yacc generates a bunch of global variables of the form var yyFoo = []int{...} where yyFoo is never subsequently modified to point to a different slice. Since these variables are implicitly compiled as var yyFoo = ([...]int{...})[:] anyway, by simply converting them all to var yyFoo = [...]int{...} we save sizeof(sliceStruct) bytes of data memory for each variable and also make len(yyFoo) into compile-time constant expressions, which shaves some bytes off text size: $ size 6g.before 6g.after text data bss dec hex filename 4598019 605968 342700 5546687 54a2bf 6g.before 4597810 605552 342700 5546062 54a04e 6g.after Change-Id: I53c7aa6efdb2d52738013e9d337a59afbfcb2494 Reviewed-on: https://go-review.googlesource.com/7520 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Dave Cheney <dave@cheney.net> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by: Russ Cox <rsc@golang.org>
-
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 3 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>
-