Skip to main content
Log in

Effect analysis in higher-order languages

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

Abstract

When programs are intended for parallel execution it becomes critical to determine whether the evaluations of two expressions can be carried out independently. We provide a scheme for making such determinations in a typed language with higher-order constructs and imperative features. The heart of our scheme is a mechanism for estimating thesupport of an expression, i.e., the set of global variables involved in its evaluation. This computation requires knowledge of all the aliases of an expression. The inference schemes are presented in a compositional fashion reminiscent of abstract interpretation. We prove the soundness of our estimates with respect to the standard semantics of the language.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. A. Neirynck, P. Panangaden, and A. J. Demers, Computation of Aliases and Support Sets, InProc. of the Fourteenth Annual ACM Symp. on Principle of Programming Languages, pp. 274–283 (1987).

  2. M. J. Gordon, A. J. R. Milner, and C. P. Wadsworth,Edinburgh LCF, LNCS 78. Springer-Verlag (1979).

  3. M. Burke and R. Cytron, Interprocedural Dependence Analysis and Parallelization,ACM Sigplan Notices,21(7):162–175 (1986).

    Google Scholar 

  4. K. Kennedy, J. R. Allen, and D. Callahan, An Implementation of Inter-procedural Analysis in a Vectorizing Fortran Compiler, Technical Report TR86-38, Rice University (1986).

  5. K. Cooper, Analyzing Aliases of Reference Formal Parameters, InConf. Record of the Twelfth Annual ACM Symp. on Principles of Programming Languages, ACM, pp. 281–290 (1985).

  6. P. Cousot and R. Cousot, Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints, InConf. Record of the 4th ACM Symp. on Principles of Programming Languages (1977).

  7. P. Cousot and R. Cousot, Static Determination of Dynamic Properties of Programs, InProc. of the 2nd Int'l Symp. on Programming (1976).

  8. A. Mycroft and F. Nielson, Strong Abstract Interpretation Using Power Domains, InProc. ICALP 1983, Lecture Notes in Computer Science,154:536–5447. Springer-Verlag (1983).

  9. G. L. Burn, C. L. Hankin, and S. Abramsky, The Theory and Practice of Strictness Analysis for Higher Order Functions,Proc. of Programs as Data Objects, Springer Lecture Notes in Computer Science, Vol. 217 (1986).

  10. A. J. Bernstein, Analysis of Programs for Parallel Processing,IEEE Transactions on Electronic Computers,EC-15(5):757–763 (October 1966).

    Google Scholar 

  11. J. P. Banning, An Efficient Way to Find the Side-effects of Procedure Calls and the Aliases of Variables, InProc. of the Sixth Annual ACM Symp. on Principles of Programming Languages, pp. 29–41 (1979).

  12. J. Barth, A Practical Interprocedural Data Flow Analysis Algorithm,CACM,21:724–736 (1978).

    Google Scholar 

  13. W. Weihl, Interprocedural Data Flow Analysis in the Presence of Pointers, Procedure Variables, and Label Variables, InProc. of the Seventh Annual ACM Symp. on Principles of Programming Languages, pp. 83–94 (1980).

  14. J. R. Larus and P. N. Hilfinger, Detecting Conflicts Between Structure Accesses, InProc. of the SIGPLAN 88 Conf. on Programming Language Design and Implementation, pp. 21–34 (1988).

  15. L. J. Hendren and A. Nicolau, Parallelizing Programs with Recursive Data Structures, InProc. of the Third ACM Int'l Conf. on Supercomputing, pp. 205–214 (1989).

  16. J. C. Reynolds, Syntactic Control of Interference, InProc. of the Fifth Annual ACM Symp. on Principles of Programming Languages, pp. 39–46 (1978).

  17. R. D. Tennent, Semantics of Interference Control,Theoretical Computer Science 27:297–310 (1983).

    Google Scholar 

  18. D. K. Gifford and J. M. Lucassen, Integrating Functional and Imperative Programming, InProc. of ACM Conference on Lisp and Functional Programming, pp. 28–38 (1986).

  19. J. M. Lucassen,Types and Effects, PhD thesis, Massachusetts Institute of Technology (1987).

  20. A. Neirynck,Static Analysis of Aliases and Side-Effects in Higher-Order Languages, PhD thesis, Cornell University (January 1988).

  21. R. D. Tennent,Principles of Programming Languages, Prentice-Hall (1981).

  22. M. J. C. Gordon,The Denotational Description of Programming Languages, Springer-Verlag (1979).

Download references

Author information

Authors and Affiliations

Authors

Additional information

Supported by National Science Foundation Grant DCR-8602072.

Rights and permissions

Reprints and permissions

About this article

Cite this article

Neirynck, A., Panangaden, P. & Demers, A.J. Effect analysis in higher-order languages. Int J Parallel Prog 18, 1–36 (1989). https://doi.org/10.1007/BF01409744

Download citation

  • Received:

  • Revised:

  • Issue Date:

  • DOI: https://doi.org/10.1007/BF01409744

Key Words

Navigation