next up previous
Next: Partial evaluation based models Up: Models of static behavioral Previous: Staticness in the 3-Lisp

Compile time MOPs and open compilers

Recently, open compilers [LKRR92] with compile time MOPs [Chi95] have been proposed to provide reflective capabilities limited to modifications that can be expressed as extensions to the language's standard compiler. Open compilers are essentially compilers that are reified and that can be modified from within the language. A compile time MOP is the protocol provided to the user for implementing modifications. Despite their name, compile time MOPs do not imply in our view that everything is done prior to program execution, but rather leaves the door open to dynamic compilation. In the static behavioral reflection perspective though, they must be limited to static modifications.


  
Figure 4: Binding times versus compiler technology
Binding-time signature Implementation tools
baf applyS (mS, aS) static execution (side-effects are residuals)
baf applyS (mS, aD) static compiler generation + static compilation
baf applyS (mD, aD) static compiler generation + dynamic compilation
baf applyD (mD, aD) dynamic compiler generation + dynamic compilation



Matt Hurlbut
1998-07-02