CMU-CS-98-100
Run-time Code Generation and Modal-ML
Philip Wickline, Peter Lee, Frank Pfenning
January 1998
Also appears as CMU-CS-FOX-98-01
CMU-CS-98-100.ps
This paper presents early experience with a typed programming language
and compiler for run-time code generation. The language is an extension of
the SML language with modal operators, based on the @g[] language of
Davies and Pfenning. It allows programmers to specify precisely,
through types, the stages of computation in a program. The compiler generates
target code that makes use of run-time code generation in order to
exploit the staging information. The target machine is currently a
version of the Categorial Abstract Machine, called the CCAM, which we
have extended with facilities for run-time code generation.
Using this approach, the programmer is able to express the staging
that he wants to the compiler directly. It also provides a typed
framework in which to verify the correctness of his staging
intentions, and to discuss his staging decisions with other
programmers. Finally, it supports in a natural way multiple stages of
run-time specialization, so that dynamically generated code can be
used to generate yet further specialized code.
This paper presents an overview of the language, with several examples of
programs that illustrate key concepts and programming techniques. Then,
it discusses the CCAM and the compilation of @g[] programs into CCAM
code. Finally, the results of some experiments are shown, to demonstrate
the benefits of this style of run-time code generation for some
applications.
Keywords:
Modal logic, run-time code generation, generating extensions, partial
evaluation
17 pages
CS Technical Reports Collection Home Page
SCS Technical Reports Collection Home Page