ACM Home Page
Please provide us with feedback. Feedback
Interprocedural slicing of multithreaded programs with applications to Java
Full text PdfPdf (1.44 MB)
Source ACM Transactions on Programming Languages and Systems (TOPLAS) archive
Volume 28 ,  Issue 6  (November 2006) table of contents
Pages: 1088 - 1144  
Year of Publication: 2006
ISSN:0164-0925
Authors
Mangala Gowri Nanda  IBM, India Research Laboratory, IIT, New Delhi, India
S. Ramesh  Indian Institute of Technology, Bombay, Powai, Mumbai, India
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 20,   Downloads (12 Months): 125,   Citation Count: 0
Additional Information:

abstract   references   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
Save this Article to a Binder    Display Formats: BibTex  EndNote ACM Ref   
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1186632.1186636
What is a DOI?

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
 
3
 
4
Binkley, D. and Gallagher, K. 1996. Program slicing. Advances in Computers 43.
5
6
7
8
 
9
10
 
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
 
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
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
 
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
47
 
48

Collaborative Colleagues:
Mangala Gowri Nanda: colleagues
S. Ramesh: colleagues