Files
Abstract
Several programming languages guarantee that array subscripts are checked to ensure they are within the bounds of the array. While this guarantee improves the correctness and security of array-based code, it adds overhead to array references. This performance limitation is a signifi- cant obstacle preventing the scientific community from adopting compiler-enforced array bounds checks. To reduce the overhead, we have created an abstraction that called Index Confinement Regions (ICRs). The basic idea is to place an array into a very large virtual memory region, such that any reference to the array is confined to the region. Only the portion of the ICR corresponding to the array is permissible to access. ICRs reduce the number of necessary bounds checks for n-dimensional array access from 2n to 1 for C, and from n to 0 for Java, yielding a significant reduction in execution time for array-intensive applications.