A Combined Pointer and Purity Analysis for Java Programs

作者: Martin Rinard , Alexandru Salcianu

DOI:

关键词:

摘要: We present a new method purity analysis for Java programs. A is pure if it does not mutate any location that exists in the program state right before invocation. Our built on top of combined pointer and escape programs capable determining methods are even when do heap mutation, provided mutation affects only objects created after beginning method. Because our extracts precise representation region each may access, able to provide useful information with externally visible side effects. In particular, can recognize read-only parameters (a parameter transitively reachable from parameter) safe create paths parameter). The also generate regular expressions characterize locations mutates. have implemented used analyze several data structure implementations. results show effectively variety methods, including allocate complex auxiliary structures. Even pure, which enable developers usefully bound potential effects

参考文章(32)
E. Poll, F. Spoto, Static Analysis for JML's assignable Clauses Ghelli, G. (ed.), FOOL 10: International Workshops on Foundations of Object-Oriented Languages, New Orleans, LA, January 18, 2003. pp. 1- 16 ,(2003)
Martin Rinard, Darko Marinov, Sarfraz Khurshid, Dumitru Daniliuc, Alexandr Andoni, An Evaluation of Exhaustive Testing for Data Structures ,(2003)
Robert DeLine, Manuel Fähndrich, Typestates for Objects european conference on object-oriented programming. ,vol. 3086, pp. 465- 490 ,(2004) , 10.1007/978-3-540-24851-4_21
Adrian Birka, Compiler-Enforced Immutability for the Java Language Massachusetts Institute of Technology. ,(2003)
Flemming Nielson, Chris Hankin, Hanne R. Nielson, Principles of program analysis ,(1999)
James C. Corbett, Using shape analysis to reduce finite-state models of concurrent Java programs ACM Transactions on Software Engineering and Methodology. ,vol. 9, pp. 51- 93 ,(2000) , 10.1145/332740.332741
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata, Extended static checking for Java Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation - PLDI '02. ,vol. 37, pp. 234- 245 ,(2002) , 10.1145/512529.512558
Martin C. Carlisle, Anne Rogers, Software caching and computation migration in Olden acm sigplan symposium on principles and practice of parallel programming. ,vol. 30, pp. 29- 38 ,(1995) , 10.1145/209936.209941
K. Rustan M. Leino, Arnd Poetzsch-Heffter, Yunhong Zhou, Using data groups to specify and check side effects Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation - PLDI '02. ,vol. 37, pp. 246- 257 ,(2002) , 10.1145/512529.512559