tools/go/pointer
Alan Donovan 98ed3d3c76 go.tools/go/pointer: node renumbering
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
2014-03-11 18:37:19 -04:00
..
testdata go.tools/go/ssa: name anon funcs by their enclosing func. 2014-02-28 10:18:55 -05:00
TODO go.tools: rename packages. 2014-01-16 09:33:58 -05:00
analysis.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
api.go go.tools/go/callgraph: simplifications to API. 2014-02-20 11:57:48 -05:00
callgraph.go go.tools/go/callgraph: simplifications to API. 2014-02-20 11:57:48 -05:00
constraint.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
doc.go go.tools: rename packages. 2014-01-16 09:33:58 -05:00
example_test.go go.tools/go/pointer: recover from panic in Analyse and return an error. 2014-02-27 14:13:52 -05:00
gen.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
intrinsics.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
labels.go go.tools: various comments + doc tweaks. 2014-03-11 18:24:39 -04:00
opt.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
pointer_test.go go.tools/go/pointer: recover from panic in Analyse and return an error. 2014-02-27 14:13:52 -05:00
print.go go.tools: rename packages. 2014-01-16 09:33:58 -05:00
reflect.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
solve.go go.tools/go/pointer: node renumbering 2014-03-11 18:37:19 -04:00
util.go go.tools/pointer: opt: type-based label tracking reduces solver time by up to 75%. 2014-02-18 12:40:44 -08:00