| ![]() |
Compilation and Equivalence
of Imperative Objects
Andrew D. Gordon
University of Cambridge
Computer Laboratory
Paul D. Hankin
University of Cambridge
Computer Laboratory
S. B. Lassen
BRICS?
Department of Computer Science
University of Aarhus
July 11, 1997
Abstract
We adopt the untyped imperative object calculus of Abadi and
Cardelli as a minimal setting in which to study problems of compilation
and program equivalence that arise when compiling objectoriented
languages. We present both a big-step and a small-step
substitution-based operational semantics for the calculus and prove
them equivalent to the closure-based operational semantics given by
Abadi and Cardelli. Our first result is a direct proof of the correctness
of compilation to a stack-based abstract machine via a small-step
decompilation algorithm. Our second result is that contextual equivalence
of objects coincides with a form of Mason and Talcott's CIU
equivalence; the latter provides a tractable means of establishing operational
equivalences. Finally, we prove correct an algorithm, used in
our prototype compiler, for statically resolving method offsets. This is
the first study of correctness of an object-oriented abstract machine,
and of operational equivalence for the imperative object calculus.
?Basic Research in Computer Science,
Centre of the Danish National Research Foundation.