- 28 Feb, 2016 4 commits
-
-
Caio Marcelo de Oliveira Filho authored
Moves the implementation of RunBenchmarks to a non-exported function that returns whether the execution was OK, and uses that to identify failure in benchmarks.The exported function is kept for compatibility. Like before, benchmarks will only be executed if tests and examples pass. The PASS message will not be printed if there was a failure in a benchmark. Example output BenchmarkThatCallsFatal-8 --- FAIL: BenchmarkThatCallsFatal-8 x_test.go:6: called by benchmark FAIL exit status 1 FAIL _/.../src/cmd/go/testdata/src/benchfatal 0.009s Fixes #14307. Change-Id: I6f3ddadc7da8a250763168cc099ae8b325a79602 Reviewed-on: https://go-review.googlesource.com/19889Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Ian Lance Taylor authored
When Go code is used with C code compiled with -fsanitize=thread, adds thread sanitizer calls so that correctly synchronized Go code does not cause spurious failure reports from the thread sanitizer. This may cause some false negatives, but for the thread sanitizer what is most important is avoiding false positives. Change-Id: If670e4a6f2874c7a2be2ff7db8728c6036340a52 Reviewed-on: https://go-review.googlesource.com/17421Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
-
kortschak authored
Change-Id: If03185a21e088c9b383a82c14d649805f00c8042 Reviewed-on: https://go-review.googlesource.com/20000Reviewed-by: Minux Ma <minux@golang.org>
-
Austin Clements authored
Commit a5c3bbe0 modified adjustpointers to use *uintptrs instead of *unsafe.Pointers for manipulating stack pointers for clarity and to eliminate the unnecessary write barrier when writing the updated stack pointer. This commit makes the equivalent change to adjustpointer. Change-Id: I6dc309590b298bdd86ecdc9737db848d6786c3f7 Reviewed-on: https://go-review.googlesource.com/17148Reviewed-by: Rick Hudson <rlh@golang.org> Run-TryBot: Austin Clements <austin@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
- 27 Feb, 2016 11 commits
-
-
Ian Lance Taylor authored
Fixes #14483. Change-Id: I0cddfe27fd8d00ba85659d0b618410e39ebf45cb Reviewed-on: https://go-review.googlesource.com/19860Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
Update #14473. Change-Id: Iba1ecf42d9ab5a93144941439d5cc6b0b4f4a3ac Reviewed-on: https://go-review.googlesource.com/19992Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Martin Möhrmann authored
Once upon a time fmt did use bytes.Buffer for its buffer. The buffer write methods still mimic the bytes.Buffer signatures. The current code depends on manipulating the buffer []bytes array directly which makes going back to bytes.Buffer by only changing the type of buffer impossible. Since type buffer is not exported the methods can be simplified to the needs of fmt. This saves space and avoids unnecessary overhead. Use WriteString instead of Write for known inputs since WriteString is faster than Write to append the same data. This also saves space in the binary. Remove the add method from Printer and depending on the data to be written use WriteRune or WriteByte directly instead. In total makes the go binary around 4 kilobyte smaller. name old time/op new time/op delta SprintfEmpty-2 24.1ns ± 3% 23.8ns ± 1% -1.14% (p=0.000 n=20+20) SprintfString-2 114ns ± 2% 114ns ± 4% ~ (p=0.558 n=20+19) SprintfInt-2 116ns ± 9% 118ns ± 7% ~ (p=0.086 n=20+20) SprintfIntInt-2 195ns ± 6% 193ns ± 5% ~ (p=0.345 n=20+19) SprintfPrefixedInt-2 251ns ±16% 241ns ± 9% -3.69% (p=0.024 n=20+19) SprintfFloat-2 203ns ± 4% 205ns ± 5% ~ (p=0.153 n=20+20) SprintfBoolean-2 101ns ± 7% 96ns ±11% -5.23% (p=0.005 n=19+20) ManyArgs-2 651ns ± 7% 628ns ± 7% -3.44% (p=0.002 n=20+20) FprintInt-2 164ns ± 2% 158ns ± 2% -3.62% (p=0.000 n=20+18) FprintfBytes-2 215ns ± 1% 216ns ± 1% +0.58% (p=0.000 n=20+20) FprintIntNoAlloc-2 115ns ± 0% 112ns ± 0% -2.61% (p=0.000 n=20+20) ScanInts-2 700µs ± 0% 702µs ± 1% +0.38% (p=0.000 n=18+20) ScanRecursiveInt-2 82.7ms ± 0% 82.7ms ± 0% ~ (p=0.820 n=20+20) Change-Id: I0409eb170b8a26d9f4eb271f6292e5d39faf2d8b Reviewed-on: https://go-review.googlesource.com/19955Reviewed-by: Rob Pike <r@golang.org>
-
Justin Nuß authored
The current implementations of the AppendQuote functions use quoteWith (through Quote) for quoting the given value and appends the returned string to the dst byte slice. quoteWith internally creates a byte slice on each call which gets converted to a string in Quote. This means the AppendQuote functions always allocates a new byte slice and a string only to append them to an existing byte slice. In the case of (Append)QuoteRune the string passed to quoteWith will also needs to be allocated from a rune first. Split quoteWith into two functions (quoteWith and appendQuotedWith) and replace the call to Quote inside AppendQuote with appendQuotedWith, which appends directly to the byte slice passed to AppendQuote and also avoids the []byte->string conversion. Also introduce the 2 functions quoteRuneWith and appendQuotedRuneWith that work the same way as quoteWith and appendQuotedWith, but take a single rune instead of a string, to avoid allocating a new string when appending a single rune, and use them in (Append)QuoteRune. Also update the ToASCII and ToGraphic variants to use the new functions. Benchmark results: benchmark old ns/op new ns/op delta BenchmarkQuote-8 428 503 +17.52% BenchmarkQuoteRune-8 148 105 -29.05% BenchmarkAppendQuote-8 435 307 -29.43% BenchmarkAppendQuoteRune-8 158 23.5 -85.13% benchmark old allocs new allocs delta BenchmarkQuote-8 3 3 +0.00% BenchmarkQuoteRune-8 3 2 -33.33% BenchmarkAppendQuote-8 3 0 -100.00% BenchmarkAppendQuoteRune-8 3 0 -100.00% benchmark old bytes new bytes delta BenchmarkQuote-8 144 144 +0.00% BenchmarkQuoteRune-8 16 16 +0.00% BenchmarkAppendQuote-8 144 0 -100.00% BenchmarkAppendQuoteRune-8 16 0 -100.00% Change-Id: I77c148d5c7242f1b0edbbeeea184878abb51a522 Reviewed-on: https://go-review.googlesource.com/18962 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Mikio Hara authored
This is a followup change to #13111 for filtering out IPv6 literals and absolute FQDNs from being as the SNI values. Updates #13111. Fixes #14404. Change-Id: I09ab8d2a9153d9a92147e57ca141f2e97ddcef6e Reviewed-on: https://go-review.googlesource.com/19704Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Martin Möhrmann authored
Move the decision if zero padding is allowed to doPrintf where the other formatting decisions are made. Removes some dead code for negative f.wid that was never used due to f.wid always being positive and f.minus deciding if left or right padding should be used. New padding code writes directly into the buffer and is as fast as the old version but avoids the cost of needing package init. name old time/op new time/op delta SprintfPadding-2 246ns ± 5% 245ns ± 4% ~ (p=0.345 n=50+47) Change-Id: I7dfddbac8e328f4ef0cdee8fafc0d06c784b2711 Reviewed-on: https://go-review.googlesource.com/19957 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Matthew Dempsky authored
Accidentally added in https://golang.org/cl/19968. Change-Id: Id70917c4d1f69db149688d797c90a19557d16f72 Reviewed-on: https://go-review.googlesource.com/19985Reviewed-by: Minux Ma <minux@golang.org>
-
David du Colombier authored
Plan 9 doesn't define main, so the INITENTRY symbol remains with the SXREF type, which leads Entryvalue to fail on "entry not text: main". Fixes #14536. Change-Id: Id9b7d61e5c2202aba3ec9cd52f5b56e0a38f7c47 Reviewed-on: https://go-review.googlesource.com/19973 Run-TryBot: David du Colombier <0intro@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Change-Id: I6ac3d11ee8896f636235fe10c2556f93584019b5 Reviewed-on: https://go-review.googlesource.com/19984Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matthew Dempsky authored
Split the syms array into separate basicTypes and builtinFuncs arrays. Also, in lexfini, instead of duplicating the code from lexinit to declare the builtin identifiers in the user package, just import them from builtinpkg like how importdot works. Change-Id: Ic3b3b454627a46f7bd5f290d0e31443e659d431f Reviewed-on: https://go-review.googlesource.com/19936 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org>
-
Ian Lance Taylor authored
Introduces a new types Nodes that can be used to replace NodeList. Update #14473. Change-Id: Id77c5dcae0cbeb898ba12dd46bd400aad408871c Reviewed-on: https://go-review.googlesource.com/19969Reviewed-by: David Crawshaw <crawshaw@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
- 26 Feb, 2016 25 commits
-
-
Martin Möhrmann authored
All io.Reader that are passed to newScanState in all the standard library tests that implement io.RuneReader also implement io.RuneScanner. Do not check on each call ScanState's UnreadRune that the used RuneReader also implements the UnreadRune method by using a private interface. Instead require the used Reader to implement the public RuneScanner interface. The extra implementation logic for UnreadRune is removed from ScanState. Instead the readRune wrapper is extended to implement UnreadRune for the RuneScanner interface. If the Reader passed to newScanstate does not implement RuneScanner the readRune wrapper is used to implement the missing functionality. Note that a RuneReader that does not implement RuneScanner will also be wrapped by runeRead which was not the case before. Performance with the readRune wrapper is better than without before. Add benchmark to compare performance with and without using the readRune wrapper. name old time/op new time/op delta ScanInts-2 704µs ± 0% 615µs ± 1% -12.73% (p=0.000 n=20+20) ScanRecursiveInt-2 82.6ms ± 0% 51.4ms ± 0% -37.71% (p=0.000 n=20+20) ScanRecursiveIntReaderWrapper-2 85.1ms ± 0% 52.4ms ± 0% -38.36% (p=0.000 n=20+20) Change-Id: I8c6e85db9b87a8171caab12f020b6e256b498e81 Reviewed-on: https://go-review.googlesource.com/19895 Run-TryBot: Rob Pike <r@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rob Pike <r@golang.org>
-
Josh Bleecher Snyder authored
Pull all alg-related code into its own file. subr.go is a Hobbesian Leviathan. 100% code movement. Cleanup and improvements to follow. Change-Id: Ib9c8f66563fdda90c6e8cf646d366a9487a4648d Reviewed-on: https://go-review.googlesource.com/19980Reviewed-by: Dave Cheney <dave@cheney.net> Run-TryBot: Dave Cheney <dave@cheney.net> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
While here, merge LINC and LDEC into LINCOP. Fixes #13244. Change-Id: I8ea426f986d60d35c3b1a80c056a7aa49d22d802 Reviewed-on: https://go-review.googlesource.com/19928Reviewed-by: Robert Griesemer <gri@golang.org>
-
Ian Lance Taylor authored
Save a few bytes in Func. Passes toolstash -cmp. Update #14473. Change-Id: I824fa7d5cb2d93f6f59938ccd86114abcbea0043 Reviewed-on: https://go-review.googlesource.com/19968Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Ian Lance Taylor authored
Passes toolstash -cmp. Update #14473. Change-Id: I7285175b1992a29033fdc9e81d6f30545e5cc30d Reviewed-on: https://go-review.googlesource.com/19967Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
The old implementation assumed that all memory runs were terminated by non-memory fields. This isn't necessarily so. They might be terminated by padding or blank fields. For example, given type T struct { a int64 b byte c, d, e int64 } the old implementation did a memory comparison on a+b, on c, and on d+e. Instead, check for memory runs at the beginning of every round. This now generates a memory comparison on a+b and on c+d+e. Also, delete some now-dead code. Change-Id: I66bffb111420adf6919bd708e4fb3a1e1f07fadd Reviewed-on: https://go-review.googlesource.com/19841Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: Ifae69e5ba673f01da3dfc1fd30cdc51873481623 Reviewed-on: https://go-review.googlesource.com/19840Reviewed-by: David Crawshaw <crawshaw@golang.org>
-
Robert Griesemer authored
By using a Pragma bit set (8 bits) rather than 8 booleans, also reduce Func type size by 8 bytes (208B -> 200B on 64bit platforms, 116B -> 108B on 32bit platforms). Change-Id: Ibb7e1f8c418a0b5bc6ff813cbdde7bc6f0013b5a Reviewed-on: https://go-review.googlesource.com/19966Reviewed-by: Dave Cheney <dave@cheney.net>
-
Matthew Dempsky authored
Instead add a dedicated keywords map for use in lexer.ident and drop Sym's Lexical field. Change-Id: Ia668e65499035ff7167fabbbd0cd027102b21231 Reviewed-on: https://go-review.googlesource.com/19935Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
If a general comment contains multiple newline characters, we can't simply unread one and then re-lex it via the general whitespace lexing phase, because then we'll reset lineno to the line before the "*/" marker, rather than keeping it where we found the "/*" marker. Also, for processing imports, call importfile before advancing the lexer with p.next(), so that lineno reflects the line where we found the import path, and not the token afterwards. Fixes #14520. Change-Id: I785a2d83d632280113d4b757de0d57c88ba2caf4 Reviewed-on: https://go-review.googlesource.com/19934Reviewed-by: Robert Griesemer <gri@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
The new TestDashS was leaving a dreg "test" file in cmd/compile/internal/gc. Create it in the temporary directory instead. Also change path.Join to filepath.Join throughout global_test.go. Change-Id: Ib7707fada2b3ab5e8abc2ba74e4c402821c1408b Reviewed-on: https://go-review.googlesource.com/19965 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Ian Lance Taylor authored
A slice uses less memory than a NodeList, and has better memory locality when walking the list. This uncovered a tricky case involving closures: the escape analysis pass when run on a closure was appending to the Dcl list of the OCLOSURE rather than the ODCLFUNC. This happened to work because they shared the same NodeList. Fixed with a change to addrescapes, and a check to Tempname to catch any recurrences. This removes the last use of the listsort function outside of tests. I'll send a separate CL to remove it. Unfortunately, while this passes all tests, it does not pass toolstash -cmp. The problem is that cmpstackvarlt does not fully determine the sort order, and the change from listsort to sort.Sort, while generally desirable, produces a different ordering. I could stage this by first making cmpstackvarlt fully determined, but no matter what toolstash -cmp is going to break at some point. In my casual testing the compiler is 2.2% faster. Update #14473. Change-Id: I367d66daa4ec73ed95c14c66ccda3a2133ad95d5 Reviewed-on: https://go-review.googlesource.com/19919Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Matthew Dempsky authored
The Go toolchain stopped creating them before Go 1.3, so no point in worrying about them today. History: - Git commit 250a0919 added cmd/ar, which wrote Plan 9 __.SYMDEF entries into archive files. - golang.org/cl/6500117 renamed __.SYMDEF to __.GOSYMDEF. (Notably, the commit message suggests users need to use Go nm to read symbols, but even back then the toolchain did nothing with __.(GO)?SYMDEF files except skip over them.) - golang.org/cl/42880043 added the -pack flag to cmd/gc to directly produce archives by the Go compiler, and did not write __.GOSYMDEF entries. - golang.org/cl/52310044 rewrote cmd/pack in Go, and removed support for producing __.GOSYMDEF entries. Change-Id: I255edf40d0d3690e3447e488039fcdef73c6d6b1 Reviewed-on: https://go-review.googlesource.com/19924 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Richard Miller authored
Atomic load/store/add/swap routines, as for other ARM platforms, but with DMB inserted for load/store (assuming that "atomic" also implies acquire/release memory ordering). Change-Id: I70a283d8f0ae61a66432998ce59eac76fd940c67 Reviewed-on: https://go-review.googlesource.com/18965Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Caio Marcelo de Oliveira Filho authored
Change-Id: Ie915dc2fc32a31d31f566ac931ccecb506559645 Reviewed-on: https://go-review.googlesource.com/19888Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matt T. Proud authored
This change adds support in testing/quick to generate maps and slices in additional states: (1.) nil maps (2.) nil slices (3.) empty slice occupancy: `len(s) == 0 && s != nil` (4.) partial slice occupancy: `len(s) < cap(s) && s != nil` (5.) full slice occupancy: `len(s) == cap(s) && s != nil` Prior to this, only #5 was ever generated, thereby not sufficiently exercising all of the fuzzable code path outcomes. This change depends on https://go-review.googlesource.com/#/c/17499/. Change-Id: I9343c475cefbd72ffc5237281826465c25872206 Reviewed-on: https://go-review.googlesource.com/16470Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Richard Miller authored
Implementation closely follows plan9_386 version. Change-Id: Ifb76e001fb5664e6a23541cf4768d7f11b2be68b Reviewed-on: https://go-review.googlesource.com/18967Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael McConville authored
Go already supports Linux's getrandom, which is a slightly modified version of getentropy. getentropy was added in OpenBSD 5.6. All supported versions of OpenBSD include it so, unlike with Linux and getrandom, we don't need to test for its presence. Fixes #13785. Change-Id: Ib536b96675f257cd8c5de1e3a36165e15c9abac9 Reviewed-on: https://go-review.googlesource.com/18219 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Jeff R. Allen authored
Single quotes to not expand variables inside of them. Change-Id: I4a0622c0aebfc1c3f9d299f93f7a8253893b5858 Reviewed-on: https://go-review.googlesource.com/13661Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Keith Randall authored
We can't drop Prog entries when we want to print disassembly. Added a test for -S. Fixes #14515 Change-Id: I44c72f70f7a3919acc01c559d30335d26669e76f Reviewed-on: https://go-review.googlesource.com/19930Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Ian Lance Taylor authored
Fixes #14519. Change-Id: I8f78f67a463e6467e09df90446f7ebd28789d6c9 Reviewed-on: https://go-review.googlesource.com/19933Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
Derek Shockey authored
Looks like this was intended to match a literal period to restrict this to `.go` files, but in POSIX grep, the unescaped period matches any character. Change-Id: I20e00323baa9e9631792eff5035966297665bbee Reviewed-on: https://go-review.googlesource.com/19880Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Caio Marcelo de Oliveira Filho authored
Check the function types before compiling the tests. Extend the same approach taken by the type check used for TestMain function. To keep existing behavior, wrong arguments for TestMain are ignored instead of causing an error. Fixes #14226. Change-Id: I488a2555cddb273d35c1a8c4645bb5435c9eb91d Reviewed-on: https://go-review.googlesource.com/19763 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Dmitry Vyukov authored
In normal mode the test runs for 9+ seconds on my machine (48 cores). But the real problem is race mode, in race mode it hits 10m test timeout. Reduce test size in short mode. Now it runs for 100ms without race. Change-Id: I9493a0e84f630b930af8f958e2920025df37c268 Reviewed-on: https://go-review.googlesource.com/19956Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Rick Arnold authored
Previously, RawQuery was used to indicate the presence of a query string in url.URL. However, this approach was not able to differentiate between URLs that have no query string at all (http://foo.bar/) and those that have a query with no values (http://foo.bar/?). Add a ForceQuery field to indicate the latter form of URL and use it in URL.String to create a matching URL with a trailing '?'. Fixes #13488 Change-Id: Ifac663c73d35759bc6c33a00f84ab116b9b81684 Reviewed-on: https://go-review.googlesource.com/19931Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-