1
0
mirror of https://github.com/golang/go synced 2024-10-01 11:28:34 -06:00
go/ssa
Alan Donovan e2921e188a go.tools/importer: make loading/parsing concurrent.
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
2013-09-04 13:15:49 -04:00
..
interp go.tools/importer: make loading/parsing concurrent. 2013-09-04 13:15:49 -04:00
testdata go.tools/ssa: fix bug in Program.VarValue. 2013-08-27 17:57:55 -04:00
blockopt.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
builder_test.go go.tools/importer: make loading/parsing concurrent. 2013-09-04 13:15:49 -04:00
builder.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
const.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
create.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
doc.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
dom.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
emit.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
example_test.go go.tools/importer: make loading/parsing concurrent. 2013-09-04 13:15:49 -04:00
func.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
lift.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
lvalue.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
print.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
promote.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
sanity.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
source_test.go go.tools/importer: make loading/parsing concurrent. 2013-09-04 13:15:49 -04:00
source.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
ssa.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
stdlib_test.go go.tools/importer: make loading/parsing concurrent. 2013-09-04 13:15:49 -04:00
testmain.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
util.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00
visit.go go.tools: add copyright messages to source files. 2013-08-27 18:49:13 -04:00