Publisher

Format

Type

Degree Level

Discipline

Rights

Metadata

Abstract

Program slicing is a popular program decomposition and analysis technique that extracts only those program statements that are relevant to particular points of interest. Executable slices are program slices that are independently executable and that correctly compute the values in the slicing criteria. Executable slices can be used during debugging and to improve program performance through paral- lelization of partially overlapping slices. While program slicing and the construction of executable slicers has been stud- ied in the past, there are few acceptable executable slicers available, even for pop- ular languages such as Java. In this work, we provide an extension to the T. J. Watson Libraries for Analysis (WALA), an open-source Java application static analysis suite, to generate fully executable slices. We analyze the problem of executable slice generation in the context of the capabilities provided and algorithms used by the WALA library. We then employ this understanding to augment the existing WALA static SSA slicer to efficiently track non-SSA data dependence, and couple this component with our executable slicer backend. We evaluate our slicer extension and find that it produces accurate executable slices for all programs that fall within the limitations of the WALA SSA slicer itself. Our extension to generate executable program slices facilitates one of the requirements of our larger project for a Java application automatic partitioner and parallelizer.