International Conference on Compiler Construction

CC 2005: Compiler Construction pp 172-187

Data Slicing: Separating the Heap into Independent Regions

  • Jeremy Condit
  • George C. Necula
Conference paper

DOI: 10.1007/978-3-540-31985-6_12

Volume 3443 of the book series Lecture Notes in Computer Science (LNCS)

Abstract

In this paper, we present a formal description of data slicing, which is a type-directed program transformation technique that separates a program’s heap into several independent regions. Pointers within each region mirror the structure of pointers in the original heap; however, each field whose type is a base type (e.g., the integer type) appears in only one of these regions. In addition, we discuss several applications of data slicing. First, data slicing can be used to add extra fields to existing data structures without compromising backward compatibility; the CCured project uses data slicing to preserve library compatibility in instrumented programs at a reasonable performance cost. Data slicing can also be used to improve locality by separating “hot” and “cold” fields in an array of data structures, and it can be used to protect sensitive data by separating “public” and “private” fields. Finally, data slicing can serve as a refactoring tool, allowing the programmer to split data structures while automatically updating the code that manipulates them.

Download to read the full conference paper text

Copyright information

© Springer-Verlag Berlin Heidelberg 2005

Authors and Affiliations

  • Jeremy Condit
    • 1
  • George C. Necula
    • 1
  1. 1.Department of Electrical Engineering and Computer ScienceUniversity of CaliforniaBerkeley