Efficient Dependence Analysis for Java Arrays
This paper studies dependence analysis for Java arrays, emphasizing efficient solutions that avoid a large compile-time overhead. We present a new approach for dependence analysis based on sparse congruence partitioning representations in SSA form. Since arrays in Java are dynamically allocated, our approach takes pointer-induced aliasing of array objects into account in conjunction with analysis of index values. We present experimental results to evaluate the effectiveness of our approach, and outline directions for further improvements.
KeywordsDependence Analysis Array Reference Program Language Design Innermost Loop Array Object
Unable to display preview. Download preview PDF.
- 1.B. Alpern, M. N. Wegman, and F. Zadeck. Detecting equality of variables in programs. In ACM, editor, POPL’ 88. Proceedings of the conference on Principles of programming languages, January 13–15, 1988, San Diego, C A, pages 1–11, New York, NY, USA, 1988. ACM Press.Google Scholar
- 3.R. Bodik, R. Gupta, and V. Sarkar. ABCD: Eliminating Array Bounds Checks on Demand. In SIGPLAN 2000 Conference on Programming Language Design and Implementation, June2000.Google Scholar
- 4.M. Burke, J.-D. Choi, S. Fink, D. Grove, M. Hind, V. Sarkar, M. Serrano, V. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeño Dynamic Optimizing Compiler for Java. In ACM Java Grande Conference, June 1999.Google Scholar
- 5.M. Emami, R. Ghiya, and L. J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In SIGPLAN’ 94 Conference on Programming Language Design and Implementation, pages 242–256, June 1994. SIGPLAN Notices, 29(6).Google Scholar
- 6.S. Fink, K. Knobe, and V. Sarkar. Unified analysis of array and object references in strongly typed languages. In Seventh International Static Analysis Symposium (2000), June 2000.Google Scholar
- 7.K. Gallivan, W. Jalby, and D. Gannon. On the Problem of Optimizing Data Transfers for Complex Memory Systems. Proceedings of the ACM 1988 International Conference on Supercomputing, pages 238–253, July 1988.Google Scholar
- 8.G. Goff, K. Kennedy, and C.-W. Tseng. Practical dependence testing. In SIGPLAN’ 91 Conference on Programming Language Design and Implementation, pages 15–29, 1991. SIGPLAN Notices, 266.Google Scholar
- 9.M. R. Haghighat and C. D. P. Hronopoulos. Symbolic analysis for parallelizing compilers. ACM Transactions on Programming Languages and Systems, 18(4):477–518, July 1996.Google Scholar
- 10.D. E. Maydan, J. L. Hennessy, and M. S. Lam. Efficient and exact data dependence analysis. In SIGPLAN’ 91 Conference on Programming Language Design and Implementation, pages 1–14, 1991. SIGPLAN Notices, 266.Google Scholar
- 11.W. Pugh and D. Wonnacott. Eliminating false data dependences using the omega test. Proceedings of the ACM SIGPLAN’ 92 Conference on Programming Language Design and Implementation, San Francisco, California, pages 140–151, June 1992.Google Scholar
- 12.B. Steensgaard. Points-to analysis in almost linear time. In 23rd Annual ACM SIGACT-SIGPLAN Symposium on the Principles of Programming Languages, pages 32–41, Jan. 1996.Google Scholar
- 13.R. P. Wilson and M. S. Lam. Efficient context-sensitive pointer analysis for C programs. In SIGPLAN’ 95 Conference on Programming Language Design and Implementation, pages 1–12, June 1995. SIGPLAN Notices, 30(6).Google Scholar