- 13 Sep, 2016 3 commits
-
-
Cherry Zhang authored
Also add assembly implementation, in case intrinsics is disabled. Change-Id: Iff0a8a8ce326651bd29f6c403f5ec08dd3629993 Reviewed-on: https://go-review.googlesource.com/28979 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Keith Randall <khr@golang.org>
-
Robert Griesemer authored
Missed in prior commit. Change-Id: Ib3a41fb4e4d41feeb28c316fe70a329c73e72379 Reviewed-on: https://go-review.googlesource.com/29088 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Robert Griesemer authored
Linker and reflect info generation (reflect.go) relies on formatting of types (tconv). The fmt.Format based approach introduces extra allocations, which matter in those cases. Resurrected sconv and tconv code from commit c85b77c2 (fmt.go only); and adjusted it slightly. The formatter-based approach is still used throughout the rest of the compiler, but reflect.go now uses the tconv method that simply returns the desired string. (The timing data below may not be accurate; I've included it only for comparison with the numbers in issue #16897). name old time/op new time/op delta Template 297ms ± 2% 288ms ± 3% -3.12% (p=0.000 n=27+29) Unicode 155ms ± 5% 150ms ± 5% -3.26% (p=0.000 n=30+30) GoTypes 1.00s ± 3% 0.95s ± 3% -4.51% (p=0.000 n=28+29) name old alloc/op new alloc/op delta Template 46.8MB ± 0% 46.5MB ± 0% -0.65% (p=0.000 n=28+30) Unicode 37.9MB ± 0% 37.8MB ± 0% -0.24% (p=0.000 n=29+30) GoTypes 144MB ± 0% 143MB ± 0% -0.68% (p=0.000 n=30+30) name old allocs/op new allocs/op delta Template 469k ± 0% 446k ± 0% -5.01% (p=0.000 n=29+30) Unicode 375k ± 0% 369k ± 0% -1.62% (p=0.000 n=30+28) GoTypes 1.47M ± 0% 1.37M ± 0% -6.29% (p=0.000 n=30+30) The code for sconv/tconv in fmt.go now closely match the code from c85b77c2 again; except that the functions are now methods. Removing the use of the bytes.Buffer in tconv and special-caseing interface{} has helped a small amount as well: name old time/op new time/op delta Template 299ms ± 3% 288ms ± 3% -3.83% (p=0.000 n=29+29) Unicode 156ms ± 5% 150ms ± 5% -3.56% (p=0.000 n=30+30) GoTypes 960ms ± 2% 954ms ± 3% -0.58% (p=0.037 n=26+29) name old alloc/op new alloc/op delta Template 46.6MB ± 0% 46.5MB ± 0% -0.22% (p=0.000 n=30+30) Unicode 37.8MB ± 0% 37.8MB ± 0% ~ (p=0.075 n=30+30) GoTypes 143MB ± 0% 143MB ± 0% -0.31% (p=0.000 n=30+30) name old allocs/op new allocs/op delta Template 447k ± 0% 446k ± 0% -0.28% (p=0.000 n=30+30) Unicode 369k ± 0% 369k ± 0% -0.03% (p=0.032 n=30+28) GoTypes 1.38M ± 0% 1.37M ± 0% -0.35% (p=0.000 n=29+30) Comparison between c85b77c2 and now (see issue #16897): name old time/op new time/op delta Template 307ms ± 4% 288ms ± 3% -6.24% (p=0.000 n=29+29) Unicode 164ms ± 4% 150ms ± 5% -8.20% (p=0.000 n=30+30) GoTypes 1.01s ± 3% 0.95s ± 3% -5.72% (p=0.000 n=30+29) name old alloc/op new alloc/op delta Template 46.8MB ± 0% 46.5MB ± 0% -0.66% (p=0.000 n=29+30) Unicode 37.8MB ± 0% 37.8MB ± 0% -0.13% (p=0.000 n=30+30) GoTypes 143MB ± 0% 143MB ± 0% -0.11% (p=0.000 n=30+30) name old allocs/op new allocs/op delta Template 444k ± 0% 446k ± 0% +0.48% (p=0.000 n=30+30) Unicode 369k ± 0% 369k ± 0% +0.09% (p=0.000 n=30+28) GoTypes 1.35M ± 0% 1.37M ± 0% +1.47% (p=0.000 n=30+30) There's still a small increase (< 1.5%) for GoTypes but pending a complete rewrite of fmt.go, this seems ok again. Fixes #16897. Change-Id: I7e0e56cd1b9f981252eded917f5752259d402354 Reviewed-on: https://go-review.googlesource.com/29087 Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
- 12 Sep, 2016 23 commits
-
-
Keith Randall authored
No need for it, we can treat calls as (mostly) normal values that take a memory and return a memory. Lowers the number of basic blocks needed to represent a function. "go test -c net/http" uses 27% fewer basic blocks. Probably doesn't affect generated code much, but should help various passes whose running time and/or space depends on the number of basic blocks. Fixes #15631 Change-Id: I0bf21e123f835e2cfa382753955a4f8bce03dfa6 Reviewed-on: https://go-review.googlesource.com/28950 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
Keith Randall authored
Don't break on line number, instead break on the actual call. This makes the test more robust to line numbering changes in the backend. A CL (28950) changed the generated code line numbering slightly. A MOVW $0, R0 instruction at the start of the function changed to line 10 (because several constant zero instructions got CSEd, and one gets picked arbitrarily). That's too fragile for a test. Change-Id: I5d6a8ef0603de7d727585004142780a527e70496 Reviewed-on: https://go-review.googlesource.com/29085 Run-TryBot: Keith Randall <khr@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Keith Randall authored
If an op generates a tuple, and part of that tuple is of flags type, then treat the op as clobbering flags. Normally this doesn't matter because we do: v1 = ADDS <int32, flags> v2 = Select0 v1 <int32> v3 = Select1 v1 <flags> And v3 will do the right clobbering of flags. But in the rare cases where we issue a tuple-with-flag op and the flag portion is dead, then we never issue a Select1. But v1 still clobbers flags, so we need to respect that. Fixes builder failure in CL 28950. Change-Id: I589089fd81aaeaaa9750bb8d85e7b10199aaa002 Reviewed-on: https://go-review.googlesource.com/29083Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Quentin Smith authored
Truncate and Round operate on absolute time, which means that Truncate(Hour) may return a time with non-zero Minute(). Document that more clearly, and remove the misleading example which suggests it is safe. Updates #16647 Change-Id: I930584ca030dd12849195d45e49ed2fb74e0c9ac Reviewed-on: https://go-review.googlesource.com/28730Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Matthew Dempsky authored
This used to be used to give special semantics to the builtin definitions of package runtime and unsafe, but none of those are relevant anymore: - The builtin runtime and unsafe packages do not risk triggering false import cycles since they no longer contain `import "runtime"`. - bimport.go never creates ODCLTYPE, so no need to special case them. - "incannedimport != 0" is only true when "importpkg != nil" anyway, so "incannedimport == 0 && importpkg == nil" is equivalent to just "importpkg == nil". Change-Id: I076f15dd705d4962e7a4c33972e304ef67e7effb Reviewed-on: https://go-review.googlesource.com/29084 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Crawshaw authored
Updates #17068 Change-Id: I61b75ec07ca8705a678677d262e11b16848cddf3 Reviewed-on: https://go-review.googlesource.com/29079 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
-
Matthew Dempsky authored
We already explicitly construct the "unsafe.Pointer" type in typeinit because we need it for Types[TUNSAFEPTR]. No point in also having it in builtin/unsafe.go if it just means (*importer).importtype needs to fix it. Change-Id: Ife8a5a73cbbe2bfcabe8b25ee4f7e0f5fd0570b4 Reviewed-on: https://go-review.googlesource.com/29082 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Change-Id: I7bfb0e5e71fc26448b0d5d3801cd6e50c8b48f5d Reviewed-on: https://go-review.googlesource.com/29078Reviewed-by: Robert Griesemer <gri@golang.org>
-
Robert Griesemer authored
No code changes. Change-Id: I7a22b3fbd6d727b276c7559f064cb0fdf385c02b Reviewed-on: https://go-review.googlesource.com/28955Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Robert Griesemer authored
- also consistently use %v instead of %s when we have a (gc) Formatter - rewrite done automatically using Formats test in -u (update) mode - manual update of format strings that were not single string constants - updated fmt.go, fmt_test.go accordingly - fmt_test: permit "%T" always Change-Id: I8f0704286aba5704600ad0c4a4484005b79b905d Reviewed-on: https://go-review.googlesource.com/28954Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Robert Griesemer authored
- only accept a-z, A-Z as format verbs - blacklist vendored math package (no need to include it) Change-Id: Ica0fcbfe712369f79dd1d3472dfd4759b8bc3752 Reviewed-on: https://go-review.googlesource.com/28953Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Robert Griesemer authored
- process all directories recursively Change-Id: I27a737013d17fd3c2cc8ae9de4722dcbe989e6e5 Reviewed-on: https://go-review.googlesource.com/28789Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
Cherry Zhang authored
Atomic ops on ARM are implemented with kernel calls, so they are not intrinsified. Change-Id: I0e7cc2e5526ae1a3d24b4b89be1bd13db071f8ef Reviewed-on: https://go-review.googlesource.com/28977 Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: David Chase <drchase@google.com>
-
Brad Fitzpatrick authored
The download page says "OS X 10.8 or later", but other pages said 10.7. Say 10.8 everywhere. Turns out Go doesn't even compile on OS X 10.7 (details in bug) and we only run builders for OS X 10.8+, which is likely why 10.7 regressed. Until recently we only had OS X 10.10 builders, even. We could run 10.7 builders, but there's basically no reason to do so, especially with 10.12 coming out imminently. Fixes #16625 Change-Id: Ida6e20fb6c54aea0a3757235b708ac1c053b8c04 Reviewed-on: https://go-review.googlesource.com/28870Reviewed-by: Chris Broadfoot <cbro@golang.org>
-
Brad Fitzpatrick authored
Fixes #16732 Change-Id: If0a7f9425cf75b9e31b3091c43cb23d6e039f568 Reviewed-on: https://go-review.googlesource.com/28782 TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
-
David Crawshaw authored
There's more work to do. Updates #17068 Change-Id: I4e16c0e8e9ac739e1fe266224c3769f6c5b2e070 Reviewed-on: https://go-review.googlesource.com/29076Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Michael Munday authored
The new SSA backend for s390x can use R0 as a general purpose register. This change modifies assembly code to either avoid using R0 entirely or explicitly set R0 to 0. R0 can still be safely used as 0 in address calculations. Change-Id: I3efa723e9ef322a91a408bd8c31768d7858526c8 Reviewed-on: https://go-review.googlesource.com/28976Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Munday authored
This commit adds the following instructions to support the new SSA backend for s390x: 32-bit operations: ADDW SUBW NEGW FNEGS Conditional moves: MOVDEQ MOVDGE MOVDGT MOVDLE MOVDLT MOVDNE Unordered branches (for floating point comparisons): BLEU BLTU Modulo operations: MODW MODWU MODD MODDU The modulo operations might be removed in a future commit because I'd like to change DIV to produce a tuple once the old backend is removed. This commit also removes uses of REGZERO from the assembler. They aren't necessary and R0 will be used as a GPR by SSA. Change-Id: I05756c1cbb74bf4a35fc492f8f0cd34b50763dc9 Reviewed-on: https://go-review.googlesource.com/29075 Run-TryBot: Michael Munday <munday@ca.ibm.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
When possible, emit static data rather than init functions for interface values. This: * cuts 32k off cmd/go * removes several error values from runtime init * cuts the size of the image/color/palette compiled package from 103k to 34k * reduces the time to build the package in #15520 from 8s to 1.5s Fixes #6289 Fixes #15528 Change-Id: I317112da17aadb180c958ea328ab380f83e640b4 Reviewed-on: https://go-review.googlesource.com/26668 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
-
David du Colombier authored
The CL 28951 added TestLookupPort_Minimal, which was failing on Plan 9, because lookupPort was not case-insensitive. Change-Id: Ic80dd29dad4ffd1c84c2590e3d5d0e588ab2e6c2 Reviewed-on: https://go-review.googlesource.com/29051 TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: David du Colombier <0intro@gmail.com> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
This list now matches the one in popt.go. Change-Id: Ib24de531cc35252f0ef276e5c6d247654b021533 Reviewed-on: https://go-review.googlesource.com/28965 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
-
Rob Pike authored
It's not intuitive, especially in the presence of subtests, so improve the explanation and extend and explain the examples. Change-Id: I6c4d3f8944b60b12311d0c0f0a8e952e7c35a9ed Reviewed-on: https://go-review.googlesource.com/28995Reviewed-by: Andrew Gerrand <adg@golang.org>
-
Dave Day authored
Remove the naked returns and goto statements from parse. Make tests more consistent in the got/want ordering, and clean up some unnecessary helper functions. Change-Id: Iaa244cb8c00dd6b42836d95448bf02caa72bfabd Reviewed-on: https://go-review.googlesource.com/28890Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
- 11 Sep, 2016 14 commits
-
-
Michal Bohuslávek authored
Change-Id: I70beb844cd6928dbfbfd8de365e0cb708e54f71e Reviewed-on: https://go-review.googlesource.com/28496 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Adam Langley <agl@golang.org>
-
Filippo Valsorda authored
Since 2a8c81ff handshake messages are not written directly to wire but buffered. If an error happens at the wrong time the alert will be written to the buffer but never flushed, causing an EOF on the client instead of a more descriptive alert. Thanks to Brendan McMillion for reporting this. Fixes #17037 Change-Id: Ie093648aa3f754f4bc61c2e98c79962005dd6aa2 Reviewed-on: https://go-review.googlesource.com/28818Reviewed-by: Adam Langley <agl@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Adam Langley <agl@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
Changes generated with eg: func before(n *gc.Node) bool { return n.Type.Recv() != nil } func after(n *gc.Node) bool { return n.IsMethod() } func before(n *gc.Node) bool { return n.Type.Recv() == nil } func after(n *gc.Node) bool { return !n.IsMethod() } Change-Id: I28e544490d17bbdc06ab11ed32464af5802ab206 Reviewed-on: https://go-review.googlesource.com/28968 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Crawshaw authored
Change-Id: I88dd0811db3a9864106def47b89848f5c8de94d4 Reviewed-on: https://go-review.googlesource.com/28545 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
David Crawshaw authored
Part of adding PIE internal linking on linux/amd64. Change-Id: I57f0596cb254cbe6569e4d4e39fe4f48437733f2 Reviewed-on: https://go-review.googlesource.com/28544Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
Part of adding PIE internal linking on linux/amd64. Change-Id: I5ce01d1974e5d4b1a8cbcc8b08157477631d8d24 Reviewed-on: https://go-review.googlesource.com/28543 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
Part of adding PIE internal linking on linux/amd64. Change-Id: I586e7c2afba349281168df5e20d2fdcb697f6e37 Reviewed-on: https://go-review.googlesource.com/28542Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
Details: http://www.airs.com/blog/archives/189 Part of adding PIE internal linking on linux/amd64. Change-Id: I8843a97f22f6f120346cccd694c7fff32f09f60b Reviewed-on: https://go-review.googlesource.com/28541Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
David Crawshaw authored
When cmd/compile generates position-independent code on linux (the -shared flag), it refers to runtime.tlsg as a TLS IE variable. When cmd/link is linking a PIE executable internally, all TLS IE relocations are generated by cmd/compile, and the variable they refer to, runtime.tlsg, is local to the binary. This means we can optimize this particular IE case to LE, and thus implement IE support when internally linking. To do this optimization in the linker, we need to rewrite the PC-relative MOVD to a constant load. This may seem like an unconscionable act born of enthusiasm, but it turns out this is standard operating procedure for linkers. GNU gold does exactly the same optimization. I spent some time reading it and documented at least one missing feature from this version. Part of adding PIE internal linking on linux/amd64. Change-Id: I1eb068d0ec774724944c6b308aa5084582ecde0b Reviewed-on: https://go-review.googlesource.com/28540Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
Fixes #17038. Change-Id: Iaf6294361050040830af1d60cd48f263223d9356 Reviewed-on: https://go-review.googlesource.com/28966 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
Updates #17065 Change-Id: I113caced6de666a9b032ab2684ece79482aa7357 Reviewed-on: https://go-review.googlesource.com/28964 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
David Crawshaw authored
This reuses the machinery built for dynamic loading of shared libraries. The significant difference with PIE is we generate dynamic relocations for known internal symbols, not just dynamic external symbols. Part of adding PIE internal linking on linux/amd64. Change-Id: I4afa24070bfb61f94f8d3648f2433d5343bac3fe Reviewed-on: https://go-review.googlesource.com/28539Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
David Crawshaw authored
When internally linking with using rel.ro sections, this segment covers the sections. To do this, move to other read-only sections, SELFROSECT and SMACHOPLT, out of the way. Part of adding PIE internal linking on linux/amd64. Change-Id: I4fb3d180e92f7e801789ab89864010faf5a2cb6d Reviewed-on: https://go-review.googlesource.com/28538 Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-
Brad Fitzpatrick authored
Adds golang.org/x/net/idna to the Go repo from the golang.org/x/net repo's git rev 7db922ba (Dec 2012). Punycode is needed for http.Get("привет.рф") etc., which will come in separate commits. Updates #13835 Change-Id: I313ed82d292737579a3ec5dcf8a9e766f2f75138 Reviewed-on: https://go-review.googlesource.com/28961 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
-