MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Complexity of points-to analysis of Java in the presence of exceptions (2001) [1 citations — 0 self]

Download:
Download as a PDF | Download as a PS
by Ramkrishna Chatterjee, Barbara G. Ryder, William A. Landi
IEEE Transactions on Software Engineering
http://www.prolangs.rutgers.edu/refs/docs/tse01.ps
Add To MetaCart

Abstract:

At each program point, points-to analysis for statically typed object-oriented programming languages (e.g., Java, C) determines those objects to which a reference may refer (or a pointer may point) during execution. Points-to analysis is necessary for any semantics-based software tools for object-oriented systems. Our new complexity results for points-to analysis distinguish the di#culty of intraprocedural and interprocedural points-to analyses for languages with combinations of single-level types (i.e., types with data members only of primitive type), exceptions with or without subtyping, and dynamic dispatch. Our results include: The first polynomial-time algorithm for points-to analysis in the presence of exceptions that handles a robust subset of Java without threads and can be applied to C Proofs that the above algorithm is safe in general and provably precise on programs with single-level types and exceptions without subtyping, but not dynamic dispatch; thus this case is in P; Proof that interprocedural points-to analysis problem with single-level types and exceptions with subtyping, but without dynamic dispatch, is PSPACE-hard, while the intraprocedural problem is PSPACE-complete. Other complexity characterizations of points-to analysis in programs without exceptions are presented, including an algorithm with worst-case bound of O(n

Citations

2771 Introduction to Automata Theory, Language, and Computation – Hopcroft, Ullman - 1979
1588 Computational Complexity – Papadimitriou - 1994
1415 The Java Language Specification – Gosling, Joy, et al. - 1996
908 Program slicing – Weiser - 1984
519 Interprocedural slicing using dependence graphs – Horwitz, Reps, et al. - 1990
415 Points-to analysis in almost linear time – Steensgaard - 1996
403 Program Analysis and Specialization for the C Programming Language. PhDthesis, University of Copenhagen, DIKU, DIKU report 94/19 – Andersen - 1994
339 Effective context-sensitive pointer analysis for C programs – Wilson, Lam - 1995
329 Context-sensitive interprocedural points-to analysis in the presence of function pointers – Enami, Ghiya, et al. - 1994
301 A safe approximate algorithm for interprocedural pointer aliasing – Landi, Ryder - 1992
234 The Program Dependence Graph in a Software Development – Ottenstein, Ottenstein
234 Precise interprocedural dataflow analysis via graph reachability – Reps, Sagiv, et al. - 1995
216 Two approaches to interprocedural data flow analysis – Sharir, Pnueli - 1981
214 Using program slicing in software maintenance – Gallagher, Lyle - 1991
208 Object-oriented type inference – Palsberg, Schwartzbach - 1991
186 Fast static analysis of C++ virtual function calls – Bacon, Sweeney - 1996
179 Efficient flow-sensitive interprocedural computation of pointer-induced aliases and side effects – Choi, Burke, et al. - 1993
158 Precise Concrete Type Inference for Object-Oriented Languages – Plevyak, Chien - 1994
137 Fast and Accurate Flow-Insensitive Points-To Analysis – Shapiro, Horwitz - 1997
122 Context-insensitive alias analysis reconsidered – Ruf - 1995
114 Interprocedural modification side effect analysis with pointer aliasing – Landi, Ryder, et al. - 1993
111 Pointer-induced aliasing: A problem classification – Landi, Ryder - 1991
107 Global data flow analysis and iterative algorithms – Kam, Ullman - 1976
101 Undecidability of static analysis – Landi - 1992
91 Relevant Context Inference – Chatterjee, Ryder, et al. - 1999
89 The Semantic Approach to Program Slicing – Venkatesh - 1991
87 The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism – Agesen - 1995
82 Putting pointer analysis to work – Ghiya, Hendren - 1998
82 Slicing ObjectOriented Software – Larsen, Harrold - 1996
67 The effects of precision on pointer analysis – Shapiro, Horwitz - 1997
65 FlowInsensitive Interprocedural Alias Analysis – Burke, Carini, et al. - 1994
64 A practical interprocedural data flow analysis algorithm – Barth - 1978
62 Interprocedural def-use associations for C systems with single level pointers – Pande, Landi, et al. - 1994
61 The design of whole-program analysis tools – Atkinson, Griswold - 1996
61 Fast interprocedural class analysis – DeFouw, Grove, et al. - 1998
55 Lifetime analysis of dynamically allocated objects – RUGGIERI, T - 1988
54 Efficient computation of interprocedural definition-use chains – Harrold, Soffa - 1994
53 Interprocedural Aliasing in the Presence of Pointers – Landi - 1992
44 Inferring types in smalltalk – Suzuki - 1981
43 Program decomposition for pointer aliasing: A step towards practical analyses – Zhang, Ryder, et al. - 1996
42 Effective whole-program analysis in the presence of pointers – Atkinson, Griswold - 1998
42 Precise Interprocedural Chopping – Reps, Rosay - 1995
42 Slicing Class Hierarchies in C – Tip, Choi, et al. - 1996
40 System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow – SINHA, HARROLD, et al. - 1999
35 Reuse-driven interprocedural slicing – Harrold, Ci - 1998
34 Flow-insensitive C ++ pointers and polymorphism analysis and its application to slicing – TONELLA, ANTONIOL, et al. - 1997
32 More Experience with Data Flow Testing – Weyuker - 1993
30 Data-flow-based virtual function resolution – Pande, Ryder - 1996
26 Assesing the effects of flow-sensitivity on pointer alias analyses – Hind, Pioli - 1998
26 So a. Selecting and using data for integration testing – Harrold, L - 1991