Skip to main content Accessibility help
×
Home

Exploiting reachability and cardinality in higher-order flow analysis

  • MATTHEW MIGHT (a1) and OLIN SHIVERS (a2)

Abstract

We present two complementary improvements for abstract-interpretation-based flow analysis of higher-order languages: (1) abstract garbage collection and (2) abstract counting. Abstract garbage collection is an analog to its concrete counterpart: the analysis determines when an abstract resource has become unreachable, and then, re-allocates it as fresh. This prevents flow sets from joining during abstract interpretation, which has two immediate effects: (1) the precision of the interpretation increases and (2) its running time often falls. In abstract counting, the analysis tracks how many times an abstract resource has been allocated. A count of one implies that the abstract resource momentarily represents only one concrete resource. This knowledge, in turn, drives environment analysis, expanding the kind (rather than just the degree) of optimization available to the compiler.

Copyright

References

Hide All
Agesen, O. (1995) The cartesian product algorithm: simple and precise type inference of parametric polymorphism. In Proceedings of ECOOP 1995, pp. 2–26.
Chase, D. R., Wegman, M., & Zadeck, F. K. 1990 (June) Analysis of pointers and structures. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 296–310.
Cousot, P. & Cousot, R. 1977 (January) Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages, vol. 4, pp. 238–252.
Cousot, P. & Cousot, R. 1979 (January) Systematic design of program analysis frameworks. In Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages, vol. 6, pp. 269–282.
Hannan, J. (1995) Type systems for closure conversion. In Proceedings of Workshop on Types for Program Analysis, pp. 48–62.
Hudak, P. 1986 (August) A semantic model of reference counting and its abstraction (detailed summary). In Proceedings of the 1986 ACM Conference on LISP and Functional Programming, pp. 351–363.
Jagannathan, S., Thiemann, P., Weeks, S., & Wright, A. K. 1998 (January) Single and loving it: must-alias analysis for higher-order languages. In Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages, pp. 329–341.
Might, M. & Shivers, O. 2006a (January) Environment analysis via ΔCFA. In Proceedings of the 33rd Annual ACM Symposium on the Principles of Programming Languages (POPL 2006), pp. 127–140.
Might, M. & Shivers, O. 2006b (September) Improving flow analyses via ΓCFA: abstract garbage collection and counting. In Proceedings of the 11th ACM International Conference on Functional Programming (ICFP 2006), pp. 13–25.
Might, M. & Shivers, O. (2007) Analyzing environment structure of higher-order languages using frame strings. Theoretical Computer Science, 375 (1–3), 137168.
Might, M., Chambers, B., & Shivers, O. 2007 (January) Model checking via ΓCFA. In Proceedings of the 8th International Conference on Verification, Model Checking and Abstract Interpretation (VMCAI 2007), pp. 59–73.
Palsberg, J. (1995) Closure analysis in constraint form. ACM Trans. Programming Languages Systems, 17 (1), 4762.
Sestoft, P. 1988 (October) Replacing Function Parameters by Global Variables. M.Phil. thesis, Copenhagen, Denmark: DIKU, University of Copenhagen.
Shivers, O. 1988 (June) Control-flow analysis in scheme. In Proceedings of the SIGPLAN '88 Conference on Programming Language Design and Implementation (pldi), pp. 164–174.
Shivers, O. 1991 (May) Control-Flow Analysis of Higher-Order Languages. Ph.D. thesis, Pittsburgh, PA: School of Computer Science, Carnegie-Mellon University. Technical Report CMU-CS-91-145.
Shivers, O. & Might, M. 2006 (June) Continuations and transducer composition. Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, 295–307.
Steele, Jr., & Guy, L. 1978 (May) RABBIT: A Compiler for SCHEME. M.Phil. thesis, Cambridge, MA: Artificial Intelligence Laboratory, Massachusetts Institute of Technology. Technical report AI-TR-474.
Wand, M. & Steckler, P. 1994 (January) Selective and lightweight closure conversion. Proceedings of ACM SIGPLAN Symposium on Principles of Programming Languages, vol. 21, pp. 435–445.
Wright, A. K. & Jagannathan, S. (1998) Polymorphic splitting: an effective polyvariant flow analysis. ACM Trans. Programming Languages Systems, 20 (1), 166207.

Exploiting reachability and cardinality in higher-order flow analysis

  • MATTHEW MIGHT (a1) and OLIN SHIVERS (a2)

Metrics

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed.

Exploiting reachability and cardinality in higher-order flow analysis

  • MATTHEW MIGHT (a1) and OLIN SHIVERS (a2)
Submit a response

Discussions

No Discussions have been published for this article.

×

Reply to: Submit a response


Your details


Conflicting interests

Do you have any conflicting interests? *