Prior to stack tracing, inlining could cause dead pointers to be kept alive in some loops. See #18336 and CL 31674. The adjustment removed by this change preserved the inlining status quo in the face of Node structure changes, to avoid creating new problems. Now that stack tracing provides precision, these hacks can be removed. Of course, our inlining code model is already hacky (#17566), but at least now there will be fewer epicyclical hacks. Newly inline-able functions in std cmd as a result of this change: hash/adler32/adler32.go:65:6: can inline (*digest).UnmarshalBinary hash/fnv/fnv.go:281:6: can inline (*sum32).UnmarshalBinary hash/fnv/fnv.go:292:6: can inline (*sum32a).UnmarshalBinary reflect/value.go:1298:6: can inline Value.OverflowComplex compress/bzip2/bit_reader.go:25:6: can inline newBitReader encoding/xml/xml.go:365:6: can inline (*Decoder).switchToReader vendor/golang_org/x/crypto/cryptobyte/builder.go:77:6: can inline (*Builder).AddUint16 crypto/x509/x509.go:1851:58: can inline buildExtensions.func2.1.1 crypto/x509/x509.go:1871:58: can inline buildExtensions.func2.3.1 crypto/x509/x509.go:1883:58: can inline buildExtensions.func2.4.1 cmd/vet/internal/cfg/builder.go:463:6: can inline (*builder).labeledBlock crypto/tls/handshake_messages.go:1450:6: can inline (*newSessionTicketMsg).marshal crypto/tls/handshake_server.go:769:6: can inline (*serverHandshakeState).clientHelloInfo crypto/tls/handshake_messages.go:1171:6: can inline (*nextProtoMsg).unmarshal cmd/link/internal/amd64/obj.go:40:6: can inline Init cmd/link/internal/ppc64/obj.go:40:6: can inline Init net/http/httputil/persist.go:54:6: can inline NewServerConn net/http/fcgi/child.go:83:6: can inline newResponse cmd/compile/internal/ssa/poset.go:245:6: can inline (*poset).newnode Change-Id: I19e8e383a6273849673d35189a9358870665f82f Reviewed-on: https://go-review.googlesource.com/c/141117 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ilya Tocar <ilya.tocar@intel.com> Reviewed-by: Matthew Dempsky <mdempsky@google.com> |
||
|---|---|---|
| .github | ||
| api | ||
| doc | ||
| lib/time | ||
| misc | ||
| src | ||
| test | ||
| .gitattributes | ||
| .gitignore | ||
| AUTHORS | ||
| CONTRIBUTING.md | ||
| CONTRIBUTORS | ||
| LICENSE | ||
| PATENTS | ||
| README.md | ||
| favicon.ico | ||
| robots.txt | ||
README.md
The Go Programming Language
Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.
Gopher image by Renee French, licensed under Creative Commons 3.0 Attributions license.
Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.
Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.
Download and Install
Binary Distributions
Official binary distributions are available at https://golang.org/dl/.
After downloading a binary release, visit https://golang.org/doc/install or load doc/install.html in your web browser for installation instructions.
Install From Source
If a binary distribution is not available for your combination of operating system and architecture, visit https://golang.org/doc/install/source or load doc/install-source.html in your web browser for source installation instructions.
Contributing
Go is the work of thousands of contributors. We appreciate your help!
To contribute, please read the contribution guidelines: https://golang.org/doc/contribute.html
Note that the Go project uses the issue tracker for bug reports and proposals only. See https://golang.org/wiki/Questions for a list of places to ask questions about the Go language.