16.1.2  Overview

This compiler is a derivative of SML/NJ, a research compiler built collaboratively by Bell Labs, CMU, Yale, Cornell and Princeton, among others. (A good overview of its internals is contained in [13].)

The compiler proper is the part of Mythryl responsible for converting a single source file into native object code.

(See src/app/makelib for the higher-level task of compiling all the components of an application in the correct order and producing an executable binary for the application as a whole.)

The compiler is conceptually organized into two parts:

The back end in turn is subdivided into two parts:

The basic compiler code layout is:

The actual top-level compilation code is in makelib, src/app/makelib/main/makelib-g.pkg

This is where commandline switches to the compiler are processed. This file is however mostly concerned with "make" level functionality (traversing the source-file dependency graph and compiling individual files in topologically correct ordering) rather than compilation per se.

From a control flow point of view, the top of the core interactive compile function-call hiearchy is the c::compile call in


together with nearby code, while the core makefile-driven compilation code is in


which delegates most of the work to


and (especially) the compile_in_this_process function in


Either way, the actual heart of the compile-one-file logic is in


Comments and suggestions to: