This change renumbers nodes so that addressable ones (that may appear in a points-to set) all have lower numbers than non-addressable ones----initially at least: reflection, SetFinalizer, etc add new nodes during solving. This improves the efficiency of sparse PTS representations (to be added later). The largest int in a PTS is now about 20% of the previous max. Overview: - move constraint stuff into constraint.go. - add two methods to constraint: (1) renumber(): renumbers all nodeids. The implementations are very repetitive but simple. I thought hard about other ways (mixins, reflection) but decided this one was fine. (2) indirect(): report the set of nodeids whose points-to relations depend on the solver, not just the initial constraint graph. (This method is currently unused and is logically part of a forthcoming change to implement PE/LE presolver optimizations. (Perhaps I should comment it out/remove it for now.) - split up the population of the intrinsics map by file. - delete analysis.probes (unused field) - remove state="..." from panic message; unnecessary. LGTM=crawshaw R=crawshaw CC=golang-codereviews https://golang.org/cl/73320043 |
||
---|---|---|
.. | ||
callgraph | ||
exact | ||
gccgoimporter | ||
gcimporter | ||
importer | ||
loader | ||
pointer | ||
ssa | ||
types | ||
vcs |