Complexity of Points-To Analysis of Java in the Presence of Exceptions

  • Authors:
  • Ramkrishna Chatterjee;Barbara G. Ryder;William A. Landi

  • Affiliations:
  • Oracle Corp., Nashua, NH;Rutgers Univ., Piscataway, NJ;Siemens Corporate Research, Inc., Princeton, NJ

  • Venue:
  • IEEE Transactions on Software Engineering
  • Year:
  • 2001

Quantified Score

Hi-index 0.00

Visualization

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 difficulty 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: 1) 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++; 2) proof 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; 3) proof that an 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 ${\rm O}(n^5)$, which improves over the ${\rm O}(n^{7})$ worst-case bound achievable from previous approaches of Reps et al. [53] and Landi and Ryder [42].