1. ParseFiles (in util.go) parses each file in its own goroutine. 2. (*Importer).LoadPackage asynchronously prefetches the import graph by scanning the imports of each loaded package and calling LoadPackage on each one. LoadPackage is now thread-safe and idempotent: it uses a condition variable per package; the first goroutine to request a package becomes responsible for loading it and broadcasts to the others (waiting) when it becomes ready. ssadump runs 34% faster when loading the oracle. Also, refactorings: - delete SourceLoader mechanism; just expose go/build.Context directly. - CreateSourcePackage now also returns an error directly, rather than via PackageInfo.Err, since every client wants that. R=crawshaw CC=golang-dev https://golang.org/cl/13509045 |
||
|---|---|---|
| .. | ||
| testdata | ||
| TODO | ||
| analysis.go | ||
| api.go | ||
| callgraph.go | ||
| doc.go | ||
| gen.go | ||
| intrinsics.go | ||
| labels.go | ||
| pointer_test.go | ||
| print.go | ||
| solve.go | ||
| util.go | ||