The Community for Technology Leaders
Green Image
<p><b>Abstract</b>—At each program point, <it>points-to analysis</it> 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 <b>P</b>; 3) proof that an interprocedural points-to analysis problem with single-level types and exceptions with subtyping, but without dynamic dispatch, is <b>PSPACE-hard</b>, while the intraprocedural problem is <b>PSPACE-complete</b>. Other complexity characterizations of points-to analysis in programs without exceptions are presented, including an algorithm with worst-case bound of <tmath>${\rm O}(n^5)$</tmath>, which improves over the <tmath>${\rm O}(n^{7})$</tmath> worst-case bound achievable from previous approaches of Reps et al. [<ref rid="bibE048153" type="bib">53</ref>] and Landi and Ryder [<ref rid="bibE048142" type="bib">42</ref>].</p>
Points-to analysis, Java, exceptions, complexity.

W. A. Landi, R. Chatterjee and B. G. Ryder, "Complexity of Points-To Analysis of Java in the Presence of Exceptions," in IEEE Transactions on Software Engineering, vol. 27, no. , pp. 481-512, 2001.
156 ms
(Ver 3.3 (11022016))