mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-29 19:30:36 +02:00
We were using list sets, which when you end up with thousands of bindings in an SCC reaches the point where we are off the quadratic end of the curve. Fix to use intsets and intmaps instead. * module/language/tree-il/fix-letrec.scm (compute-ids): New function. (compute-referenced-and-assigned): Rename from analyze-lexicals, and compute intsets. (make-compute-free-variables): Rename from free-variables, return a procedure instead of a hash table, and use intsets. Use a global cache to avoid quadratic behavior with regard to binding depth. (compute-complex): Compute a global set of "complex" variables, as an intset. (compute-sccs): Use intsets and intmaps to compute the free-variable and ordering edges. (fix-scc, fix-term): Refactorings. (reorder-bindings): Avoid a linear search. (fix-letrec): Refactor. |
||
---|---|---|
.. | ||
ice-9 | ||
language | ||
oop | ||
rnrs | ||
scheme | ||
scripts | ||
srfi | ||
sxml | ||
system | ||
texinfo | ||
web | ||
Makefile.am | ||
rnrs.scm | ||
statprof.scm | ||
texinfo.scm |