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

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.

[1]  Jean-Luc Gaudiot,et al.  The Sisal Project: Real World Functional Programming , 2001, Compiler Optimizations for Scalable Parallel Systems Languages.

[2]  Jong-Deok Choi,et al.  Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects , 1993, POPL '93.

[3]  Denis Caromel,et al.  Alias Analysis for Exceptions in Java , 2002, ACSC.

[4]  Barry K. Rosen Data Flow Analysis for Procedural Languages , 1979, JACM.

[5]  Jean-Luc Gaudiot,et al.  Flow-sensitive alias analysis with referred-set representation for Java , 2000, Proceedings Fourth International Conference/Exhibition on High Performance Computing in the Asia-Pacific Region.

[6]  Ole Agesen The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism , 1995, ECOOP.

[7]  Stephen A. Edwards The C Language , 2000 .

[8]  David Flanagan,et al.  Java in a Nutshell , 1996 .

[9]  Craig Chambers,et al.  Whole-program optimization of object-oriented languages , 1996 .

[10]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[11]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA 1991.

[12]  David Grove,et al.  Call graph construction in object-oriented languages , 1997, OOPSLA '97.

[13]  David Detlefs,et al.  Garbage collection and local variable type-precision and liveness in Java virtual machines , 1998, PLDI.

[14]  Amer Diwan,et al.  Type-based alias analysis , 1998, PLDI.

[15]  P. Carini ReportFlow-Sensitive Type Analysis for C + + , 1995 .

[16]  Laurie J. Hendren,et al.  Context-sensitive interprocedural points-to analysis in the presence of function pointers , 1994, PLDI '94.

[17]  Barbara G. Ryder,et al.  Scalable, flow-sensitive type inference for statically typed object-oriented languages , 1997 .

[18]  John Banning,et al.  : An Efficient , 2022 .

[19]  Urs Hölzle,et al.  Dynamic versus Static Optimization Techniques for Object-Oriented Languages , 1995, Theory Pract. Object Syst..

[20]  Denis Caromel,et al.  Towards seamless computing and metacomputing in Java , 1998 .

[21]  J PritchardD Concurrency: Practice and Experience , 1991 .

[22]  Jong-Deok Choi,et al.  Interprocedural pointer alias analysis , 1999, TOPL.

[23]  Andrew A. Chien,et al.  Precise concrete type inference for object-oriented languages , 1994, OOPSLA 1994.

[24]  Ken Kennedy,et al.  Interprocedural side-effect analysis in linear time , 1988, PLDI '88.

[25]  Martin C. Rinard,et al.  Pointer analysis for multithreaded programs , 1999, PLDI '99.

[26]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

[27]  David C. Cann,et al.  Compilation techniques for high-performance applicative computation , 1989 .

[28]  Jakob Rehof,et al.  Scalable context-sensitive flow analysis using instantiation constraints , 2000, PLDI '00.

[29]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[30]  Ken Kennedy,et al.  Fast interprocedual alias analysis , 1989, POPL '89.

[31]  Gary Carpenter 동적 사용자를 위한 Scalable 인증 그룹 키 교환 프로토콜 , 2005 .

[32]  Chris J. Scheiman,et al.  SuperWeb: research issues in Java‐based global computing , 1997 .

[33]  Barbara G. Ryder,et al.  Static Type Determination and Aliasing for C , 1990 .

[34]  Denis Caromel,et al.  Alias analysis on type inference for class hierarchy in Java , 2001, Proceedings 24th Australian Computer Science Conference. ACSC 2001.

[35]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[36]  Jong-Deok Choi,et al.  Efficient and precise modeling of exceptions for the analysis of Java programs , 1999, PASTE '99.

[37]  Peter R. Cappello,et al.  Javelin: Internet‐based parallel computing using Java , 1997 .

[38]  Eugene W. Myers,et al.  A precise inter-procedural data flow algorithm , 1981, POPL '81.

[39]  David Grove,et al.  Vortex: an optimizing compiler for object-oriented languages , 1996, OOPSLA '96.

[40]  Andrew A. Chien,et al.  Type Directed Cloning for Object-Oriented Programs , 1995, LCPC.

[41]  Denis Caromel,et al.  Alias analysis for Java with reference-set representation , 2001, Proceedings. Eighth International Conference on Parallel and Distributed Systems. ICPADS 2001.

[42]  Barbara G. Ryder,et al.  Interprocedural modification side effect analysis with pointer aliasing , 1993, PLDI '93.

[43]  유재우,et al.  THE PARSER GENERATORS , 1978 .

[44]  Barbara G. Ryder,et al.  A safe approximate algorithm for interprocedural aliasing , 1992, PLDI '92.

[45]  Urs Hölzle,et al.  Dynamic vs . Static Optimization Techniques for Object-Oriented Languages , 1996 .