Representing Java Classes in a Typed Intermediate Language
Last modified: Fri Feb 23 18:41:13 2001 GMT.
We propose a conservative extension of the omega-order polymorphic lambda calculus (Fomega) as an intermediate language for compiling languages with name-based class and interface hierarchies. Our extension enriches standard Fomega with recursive types, existential types, and row polymorphism, but only ordered records with no subtyping. Basing our language on Fomega makes it also a suitable target for translation from other higher-order languages; this enables the safe interoperation between class-based and higher-order languages and the reuse of common type-directed optimization techniques, compiler back ends, and runtime support.
We present the formal semantics of our intermediate language and illustrate its features by providing a formal translation from a subset of Java, including classes, interfaces, and private instance variables. The translation preserves the name-based hierarchical relation between Java classes and interfaces, and allows access to private instance variables of parameters of the same class as the one defining the method. It also exposes the details of method invocation and instance variable access and allows many standard optimizations to be performed on the object-oriented code.
Copyright © 1996-2021 The FLINT Group
<flint at cs dot yale dot edu>
Yale University Department of Computer Science