Pruning Interference and Ready Dependence for Slicing Concurrent Java Programs

In this paper, we show how previous work on escape analysis can be adapted and extended to yield a static analysis that is efficient yet effective for reducing the number of interference dependence edges considered while slicing concurrent Java programs. The key idea is to statically detect situations where run-time heap objects are reachable from a single thread and use it to prune spurious interference dependence edges. We also show how this analysis can be extended to reduce the number of ready dependence edges – dependences that capture indefinite delay due to Java synchronization constructs.

[1]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[2]  James C. Corbett,et al.  Bandera: extracting finite-state models from Java source code , 2000, ICSE.

[3]  Bruno Blanchet,et al.  Escape analysis for object-oriented languages: application to Java , 1999, OOPSLA '99.

[4]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[5]  Jianjun Zhao,et al.  Slicing concurrent Java programs , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[6]  G. Ramalingam,et al.  Context-sensitive synchronization-sensitive analysis is undecidable , 2000, TOPL.

[7]  Urs Hölzle,et al.  Removing unnecessary synchronization in Java , 1999, OOPSLA '99.

[8]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[9]  Donglin Liang,et al.  Slicing objects using system dependence graphs , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[10]  Venkatesh Prasad Ranganath,et al.  OBJECT-FLOW ANALYSIS FOR OPTIMIZING FINITE-STATE MODELS OF JAVA SOFTWARE , 2002 .

[11]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[12]  George S. Avrunin,et al.  An efficient algorithm for computing MHP information for concurrent Java programs , 1999, ESEC/FSE-7.

[13]  Martin C. Rinard,et al.  A parameterized type system for race-free Java programs , 2001, OOPSLA '01.

[14]  Markus Müller-Olm,et al.  On optimal slicing of parallel programs , 2001, STOC '01.

[15]  James C. Corbett,et al.  A Formal Study of Slicing for Multi-threaded Programs with JVM Concurrency Primitives , 1999, SAS.

[16]  Emin Gün Sirer,et al.  Static Analyses for Eliminating Unnecessary Synchronization from Java Programs , 1999, SAS.

[17]  Jong-Deok Choi,et al.  Static Datarace Analysis for Multithreaded Object-Oriented Programs , 2001 .

[18]  Stephen N. Freund,et al.  Type-based race detection for Java , 2000, PLDI '00.

[19]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

[20]  Jens Krinke,et al.  Context-sensitive slicing of concurrent programs , 2003, ESEC/FSE-11.

[21]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[22]  BlanchetBruno Escape analysis for object-oriented languages , 1999 .

[23]  Mangala Gowri Nanda,et al.  Slicing concurrent programs , 2000, ISSTA '00.

[24]  Jong-Deok Choi,et al.  Efficient and precise datarace detection for multithreaded object-oriented programs , 2002, PLDI '02.

[25]  Stephen N. Freund,et al.  Detecting race conditions in large programs , 2001, PASTE '01.

[26]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[27]  Erik Ruf,et al.  Effective synchronization removal for Java , 2000, PLDI '00.

[28]  Phil Pfeiffer,et al.  Dependence analysis for pointer variables , 1989, PLDI '89.