mirror of
https://github.com/golang/go
synced 2024-09-30 22:58:34 -06:00
The Go programming language
868c429971
Since all SSA values are immutable, no value copying is required for any operations except those that load from or store to a variable; those operations must do an aggregate copy, i.e., descend into struct and array elements. All other calls to copyVal have been removed; they were pieces of duct tape, as I had long suspected. The descent must be based on the static type information, not the "shape" of the dynamic value, since two reflect.Value structs may have different internal shapes. We clobber the true definition of reflect.Value's underlying type, replacing it with struct{interface{}, interface{}}, which is close enough to make the load/store functions work. + Test Change-Id: I5e239d91ed0cb2a669a9f75766024fe1f9a5c347 Reviewed-on: https://go-review.googlesource.com/7532 Reviewed-by: Robert Griesemer <gri@golang.org> |
||
---|---|---|
benchmark/parse | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
go | ||
godoc | ||
imports | ||
oracle | ||
playground | ||
present | ||
refactor | ||
.gitattributes | ||
.gitignore | ||
AUTHORS | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
LICENSE | ||
PATENTS | ||
README |
This subrepository holds the source for various packages and tools that support the Go programming language. Some of the tools, godoc and vet for example, are included in binary Go distributions. Others, including the Go oracle and the test coverage tool, can be fetched with "go get". Packages include a type-checker for Go and an implementation of the Static Single Assignment form (SSA) representation for Go programs. To submit changes to this repository, see http://golang.org/doc/contribute.html.