- 14 Mar, 2016 22 commits
-
-
Emmanuel Odeke authored
Change-Id: I93e73f16474b4b31f7097af2f9479822dfc34c5c Reviewed-on: https://go-review.googlesource.com/20678Reviewed-by:
Adam Langley <agl@golang.org>
-
Matthew Dempsky authored
Currently, the only use for this is on the Left side of OKEY nodes within struct literals. esc and fmt only care so they can recognize that the ONAME nodes are actually field names, which need special handling. sinit additionally needs to know the field's offset within the struct, which we can provide via Xoffset. Passes toolstash/buildall. Change-Id: I362d965e161f4d80fcd9c9bae0dfacc657dc0b29 Reviewed-on: https://go-review.googlesource.com/20676Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by:
Robert Griesemer <gri@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: Id16009ef3ef1173eafe0f0c578dbf325b61aab3c Reviewed-on: https://go-review.googlesource.com/20674 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by:
Dave Cheney <dave@cheney.net> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Matthew Dempsky authored
Switch TSTRUCT and TINTER to use Fields instead of Type, which wrings out the remaining few direct uses of the latter. Preparation for converting fields to use a separate "Field" type. Passes toolstash/buildall. Change-Id: I5a2ea7e159d0dde1be2c9afafc10a8f739d95743 Reviewed-on: https://go-review.googlesource.com/20675 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Reviewed-by:
Robert Griesemer <gri@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: Iaa0d78c2552efb29e67f6c99c7287f8566027add Reviewed-on: https://go-review.googlesource.com/20673Reviewed-by:
Matthew Dempsky <mdempsky@google.com>
-
Josh Bleecher Snyder authored
Follow-up to CL 20645. Passes toolstash -cmp. Change-Id: Idc63c41b2be2d52e3a6ac59b3a12eb41aa2efbed Reviewed-on: https://go-review.googlesource.com/20670Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
Change-Id: I434f881c10dec41a802641db8873abf1353beba2 Reviewed-on: https://go-review.googlesource.com/20671 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
String symbols' names used to appear in the final binary. Using a string's contents as it's symbol's name was a thus a bad idea if the string's name was long. Recent improvements by crawshaw have changed that. Instead of placing long strings behind opaque names in local packages, place them in the global string package and make them content-addressable. Symbol names still occur in the object files, so use a hash to avoid needless length there. Reduces the size of cmd/go by 30k. Change-Id: Ifdbbaf47bf44352418c90ddd903d5106e48db4f1 Reviewed-on: https://go-review.googlesource.com/20524 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
David Crawshaw <crawshaw@golang.org>
-
Alexandru Moșoi authored
decompose-builtin pass requires an opt pass, but -N disables late-opt, the only opt pass (out of two) that happens after decompose-builtin. This CL enables both 'opt' and 'late opt' passes. The extra compile time for 'late opt' in negligible since most rewrites were already done in the first 'opt' (also measured before). We should put some effort in splitting the generic rules into required and optional. Also update generic.rules comments about lowering of StringMake and SliceMake. Tested with GO_GCFLAGS=-N ./all.bash Change-Id: I92999681aaa02587b6dc6e32ce997a91f1fc9499 Reviewed-on: https://go-review.googlesource.com/20682 Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Michael Pratt authored
Parts of the SSA compiler in package gc contain amd64-specific code, most notably Prog generation. Move this code into package amd64, so that other architectures can be added more easily. In package gc, this change is just moving code. There are no functional changes or even any larger structural changes beyond changing function names (mostly for export). In the cmd/compile/internal/ssa/gen tool, more information is included in arch to remove the AMD64-specific behavior in the main portion of the tool. The generated opGen.go is identical. Change-Id: I8eb37c6e6df6de1b65fa7dab6f3bc32c29daf643 Reviewed-on: https://go-review.googlesource.com/20609Reviewed-by:
Keith Randall <khr@golang.org> Reviewed-by:
Michael Pratt <mpratt@google.com> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Austin Clements authored
In particular, write down the rules for stack ownership because the details of this are about to get very important with concurrent stack shrinking. (Interestingly, the details don't actually change, but anything that's currently skating on thin ice is likely to fall through.) Fox #12967. Change-Id: I561e2610e864295e9faba07717a934aabefcaab9 Reviewed-on: https://go-review.googlesource.com/20034Reviewed-by:
Rick Hudson <rlh@golang.org>
-
Austin Clements authored
Currently copystack adjusts pointers in the old stack and then copies the adjusted stack to the new stack. In addition to being generally confusing, this is going to make concurrent stack shrinking harder. Switch this around so that we first copy the stack and then adjust pointers on the new stack (never writing to the old stack). This reprises CL 15996, but takes a different and simpler approach. CL 15996 still walked the old stack while adjusting pointers on the new stack. In this CL, we adjust auxiliary structures before walking the stack, so we can just walk the new stack. For #12967. Change-Id: I94fa86f823ba9ee478e73b2ba509eed3361c43df Reviewed-on: https://go-review.googlesource.com/20033Reviewed-by:
Rick Hudson <rlh@golang.org>
-
Austin Clements authored
In particular, document that *sel is on the stack no matter what. Change-Id: I1c264215e026c27721b13eedae73ec845066cdec Reviewed-on: https://go-review.googlesource.com/20032Reviewed-by:
Rick Hudson <rlh@golang.org>
-
Richard Miller authored
Fixes #14772 Change-Id: I32f2b6b74de28be406b1306364bc07620a453962 Reviewed-on: https://go-review.googlesource.com/20680Reviewed-by:
David du Colombier <0intro@gmail.com> Reviewed-by:
Minux Ma <minux@golang.org> Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Todd Neal authored
Line numbers are always int32, so the Warnl function should take the line number as an int32 as well. This matches gc.Warnl and removes a cast every place it's used. Change-Id: I5d6201e640d52ec390eb7174f8fd8c438d4efe58 Reviewed-on: https://go-review.googlesource.com/20662 Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Keith Randall <khr@golang.org>
-
Matthew Dempsky authored
Just recognize "DATA" as a special pseudo op word in the assembler directly. Change-Id: I508e111fd71f561efa600ad69567a7089a57adb2 Reviewed-on: https://go-review.googlesource.com/20648 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Rob Pike <r@golang.org>
-
Matthew Dempsky authored
Updates #14786. Change-Id: I5fe889886f772167386cd10390ac50abc1383937 Reviewed-on: https://go-review.googlesource.com/20607 Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Josh Bleecher Snyder <josharian@gmail.com>
-
Josh Bleecher Snyder authored
The only remaining place that generated ADATA Prog was the assembler. Stop, and delete some now-dead code. Passes toolstash -cmp. Change-Id: I26578ff1b4868e98562b44f69d909c083e96f8d5 Reviewed-on: https://go-review.googlesource.com/20646Reviewed-by:
Matthew Dempsky <mdempsky@google.com> Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Josh Bleecher Snyder authored
Instead of generating ADATA instructions for static data, write that static data directly into the linker sym. This is considerably more efficient. The assembler still generates ADATA instructions, so the ADATA machinery cannot be dismantled yet. (Future work.) Skipping ADATA has a significant impact compiling the unicode package, which has lots of static data. name old time/op new time/op delta Unicode 227ms ±10% 192ms ± 4% -15.61% (p=0.000 n=29+30) name old alloc/op new alloc/op delta Unicode 51.0MB ± 0% 45.8MB ± 0% -10.29% (p=0.000 n=30+30) name old allocs/op new allocs/op delta Unicode 610k ± 0% 578k ± 0% -5.29% (p=0.000 n=30+30) This does not pass toolstash -cmp, because this changes the order in which some relocations get added, and thus it changes the output from the compiler. It is not worth the execution time to sort the relocs in the normal case. However, compiling with -S -v generates identical output if (1) you suppress printing of ADATA progs in flushplist and (2) you suppress printing of cpu timing. It is reasonable to suppress printing the ADATA progs, since the data itself is dumped later. I am therefore fairly confident that all changes are superficial and non-functional. Fixes #14786, although there's more to do in general. Change-Id: I8dfabe7b423b31a30e516cfdf005b62a2e9ccd82 Reviewed-on: https://go-review.googlesource.com/20645Reviewed-by:
Matthew Dempsky <mdempsky@google.com> Reviewed-by:
Ian Lance Taylor <iant@golang.org>
-
Dominik Honnef authored
And fix the wrong comment. Initially found this because the comment was wrong about the possible values. Then noticed that there doesn't seem to be any reason to use uintptr over SelectDir. Change-Id: I4f9f9640e49d89e558ed00bd99e57dab890785f5 Reviewed-on: https://go-review.googlesource.com/20655Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Martin Möhrmann authored
Only compute the number of maximum allowed elements per slice once. Special case newcap computation for slices with byte sized elements. name old time/op new time/op delta GrowSliceBytes-2 61.1ns ± 1% 43.4ns ± 1% -29.00% (p=0.000 n=20+20) GrowSliceInts-2 85.9ns ± 1% 75.7ns ± 1% -11.80% (p=0.000 n=20+20) Change-Id: I5d9c0d5987cdd108ac29dc32e31912dcefa2324d Reviewed-on: https://go-review.googlesource.com/20653Reviewed-by:
Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by:
Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Brad Fitzpatrick authored
It was failing like "unknown groupid ᎈ|" instead of "unknown groupid 5000" due to the conversion from int to string. Updates #14806 Change-Id: I83e4b478ff628ad4053573a9f32b3fadce22e847 Reviewed-on: https://go-review.googlesource.com/20642Reviewed-by:
Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org>
-
- 13 Mar, 2016 10 commits
-
-
Matthew Dempsky authored
Fixes #11419. Change-Id: I7935a253e3e96191a33f5041bab203ecc5f0c976 Reviewed-on: https://go-review.googlesource.com/20647Reviewed-by:
Keith Randall <khr@golang.org>
-
Alexandru Moșoi authored
* Shaves about 10k from pkg/tools/linux_amd64. * Was suggested by drchase before * Found by looking at ssa output of #14758 Change-Id: If2c4ddf3b2603d4dfd8fb4d9199b9a3dcb05b17d Reviewed-on: https://go-review.googlesource.com/20570Reviewed-by:
David Chase <drchase@google.com> Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Josh Bleecher Snyder authored
Simplify function signature. Remove unused Ctxt field Enforce_data_order. Passes toolstash -cmp. Change-Id: I5caa270ca9ae725708fe415b2c978b5f40780255 Reviewed-on: https://go-review.googlesource.com/20644 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
Passes toolstash -cmp. Change-Id: Ib8c76081956e1d4eecef16b82bc8d527d7849d7e Reviewed-on: https://go-review.googlesource.com/20643 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Egon Elbre authored
pprof crashed when running with: go tool pprof %INVALID Change-Id: I47c2a4da7273e3a97a833f320a650b8c6b59d6b9 Reviewed-on: https://go-review.googlesource.com/20632Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Josh Bleecher Snyder authored
This makes the output of compiling with -S more stable in the face of unimportant variation in the order in which relocs are generated. It is also more pleasant to read the relocs when they are sorted. Also, do some minor cleanup. For #14786 Change-Id: Id92020b13fd21777dfb5b29c2722c3b2eb27001b Reviewed-on: https://go-review.googlesource.com/20641Reviewed-by:
Matthew Dempsky <mdempsky@google.com>
-
Matthew Dempsky authored
Shrinks gc.Type and gc.Func slightly. Passes "GOEXPERIMENT=fieldtrack ./all.bash" and "go test -a -toolexec='toolstash -cmp' -ldflags=-k=rsc.io/tmp/fieldtrack.tracked rsc.io/tmp/fieldtrack". Change-Id: I785fe8a18eb830d9867d34247e4cd41a6a7921d4 Reviewed-on: https://go-review.googlesource.com/20557 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
Todd Neal authored
Split the auxFloat type into 32/64 bit versions and perform checking for exactly representable float32 values. Perform const folding on float32/64. Comment out some const negation rules that the frontend already performs. Change-Id: Ib3f8d59fa8b30e50fe0267786cfb3c50a06169d2 Reviewed-on: https://go-review.googlesource.com/20568 Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Keith Randall <khr@golang.org>
-
Alexandru Moșoi authored
* Refacts a bit saving and restoring parents restrictions * Shaves ~100k from pkg/tools/linux_amd64, but most of the savings come from the rewrite rules. * Improves on the following artificial test case: func f1(a4 bool, a6 bool) bool { return a6 || (a6 || (a6 || a4)) || (a6 || (a4 || a6 || (false || a6))) } Change-Id: I714000f75a37a3a6617c6e6834c75bd23674215f Reviewed-on: https://go-review.googlesource.com/20306Reviewed-by:
Keith Randall <khr@golang.org> Run-TryBot: Alexandru Moșoi <alexandru@mosoi.ro> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Emmanuel Odeke authored
Move functions testSchedLocalQueueLocal and testSchedLocalQueueSteal from proc.go to export_test.go, the only site that they are used. Fixes #14796 Change-Id: I16b6fa4a13835eab33f66a2c2e87a5f5c79b7bd3 Reviewed-on: https://go-review.googlesource.com/20640 Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
- 12 Mar, 2016 8 commits
-
-
Dominik Honnef authored
readClose hasn't been used in years. Change-Id: Ia963c082e049ef856c2a637fec15204efe48b3b6 Reviewed-on: https://go-review.googlesource.com/20631Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Emmanuel Odeke authored
Ensures that after request.ParseMultipartForm has been invoked, Request.PostForm and Request.Form are both populated with the same formValues read in, instead of only populating Request.Form. Fixes #9305 Change-Id: I3d4a11b006fc7dffaa35360014fe15b8c74d00a3 Reviewed-on: https://go-review.googlesource.com/19986Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org> Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-
Todd Neal authored
Reuse auto symbols so cse can eliminate OpAddrs that refer to them. Change-Id: I69e6a3f77a3a33946459cf8c6eccf223f6125048 Reviewed-on: https://go-review.googlesource.com/20569 Run-TryBot: Todd Neal <todd@tneal.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Keith Randall <khr@golang.org>
-
Shahar Kohanim authored
Reduces link time by ~3% Results with gc on: name old s/op new s/op delta LinkCmdGo 0.82 ± 2% 0.78 ± 2% -3.90% (p=0.000 n=17+17) LinkJuju 7.11 ± 7% 6.87 ± 6% -3.41% (p=0.012 n=20+19) Less noisy results with gc turned off: name old s/op new s/op delta LinkCmdGo 0.66 ± 2% 0.64 ± 2% -3.14% (p=0.000 n=18+20) LinkJuju 5.91 ± 1% 5.72 ± 2% -3.17% (p=0.000 n=20+20) Change-Id: I4cac7933b0b22d0aee18255e1ab54550ad364593 Reviewed-on: https://go-review.googlesource.com/20478Reviewed-by:
Matthew Dempsky <mdempsky@google.com> Reviewed-by:
David Crawshaw <crawshaw@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org>
-
Alex Brainman authored
Every go executable has COFF symbol table appended at the end. The table is used by nm and addr2line and contains all symbols present in the executable. The table is quite large. For example, my go.exe has 11736 records. To generate symbol table: 1) we walk "all symbols" list to count symbols we want for the table; 2) we allocate large global array of COFFSym structs (32 bytes each) to fit our symbols; 3) we walk "all symbols" list again to fill our array with contents; 4) we iterate over our global array to write all records to the file. This CL changes all these steps with single step: - walk "all symbols" list and write each COFF symbol table record to the file as we go. I hope new version is faster and uses less garbage, but I don't know how to benchmark this. Change-Id: Ie4870583250131ea4428e0e83a0696c9df1794e0 Reviewed-on: https://go-review.googlesource.com/20580Reviewed-by:
David Crawshaw <crawshaw@golang.org> Run-TryBot: David Crawshaw <crawshaw@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
-
Keith Randall authored
We use *24 a lot for pointer arithmetic when accessing slices of slices ([][]T). Rewrite to use an LEA and a shift. The shift will likely be free, as it often gets folded into an indexed load/store. Update #14606 Change-Id: Ie0bf6dc1093876efd57e88ce5f62c26a9bf21cec Reviewed-on: https://go-review.googlesource.com/20567 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by:
Todd Neal <todd@tneal.org>
-
Robert Griesemer authored
The structpkg global variable was only used to verify internal consistency when declaring methods during import. Track the value in the parser and binary importer directly and pass it to the relevant function as an argument. Change-Id: I7e5e006f9046d84f9a3959616f073798fda36c97 Reviewed-on: https://go-review.googlesource.com/20606Reviewed-by:
Brad Fitzpatrick <bradfitz@golang.org>
-
David Crawshaw authored
The outCount value includes a flag bit for dotdotdot. If we have this count incorrect, then the offset for the methodset *rtype are in the wrong place. Fixes #14783 Change-Id: If5acb16af08d4ffe36c8c9ee389c32f2712ce757 Reviewed-on: https://go-review.googlesource.com/20566Reviewed-by:
Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
-