|
ABSTRACT
Slicing is a well-known program reduction technique where for a given program P and a variable of interest v at some statement P in the program, a program slice contains those set of statements belonging to P that affect v. This article presents two algorithms for interprocedural slicing of concurrent programs--a context-insensitive algorithm and a context-sensitive algorithm. The context-insensitive algorithm is efficient and correct (it includes every statement that may affect the slicing criterion) but is imprecise since it may include certain extra statements that are unnecessary. Precise slicing has been shown to be undecidable for concurrent programs. However, the context-sensitive algorithm computes correct and reasonably precise slices, but has a worst-case exponential-time complexity. Our context-sensitive algorithm computes a closure of dependencies while ensuring that statements sliced in each thread belong to a realizable path in that thread.A realizable path in a thread with procedure calls is one that reflects the fact that when a procedure finishes, execution returns to the site of the most recently executed call in that thread. One of the novelties of this article is a practical solution to determine whether a given set of statements in a thread may belong to a realizable path. This solution is precise even in the presence of recursion and long call chains in the flow graph.The slicing algorithms are applicable to concurrent programs with shared memory, interleaving semantics, explicit wait/notify synchronization and monitors. We first give a solution for a simple model of concurrency and later show how to extend the solution to the Java concurrency model. We have implemented the algorithms for Java bytecode and give experimental results.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
|
| |
2
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
| |
3
|
|
| |
4
|
Binkley, D. and Gallagher, K. 1996. Program slicing. Advances in Computers 43.
|
 |
5
|
|
 |
6
|
|
 |
7
|
|
 |
8
|
|
| |
9
|
|
 |
10
|
Jong-Deok Choi , Manish Gupta , Mauricio Serrano , Vugranam C. Sreedhar , Sam Midkiff, Escape analysis for Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.1-19, November 01-05, 1999, Denver, Colorado, United States
|
| |
11
|
|
| |
12
|
Dijkstra, E. W. 1968. Programming Languages. Academic Press, London, England.
|
| |
13
|
|
| |
14
|
|
| |
15
|
Harman, M. and Danicic, S. 1995. Using program slicing to simplify testing. Softw. Test. Verifi. Reliab., 143--162.
|
 |
16
|
Mary Jean Harrold , Gregg Rothermel , Saurabh Sinha, Computation of interprocedural control dependence, Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis, p.11-20, March 02-04, 1998, Clearwater Beach, Florida, United States
|
| |
17
|
|
 |
18
|
|
 |
19
|
|
| |
20
|
JavaGrand. Benchmark suite---thread version 1.0. URL http://www.epcc.ed.ac.uk/computing/research_activities/java_grande/.
|
 |
21
|
|
 |
22
|
|
 |
23
|
|
 |
24
|
|
 |
25
|
|
| |
26
|
Millet, L. and Teitelbaum, T. 1998. Slicing Promela and its application to model checking, simulation, and protocol understanding. In Proceedings of the 4th Workshop on Automata Theoretic Verification with the SPIN Model Checker.
|
| |
27
|
|
| |
28
|
Nanda, M. G. 2001. Slicing concurrent Java programs: Issues and solutions. Ph.D. thesis, Department of Computer Science and Engineering, Indian Institute of Technology, Bombay. http://www.cse.iitb.ernet.in/~ramesh/gow-thesis.ps.gz; Examiners: Dr. Frank Tip, IBM T. J. Watson Research Center and Prof. R. Mall, Department of Computer Science and Engineering, Indian Institute of Technology, Kharagpur.
|
| |
29
|
|
 |
30
|
|
 |
31
|
|
| |
32
|
|
 |
33
|
|
 |
34
|
|
| |
35
|
Ranganath, V. P. and Hatcliff, J. 2004. Pruning interference and ready dependence for slicing concurrent java. In Proceedings of the 13th International Conference on Compiler Construction (CC).
|
 |
36
|
Thomas Reps , Susan Horwitz , Mooly Sagiv , Genevieve Rosay, Speeding up slicing, Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering, p.11-20, December 06-09, 1994, New Orleans, Louisiana, United States
|
 |
37
|
|
 |
38
|
|
 |
39
|
|
| |
40
|
|
| |
41
|
Sharir, M. and Pnueli, A. 1981. Two approaches to interprocedural data flow analysis. In Program Flow Analysis: Theory and Applications, S. S. Muchnick and N. D. Jones, Eds. Prentice-Hall, Englewood Cliffs, NJ, 189--233.
|
| |
42
|
Saurabh Sinha , Mary Jean Harrold , Gregg Rothermel, System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow, Proceedings of the 21st international conference on Software engineering, p.432-441, May 16-22, 1999, Los Angeles, California, United States
|
| |
43
|
Tip, F. 1995. A survey of program slicing techniques. J. Prog. Lang. 3, 121--181.
|
 |
44
|
|
| |
45
|
Weiser, M. 1984. Program slicing. IEEE Trans. Softw. Eng. 10, 352--357.
|
 |
46
|
John Whaley , Martin Rinard, Compositional pointer and escape analysis for Java programs, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.187-206, November 01-05, 1999, Denver, Colorado, United States
|
 |
47
|
|
| |
48
|
|
|