“…Such instrumentation consists of one or more checks, in the form of branches, on either pointer dereferences [11,12,18,26,31,34,37] or pointer arithmetic (e.g., ptr2 = &ptr[offset]) [1,23,38]. Moreover, the metadata describing object bounds must be recorded, propagated and retrieved numerous times, often from memory [18,23,26,31,34,37,38]. Given the many extra branches and memory accesses required, the run-time checks can introduce significant runtime overhead.…”