Interprocedural slicing of multithreaded programs with applications to Java']Java

被引:21
|
作者
Nanda, Mangala Gowri
Ramesh, S.
机构
[1] Indian Inst Technol, IBM, India Res Lab, New Delhi 110016, India
[2] Indian Inst Technol, Dept Comp Sci & Engn, Bombay 400076, Maharashtra, India
关键词
algorithms; design; multithreading; data dependence; interference dependence; context-sensitivity; strongly connected regions; program slicing;
D O I
10.1145/1186632.1186636
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
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.
引用
收藏
页码:1088 / 1144
页数:57
相关论文
共 50 条
  • [1] Program slicing of Java']Java programs
    Galindo, Carlos
    Perez, Sergio
    Silva, Josep
    [J]. JOURNAL OF LOGICAL AND ALGEBRAIC METHODS IN PROGRAMMING, 2023, 130
  • [2] Slicing concurrent Java']Java programs
    Zhao, JJ
    [J]. SEVENTH INTERNATIONAL WORKSHOP ON PROGRAM COMPREHENSION, PROCEEDINGS, 1999, : 126 - 133
  • [3] Slicing concurrent Java']Java programs
    Chen, ZQ
    Xu, BW
    [J]. ACM SIGPLAN NOTICES, 2001, 36 (04) : 41 - 47
  • [4] On verifying distributed multithreaded Java']Java programs
    Chen, J
    [J]. SOFTWARE QUALITY JOURNAL, 1999, 8 (04) : 321 - 341
  • [5] Exception analysis for multithreaded Java']Java programs
    Ryu, SY
    Yi, KK
    [J]. SECOND ASIA-PACIFIC CONFERENCE ON QUALITY SOFTWARE, PROCEEDINGS, 2001, : 23 - 30
  • [6] Visual debugging of multithreaded Java']Java programs
    Jackson, D
    [J]. IEEE SYMPOSIA ON HUMAN-CENTRIC COMPUTING LANGUAGES AND ENVIRONMENTS, PROCEEDINGS, 2001, : 340 - 341
  • [7] Dynamic slicing of Java']Java bytecode programs
    Szegedi, A
    Gyimóthy, T
    [J]. FIFTH IEEE INTERNATIONAL WORKSHOP ON SOURCE CODE ANALYSIS AND MANIPULATION, PROCEEDINGS, 2005, : 35 - 44
  • [8] A model for slicing JAVA']JAVA programs hierarchically
    Li, BX
    Fan, XC
    Pang, J
    Zhao, JJ
    [J]. JOURNAL OF COMPUTER SCIENCE AND TECHNOLOGY, 2004, 19 (06): : 848 - 858
  • [9] A thread monitoring system for multithreaded Java']Java programs
    Moon, Sewon
    Chang, Byeong-Mo
    [J]. ACM SIGPLAN NOTICES, 2006, 41 (05) : 21 - 29
  • [10] Multithreaded dependence graphs for concurrent Java']Java programs
    Zhao, JJ
    [J]. INTERNATIONAL SYMPOSIUM ON SOFTWARE ENGINEERING FOR PARALLEL AND DISTRIBUTED SYSTEMS, PROCEEDINGS, 1999, : 13 - 23