This document presents a new program representation called safety dependence that embeds safety information like type checks into optimized compiler-generated code. It uses proof variables to represent dependencies between unsafe operations and safety checks. The representation allows compilers to aggressively optimize code while preserving safety properties. It describes integrating this approach into an optimizing Java compiler called STARJIT. A type system is also presented that can verify memory safety for programs using this representation. The goal is to allow generating certified optimized code from safe languages like Java.
Related topics: