Low Cost Array Bounds Checking for 64-bit Architectures ------------------------------------------------------- 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 significant obstacle preventing the scientific community from adopting compiler-enforced array bounds checks. To reduce the overhead, we have created and an abstraction called Index Confinement Regions (ICRs). The basic idea is to place an array into a 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 require a large virtual address space and a small page size to reduce fragmentation. Accordingly, we modified the Linux operating system to provide this support. ICRs reduce the number of necessary bounds checks for an 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.