Skip to main content
Log in

Alias Analysis in Java with Reference-Set Representation for High-Performance Computing

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

Abstract

In this paper, a flow-sensitive, context-insensitive alias analysis in Java is proposed. It is more efficient and precise than previous analyses for C++, and it does not negatively affect the safety of aliased references. To this end, we first present a reference-set alias representation. Second, data-flow equations based on the propagation rules for the reference-set alias representation are introduced. The equations compute alias information more efficiently and precisely than previous analyses for C++. Third, for the constant time complexity of the type determination, a type table is introduced with reference variables and all possible types for each reference variable. Fourth, an alias analysis algorithm is proposed, which uses a popular iterative loop method for an alias analysis. Finally, running times of benchmark codes are compared for reference-set and existing object-pair representation.

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. O. Agesen, D. Detletfs, and J. E. B. Moss, Garbage Collection and Local Variable Type-Precision and Liveness in Java Virtual Machines, ACM on Programming Language Design and Implementation (1998).

  2. O. Agesen, J. Palsberg, and M. I. Schwartzback, Type Inference of Parametric Polymorphism, Proceedings of ECOOP'95, Aarhus (Aug. 1995).

  3. A. V. Aho, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, Addison–Wesley (1986).

  4. J. P. Banning, An Efficient Way to Find the Side Effects of Procedure Calls and the Aliases of Variables, Proceedings of Sixth POPL (Jan. 1979).

  5. M. Burke, P. R. Carini, and J. Choi, Efficient Flow-Insensitive Alias Analysis in the Presence of Pointers, IBM Research Report, RC 19546 (1994).

  6. M. Burke, P. Carini, and J. Choi, Interprocedural Pointer Alias Analysis, Research Report RC 21055, IBM T. J. Watson Research Center (December 1997).

  7. D. F. Bacon and P. F. Sweeney, Fast Static Analysis of C++ Virtual Function Calls, Proceedings of Object-Oriented Programming Systems, Languages, and Applications, OOPSLA'96, ACM SIGPLAN Notices, Vol. 31, No. 10, San Jose, California (October 1996).

  8. CaffeineMark 3.0, Pendragon Software, http://www.pendragon-software.com/pendragon/cm3/results.html

  9. D. C. Cann, Compilation Techniques for High Performance Applicative Computation, Technical Report, CS-89-108, Colorado State University (1989).

  10. J. Choi, M. Burke, and P. Carini, Efficient Flow-Sensitive Interprocedural Computation of Pointer-Induced Aliases and Side Effects, The 20th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, pp. 232-245 (January 1993).

  11. D. Caromel, F. Belloncle, and Y. Roudier, The C++// Language, Chapter 7, Parallel Programming using C++, Massachusetts Institute of Technology (1996).

  12. B. O. Christiansen, P. Cappello, M. F. Ionescu, M. O. Neary, K. E. Schauser, and D. Wu, Javaelin: Internet-Based Parallel Computing Using Java, ACM 1997 Workshop on Java for Science and Engineering Computation, June 21, 1997, PPoPP Las Vegas.

  13. C. Chambers, J. Dean, and D. Grove, Whole-Program Optimization of Object-Oriented Languages, Technical Report, UW-CSE-96-06-02, Department of Computer Science, University of Washington.

  14. J. Choi, D. Grove, M. Hind, and V. Sarkar, Efficient and Precise Modeling of Exceptions for the Analysis of Java Programs, Proceedings of the ACM SIGPLAN SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (September 1999).

  15. Paul R. Carini, M. Hind, and H. Srinivasan, Flow-Sensitive Type Analysis for C++, IBM Research Report, RC20267 (Nov. 1995).

  16. K. D. Cooper and K. Kennedy, Interprocedural Side-Effect Analysis in Linear Time, Proceedings of SIGPLAN 88 Conference on Programming Language Design and Implementation, SIGPLAN Notices 23(7) (July 1988).

  17. K. D. Cooper and K. Kennnedy, Fast Interprocedural Alias Analysis, Conference Record of the Sixteenth Annual ACM Symposium on Principles of Programming Languages, pp. 49-59 (Jan. 1989).

  18. D. Caromel, W. Klauser, and J. Vayssiere, Towards Seamless Computing and Metacomputing in Java, Concurrency-Pract. Ex., 10(11–13):1043-1061 (Sept.–Nov. 1998).

    Google Scholar 

  19. R. Chatterjee and B. G. Ryder, Scalable, Flow-Sensitive Type Inference for Statically Typed Object-Oriented Languages, Technical Report DCS-TR-326, Rutgers University (August 1997).

  20. P. Carini and H. Srinivasan, Flow-Sensitive Type Analysis for C++, Research Report RC 20267, IBM T. J. Watson Research Center (November 1995).

  21. Java How to Program. Deitel & Deitel, Prentice–Hall International, Inc. (1997).

  22. J. Dean, G. DeFouw, D. Grove, V. Litvinov, and C. Chambers, Vortex: An Optimizing Compiler for Object-Oriented Languages, OOPSLA'96 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications (1996).

  23. G. DeFouw, D. Grove, and C. Chambers, Fast Interprocedural Analysis, Technical Report 97-07-02, Department of Computer Science and Engineering, University of Washington (July 1997).

  24. A. Diwan, K. S. McKinley, and J. E. B. Moss, Type-Based Alias Analysis, Proceedings of SIGPLAN 98 Conference on Programming Language Design and Implementation (1998).

  25. M. Fahndrich, J. Rehof, and M. Das, Scalable Context-Sensitive Flow Analysis Using Instantiation Constraints, Proceedings of the ACM SIGPLAN 2000 Conference on Programming Language Design and Implementation, Vancouver, BC, Canada (June 2000).

  26. M. Emami, R. Ghiya, and L. J. Hendren, Context-Sensitive Interprocedural Point-To Analysis in the Presence of Function Pointers, SIGPLAN' 94 Conference on Programming Language Design and Implementation, SIGPLAN Notices, Vol. 29(6), pp. 242-256 (1994).

    Google Scholar 

  27. D. Flanagan, Java in a Nutshell, 2nd ed., O'Reilly (May 1997).

  28. D. Grove, G. DeFouw, J. Dean, and C. Chambers, Call Graph Construction in Object-Oriented Languages, OOPSLA' 97 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications (1997).

  29. J.-L. Gaudiot, T. DeBoni, J. Feo, W. Bohm, W. Najjar, and P. Miller, The Sisal Project: Real World Functional Programming, Languages, Compilation Techniques, and Run Time Systems for Scalable Parallel Systems Recent Advances and Future Perspectives, Lecture Notes in Computer Science Series, Springer-Verlag (2001).

  30. U. Holzle and O. Agesen, Dynamic vs. Static Optimization Techniques for Object-Oriented Languages, Theor. Pract. Obj. Syst., 1(3)(1996).

  31. M. Hind, M. Burke, P. Carini, and J.-D. Choi, Interprocedural Pointer Alias Analysis, ACM T. Progr. Lang. Sys. (TOPLAS), 21(4):848-894 (July 1999).

    Google Scholar 

  32. Sun Micro Systems, Java Compiler Compiler, The Parser Generator, http://www.suntest.com/JavaCC/Version0.8pre2 (April 1998).

  33. Purdue University, West Lafayette, Indiana, USA, Java Tree Builder, http://www.cs.pur-due.edu/jtb/index.html (May 2000).

  34. Java Grande Forum, http://www.javagrande.org/.

  35. W. Landi, B. G. Ryder, and S. Zhang, A Safe Approximating Algorithm for Interprocedural Pointer Aliasing, Proceedings of the ACM SIGPLAN' 92 Conference on Programming Language Design and Implementation, pp. 235-248 (June 1992).

  36. S. S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufmann, Academic Press (July 1997).

  37. E. W. Myers, A Precise Inter-procedural Data Flow Algorithm, 8th Annual ACM Symposium on the Principles of Programming Languages (1981).

  38. J. Plevyak and A. A. Chien, Precise Concrete Type Inference for Object-Oriented Languages, OOPSLA'94 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications (1994).

  39. H. D. Pande and B. G. Ryder, Static Type Determination and Aliasing for C++, Technical Report LCSR-TR-250-A, Rutgers University (October 1995).

  40. J. Palsberg and M. I. Schwartzbach, Object-Oriented Type Inference, OOSLA' 91, Object-Oriented Programming Systems, Languages, and Applications, pp. 146-161, Phoenix, Arizona (Oct. 1991).

  41. Inria, Sophia, France, http://www.inria.fr/oasis/ProActive.

  42. B. K. Rosen, Data Flow Analysis for Procedural Languages, JACM, 26(2):322-344 (April 1979).

    Google Scholar 

  43. R. Rugina and M. Rinard, Pointer Analysis for Multithreaded Programs, Proceedings of the ACM SIGPLAN 1999 Conference on Programming Language Design and Implementation, Atlanta, Georgia (May 1999).

  44. SciMark 2.0, National Institute Standards and Technology, http://math.nist.gov/cgi-bin/ScimarkSummary.

  45. J. Woo, I. Attali, D. Caromel, J.-L. Gaudiot, and A. L Wendelborn, Alias Analysis on Type Inference for Class Hierarchy in Java, Proceedings of Twenty-Fourth Australasian Computer Science Conference, ACSC 2001, pp. 206-214 (Jan. 2001).

  46. R. P. Wilson and M. S. Lam, Efficient Context-Sensitive Pointer Analysis for C Programs, Proceedings of the ACM SIGPLAN'95 Conference on Programming Language Design and Implementation (June 1995).

  47. J. Woo, J. Woo, I. Attali, D. Caromel, J.-L. Gaudiot, and A. L Wendelborn, Alias Analysis for Java with Reference-Set Representation, Proceedings of Eighth International Conference on Parallel and Distributed Systems, ICPADS 2001, pp. 459-466 (June 2001).

  48. J. Woo, J. Woo, I. Attali, D. Caromel, J.-L. Gaudiot, and A. L Wendelborn, Alias Analysis for Exceptions in Java, 25th Australasian Computer Science Conference—Australian Computer Science Communications, Vol. 24, No. 1, IEEE Press (Jan. 2002).

  49. J. Woo, J. Woo, and J.-L. Gaudiot, Flow-Sensitive Alias Analysis with Referred-Set Representation for Java, Proceedings of Fourth International Conference on High Performance Computing in Asia-Pacific Region, Vol. 1, HPC-ASIA 2000, pp. 485-494 (Dec. 2000).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Woo, J., Gaudiot, JL. & Wendelborn, A.L. Alias Analysis in Java with Reference-Set Representation for High-Performance Computing. International Journal of Parallel Programming 32, 39–76 (2004). https://doi.org/10.1023/B:IJPP.0000015564.82048.f3

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/B:IJPP.0000015564.82048.f3

Navigation