• DocumentCode
    1497562
  • Title

    Complexity of points-to analysis of Java in the presence of exceptions

  • Author

    Chatterjee, Ramkrishna ; Ryder, Barbara G. ; Landi, William A.

  • Author_Institution
    Oracle Corp., Nashua, NH, USA
  • Volume
    27
  • Issue
    6
  • fYear
    2001
  • fDate
    6/1/2001 12:00:00 AM
  • Firstpage
    481
  • Lastpage
    512
  • 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 O(n5 ), which improves over the O(n7) worst-case bound achievable from previous approaches of T. Reps et al. (1995) and W.A. Landi and B.G. Ryder (1991)
  • Keywords
    C++ language; Java; computational complexity; exception handling; program diagnostics; programming language semantics; type theory; C++; Java; PSPACE-complete; PSPACE-hard; complexity characterizations; complexity results; data members; dynamic dispatch; exceptions; interprocedural points-to analysis problem; intraprocedural problem; object oriented systems; points-to analysis complexity; polynomial-time algorithm; program point; semantics based software tools; single-level types; statically typed object oriented programming languages; worst-case bound; Algorithm design and analysis; Information analysis; Java; Object oriented modeling; Object oriented programming; Polynomials; Robustness; Runtime; Software tools; Yarn;
  • fLanguage
    English
  • Journal_Title
    Software Engineering, IEEE Transactions on
  • Publisher
    ieee
  • ISSN
    0098-5589
  • Type

    jour

  • DOI
    10.1109/32.926173
  • Filename
    926173