Advertisement

Determining storage properties of sequential and concurrent programs with assignment and structured data

  • Christopher Colby
Contributed Papers
Part of the Lecture Notes in Computer Science book series (LNCS, volume 983)

Abstract

Determination of storage properties (e.g., aliasing, def-use chains, liveness, etc.) is one of the primary concerns in the implementation of any programming language. We present a new semantic framework and analysis based on operational traces that subsumes and improves upon most existing work in this area and handles concurrency, higher-order functions, first-class continuations, assignment, and recursive structured data. The analysis determines a storage relation: b\(\mathop \rightsquigarrow \limits^{a} \)a:x.w means that in any evaluation segment starting from program point a, the single unit of data allocated at point b is referenced by subcomponent w of variable x after evaluation proceeds through control path a, where b is either a control path representing the point of an allocation that occurred after point a, or a symbolic term x′.w′ representing an allocation before point a and referenced by component w′ of variable x′ at a. This relation can relate recursive control structure (including process spawns) and recursive data structure, and is suitable for analysis of arbitrary code or evaluation-trace fragments.

Keywords

Regular Language Abstract Interpretation Control Path Evaluation Trace Storage Relation 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, 1986.Google Scholar
  2. 2.
    A.J. Bernstein. Analysis of programs for parallel processing. IEEE Transactions on Computers, 15(5):757–763, October 1966.Google Scholar
  3. 3.
    A. Bloss. Update analysis and the efficient implementation of functional aggregates. In International Conference on Functional Programming and Computer Architecture, pages 26–38, September 1989.Google Scholar
  4. 4.
    Christopher Colby. Analysis of synchronization and aliasing with abstract interpretation. Unpublished.Google Scholar
  5. 5.
    Christopher Colby. Analyzing the communication topology of concurrent programs. In ACM/IFIP Symposium of Partial Evaluation and Semantics Based Program Manupulation, 1995.Google Scholar
  6. 6.
    P. Cousot and R. Cousot. Abstract interpretation: A unified lattice model for static analysis of programs by construction of approximations of fixpoints. In Fourth Annual ACM Symposium on Principles of Programming Languages, 1977.Google Scholar
  7. 7.
    P. Cousot and R. Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511–547, 1992.Google Scholar
  8. 8.
    P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Fifth Annual ACM Symposium on Principles of Programming Languages, Tucson, Arizona, pages 84–97, January 1978.Google Scholar
  9. 9.
    Alain Deutsch. Operational Models of Programming Languages and Representations of Relations on Regular Languages with Application to the Static Determination of Dynamic Aliasing Properties of Data. PhD thesis, LIX, Ecole Polytechnique, Palaiseau, France, 1992.Google Scholar
  10. 10.
    S. Eilenberg. Automata, Languages, and Machines, volume A. Academic Press, 1974.Google Scholar
  11. 11.
    K. Gopinath and J.L. Henessy. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 303–314, January 1989.Google Scholar
  12. 12.
    P. Granger. Analyses Sémantiques de Congruence. PhD thesis, Ecole Polytechnique, Palaiseau, France, July 1991.Google Scholar
  13. 13.
    P. Granger. Static analysis on linear congruence equalities among variables of a program. In TAPSOFT'91, volume 493 of Lecture Notes in Computer Science, pages 169–192. Springer Verlag, 1991.Google Scholar
  14. 14.
    N. D. Jones and S. S. Muchnick. Flow analysis and optimization of LISP-like structures. In Sixth Annual ACM Symposium on Principles of Programming Languages, San Antonio, Texas, pages 244–256, January 1979.Google Scholar
  15. 15.
    S.B. Jones and D. Le Métayer. Compile-time garbage collection by sharing analysis. In International Conference on Functional Programming and Computer Architecture, pages 54–74, September 1989.Google Scholar
  16. 16.
    M. Karr. Affine relationships among variables of a program. Acta Informatica, 6:133–151, 1976.Google Scholar
  17. 17.
    F. Masdupuy. Using abstract interpretation to detect array data dependencies. In Proceedings of the International Symposium on Supercomputing, pages 19–27. Kyushu University Press, November 1991.Google Scholar
  18. 18.
    Greg Morrisett, Matthias Felleisen, and Robert Harper. Abstract models of memory management. In International Conference on Functional Programming and Computer Architecture, June 1995.Google Scholar
  19. 19.
    Steven S. Muchnick and Neil D. Jones, editors. Program Flow Analysis: Theory and Applications. Prentice-Hall, Inc., 1981.Google Scholar
  20. 20.
    Alan Mycroft. Abstract Interpretation and Optimising Transformations for Applicative Programs. PhD thesis, Department of Computer Science, University of Edinburgh, Scotland, 1981.Google Scholar
  21. 21.
    Martin Odersky. Observers for linear types. In ESOP'92, volume 582 of Lecture Notes in Computer Science, pages 390–407. Springer Verlag, February 1992.Google Scholar
  22. 22.
    B. Rau and J. Fisher. Instruction-level parallel processing. The Journal of Supercomputing, 7:9–50, 1993.Google Scholar
  23. 23.
    J.C. Reynolds. Syntactic control of interference, part ii. In ICALP, volume 372 of Lecture Notes in Computer Science, pages 704–722. Springer Verlag, 1989.Google Scholar
  24. 24.
    C. Ruggieri and T. Murtagh. Lifetime analysis of dynamically allocated objects. In Fifteenth Annual ACM Symposium on Principles of Programming Languages, January 1988.Google Scholar
  25. 25.
    Peter Sestoft. Replacing function parameters by global variables. In International Conference on Functional Programming and Computer Architecture, pages 39–53, September 1989.Google Scholar
  26. 26.
    Phil Wadler. Is there a use for linear logic. In ACM/IFIP Symposium of Partial Evaluation and Semantics Based Program Manupulation, 1991.Google Scholar
  27. 27.
    D.W. Wall. Limits of instruction-level parallelism. In Proceedings ASPLOS III, April 1991.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1995

Authors and Affiliations

  • Christopher Colby
    • 1
  1. 1.Carnegie Mellon UniversityPittsburgh

Personalised recommendations