Shrinking Reductions in SML.NET

  • Nick Benton ,
  • Andrew Kennedy ,
  • Sam Lindley ,
  • Claudio Russo

IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages, Lübeck, Germany |

Published by Springer-Verlag Berlin, Heidelberg

Publication

One performance-critical phase in the SML.NET compiler involves rewriting intermediate terms to monadic normal form and performing non-duplicating β-reductions. We present an imperative algorithm for this simplification phase, working with a mutable, pointer-based term representation, which significantly outperforms our existing functional algorithm. This is the first implementation and evaluation of a linear-time rewriting algorithm proposed by Appel and Jim.