commit | 60967a09bc0cbb5478cbe6988c5805e74483f435 | [log] [tgz] |
---|---|---|
author | Alex Zaslavsky <azaslavsky@google.com> | Wed Dec 16 07:50:18 2020 -0800 |
committer | CQ Bot <commit-bot@chromium.org> | Thu Dec 17 18:02:04 2020 +0000 |
tree | ce96a2ab8539b5e0a46dde5f92eeddfcd6e1210f | |
parent | 22f77b87c4a1741ab862fc2239921a855352fc37 [diff] |
[fidl][go] Add support for recursive types in go. [1/2] Next: Iacde292e443d2a0e2211a2cfc08d4d048134f3da In order to do this, all marshalers are converted to references, so that they may be included in recursive definitions (structs, xunions, etc), and so that they can be stored in a single, global store to cut down on memory usage (this store will be added in a future CL). Additionally, the mStructUnsafeCopy marshaler is removed. This is because the marshaler type must now be finally decided before recursive descent through the definition begins, otherwise nested recursive definitions may end up pointing to different marshalers than their parents. Because mStructUnsafeCopy could only be allocated once all of a structs fields have been visited, it will never be used in this new setup. Instead, the mStruct marshaler gets a new useUnsafeCopy field, similar to mVector, which can be checked during calls to [un]marshal() to confirm that an unsafe copy can be performed. Bug: 38191 Test: fidldev test go (w/ next CL on fuchsia.git included) Change-Id: I89863ed0f975d7c190a0281cfcf71e7de9834d9c Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/go/+/461074 Reviewed-by: Pascal Perez <pascallouis@google.com> Commit-Queue: Alex Zaslavsky <azaslavsky@google.com>
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.
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.
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.
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.