Go to file
Alan Donovan 4700b7a612 go/callgraph: fix asymptote trap in DeleteSyntheticNodes.
The previous implementation would cause the graph to contain
many duplicate edges resulting in very large cross products,
so that for some inputs (and random map iteration orders) the
running time of DeleteSyntheticNodes was many minutes---more
than the pointer analysis!

Duplicate edges can arise from an interface call that
dispatches to several different wrapper functions each
wrapping the same declared method.

For example, in the callgraph for go/types, a call to
Object.Pos() dispatches to the synthetic functions (*Type).Pos
and (*Var).Pos, each of which wrap (*object).Pos().  After
DeleteSyntheticNodes, Object.Pos() appeared to call
(*object).Pos() twice.

This change builds the set of all edges and avoids adding
edges already in the set.

Also, document findings.

LGTM=crawshaw
R=crawshaw
CC=golang-codereviews
https://golang.org/cl/96100043
2014-05-08 14:03:06 -04:00
astutil go.tools: rename packages. 2014-01-16 09:33:58 -05:00
blog go.tools/blog: strip prefix when serving static content 2013-11-08 13:28:32 +11:00
cmd go.tools/cmd/present: add present tool 2014-05-05 14:55:27 -07:00
cover go.tools/cover: split parsing code out from cmd/cover 2013-12-03 20:55:21 -08:00
dashboard go.tools: fix various typos 2014-05-02 14:38:08 -07:00
go go/callgraph: fix asymptote trap in DeleteSyntheticNodes. 2014-05-08 14:03:06 -04:00
godoc go.tools/godoc/static: fix import path doc typo 2014-05-05 17:42:00 -07:00
imports go.tools: fix various typos 2014-05-02 14:38:08 -07:00
oracle go.tools: fix various typos 2014-05-02 14:38:08 -07:00
playground go.tools/playground/socket: require origin to set up socket handler 2014-05-05 08:42:12 -07:00
present go.tools/present: Remove formatting comments (HL, OMIT) from raw code. 2014-02-25 17:53:00 -08:00
refactor go.tools: fix various typos 2014-05-02 14:38:08 -07:00
.hgignore go.tools/.hgignore: don't ignore test-generated files, clean them up. 2014-04-10 13:17:20 -04:00
AUTHORS go.empty: prototype for new subrepository 2012-01-25 14:45:13 -05: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
codereview.cfg codereview: switch defaultcc to golang-codereviews 2013-12-20 10:54:33 -05:00

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.