An expression-tree oriented low-level IR, intended to facilitate machine-specific pattern-matching code-generation. Tree form is our "portable assembly language"; a loosely-typed non-register-allocated fine-grain representation that exposes all the details of object representation, method invocation, and runtime interfacing, which can easily be translated to the machine-specific Instrs of harpoon.IR.Assem for register allocation and scheduling before output.

The details of run-time organization and datatype representation are abstracted away by the machine-specific Frame, conforming to the interface in harpoon.Backend.Generic.Frame. Frames are not entirely machine-specific; all machines with roughly the same datatypes (for example, 32-bit words) which use the same runtime implementation will be able to share large parts of a Frame implementation. See harpoon.Backend.Generic.Frame for more details. @author C. Scott Ananian @author Duncan Bryce