Standard ML of New Jersey
Version 110.15, March 22, 1999

/cm/cs/what/smlnj/index.html

Warning

This version is intended for compiler hackers. We are in the midst of substantial structural changes, and this is a snapshot. It only supports the Sparc, Alpha, HPPA, and PowerPC architectures. Furthermore, there are performance bugs that have to be fixed.

Summary

This version contains a new and simplified interface between the code generator and runtime system.

GC API

The basic idea is that all communication to the runtime system is through a fixed set of registers. Anything extra must be bundled up and saved in one of these fixed registers. This simplifies the runtime system significantly, and reduces the overhead of getting into (and out of) C. The net result is a 4% improvement in compiling the compiler on the DEC Alpha.

See the paper GC-API under Compiler notes.

MLRISC

There is a new mechanism for setting flags and gathering statistics. Various flags and counters can be set at the interactive level, e.g. the following can be used to dump the flowgraph before register allocation:
	structure CG = Compiler.Control.MLRISC

	CG.getFlag "dump-cfg-before-ra" := true;
The currently implemented set of flags and counters are described in:
	src/MLRISC/FLAGS

Lal George
Last modified: Thu May 20 15:30:31 EDT 1999