Transparent program transformations in the presence of opaque code

E Tilevich, Y Smaragdakis - … of the 5th International Conference on …, 2006 - dl.acm.org
Proceedings of the 5th International Conference on Generative programming …, 2006dl.acm.org
User-level indirection is the automatic rewriting of an application to interpose code that gets
executed upon program actions such as object field access, method call, object construction,
etc. The approach is constrained by the presence of opaque (native) code that cannot be
indirected and can invalidate the assumptions of any indirection transformation. In this
paper, we demonstrate the problem of employing user-level indirection in the presence of
native code. We then suggest reasonable assumptions on the behavior of native code and a …
User-level indirection is the automatic rewriting of an application to interpose code that gets executed upon program actions such as object field access, method call, object construction, etc. The approach is constrained by the presence of opaque (native) code that cannot be indirected and can invalidate the assumptions of any indirection transformation. In this paper, we demonstrate the problem of employing user-level indirection in the presence of native code. We then suggest reasonable assumptions on the behavior of native code and a simple analysis to compute the constraints they entail. We show that the type information at the native code interface is often a surprisingly sufficient approximation of native behavior for heuristically estimating when user-level indirection can be applied safely. Furthermore, we introduce a new user-level indirection approach that minimizes the constraints imposed by interactions with native code.
ACM Digital Library