page 1  (66 pages)
2to next section

Compilation and Equivalence

of Imperative Objects

Andrew D. Gordon

University of Cambridge

Computer Laboratory

[email protected]

Paul D. Hankin

University of Cambridge

Computer Laboratory

[email protected]

S. B. Lassen

BRICS?

Department of Computer Science

University of Aarhus

[email protected]

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.