1
0
mirror of https://github.com/golang/go synced 2024-09-30 22:58:34 -06:00
The Go programming language
Go to file
Alan Donovan 868c429971 go/ssa/interp: fix bug causing subelements of aggregates to change address.
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>
2015-03-13 18:22:38 +00:00
benchmark/parse benchmark/parse: fix cosmetic defect in error str. 2015-02-02 17:07:43 +00:00
blog tools: add import comments. 2014-12-09 22:42:16 +00:00
cmd cmd/godoc: exclude /pkg from search indexing 2015-03-12 00:26:38 +00:00
container/intsets container/intsets: Intersects, SubsetOf, SymmetricDifference(With) 2015-01-14 20:51:28 +00:00
cover cover: accept inaccurate block endings 2015-01-07 02:00:16 +00:00
go go/ssa/interp: fix bug causing subelements of aggregates to change address. 2015-03-13 18:22:38 +00:00
godoc godoc/static: fix variable reference in search.txt 2015-03-02 02:09:35 +00:00
imports astutil: move to go/ast/astutil 2015-01-13 15:47:47 +00:00
oracle oracle/testdata: avoid sort.Sort so that my $GOROOT doesn't appear in output 2015-03-12 18:36:52 +00:00
playground tools: add import comments. 2014-12-09 22:42:16 +00:00
present tools: add import comments. 2014-12-09 22:42:16 +00:00
refactor go/buildutil: use chan (not func) in the ForEachPackage API 2015-03-05 20:14:20 +00:00
.gitattributes tools: copying .gitattributes to all subrepositories (fixes windows build) 2014-12-23 06:32:51 +00:00
.gitignore dashboard: rearrange tree, in prep for packagification 2015-01-15 02:58:11 +00:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
CONTRIBUTING.md doc: add CONTRIBUTING.md 2015-02-18 23:43:38 +00:00
CONTRIBUTORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05:00
LICENSE LICENSE: add 2012-03-17 15:20:58 +11:00
PATENTS go.empty: add PATENTS file to the subrepo. 2012-04-16 11:24:04 +10:00
README go.tools/README: minor correction. 2013-10-29 13:20:58 -04:00

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.