In composing the Definition of Standard ML, the authors chose not to give an account of the operation of memory management. This was the right decision when focussing upon the abstract description of a sophisticated high-level language. However, the issues associated with memory management cannot be ignored by the compiler writer who must make decisions which have a great impact on the performance of the compiled code.
In the first half of this report, an abstract machine formalism of an efficient tag-free garbage-collector is presented which exposes many important memory management details such at the heaps, stacks, and environments. This model provides an implementor with an unambiguous and precise description of a memory management strategy for Standard ML. The second half of the report extends the abstract machine model to provide a formalism of distributed memory management in the LEMMA interface. The extended model provides an appropriate setting for an implementation of Concurrent ML.
This report is available in the following formats: