Abstract by James Wasson
Lazy Transformation in a C Source Level Interpreter
When interpreting legacy code for the purpose of verification and validation, an interpreter can benefit from a transformation of the legacy code to a desugared equivalent. For large code bases, where not all code may be reached in one execution, the process of lazily desugaring reduces the resources needed to produce interpretable code. Before execution, transformations are applied to variables and not to methods in the global scope and a lookup table is prepared of all global definitions. Before execution begins, the starting method is looked up in the global table and then transformed. For each additional untransformed method called, that method is transformed and then execution in it begins. After a method’s transformation it is flagged as transformed. Performing as few transformations possible by doing them lazily saves a large portion of time and memory.