mirror of
https://github.com/golang/go
synced 2024-11-18 18:44:42 -07:00
The Go programming language
514bdfb1b7
If an expression is addressable, we compute its address then load, rather than extracting the value of subelements. For aggregates this avoids large copies. Example: var x [2]struct{y [3]int} print(x[1].y[2]) Was: t0 = local [3]struct{x [5]int} (x) *[3]struct{x [5]int} t1 = *t0 [3]struct{x [5]int} t2 = t1[1:int] struct{x [5]int} t3 = t2.x [#0] [5]int t4 = t3[2:int] int Now: t1 = &t0[1:int] *struct{x [5]int} t2 = &t1.x [#0] *[5]int t3 = &t2[2:int] *int t4 = *t3 int Also: - make emitFieldSelections responsible for calling emitDebugRef, as one of its two calls was forgetting to do it. - relax the specification of (*Program).VarValue because not all subexpressions are materalized as values now. - fix up the objlookup.go test expectations to match. go/ssa/interp test runs 10% faster. Thanks to Peter Collingbourne for pointing this out. LGTM=pcc R=pcc, gri CC=golang-codereviews https://golang.org/cl/109710043 |
||
---|---|---|
astutil | ||
blog | ||
cmd | ||
container/intsets | ||
cover | ||
dashboard | ||
go | ||
godoc | ||
imports | ||
oracle | ||
playground | ||
present | ||
refactor | ||
.hgignore | ||
AUTHORS | ||
codereview.cfg | ||
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.