Annotation of researchv10no/cmd/sml/src/sepcomp/moduleComp.sig, revision 1.1.1.1

1.1       root        1: (* Copyright 1989 by AT&T Bell Laboratories *)
                      2: (* Modules compiler for New Jersey ML.   Nick Rothwell, LFCS, January 1989. *)
                      3: 
                      4: (* Generic signature to encompass the current slot-based representation, as well
                      5:    as the still-to-be-written lambda-based representation. *)
                      6: 
                      7: signature MODULE_COMPILER =
                      8:    sig
                      9:        type lvar sharing type lvar = int
                     10: 
                     11:        structure Absyn: BAREABSYN
                     12:          sharing Absyn = BareAbsyn
                     13:                                (* Needed because Translate is hard-wired. *)
                     14: 
                     15:        structure Lambda: LAMBDA
                     16: 
                     17:        type LambDynModule      (* Dynamic module with lambdas, lvars, etc. *)
                     18:        type CodeDynModule      (* Compiled (native code) module - no lvars. *)
                     19: 
                     20:        val emptyDynModule: LambDynModule       (* Starting state. *)
                     21: 
                     22:        exception AddDeclaration
                     23:        val addDeclaration: Absyn.dec * lvar list * LambDynModule -> LambDynModule
                     24: 
                     25:        val abstractDynModule: CodeDynModule * lvar list -> LambDynModule
                     26:                (* abstractDynModule takes a compiled module (presumably from an
                     27:                   "import"), and returns a lambda-based module with the code
                     28:                   module treated as an argument. We attach the lvars to the code
                     29:                   module, to allow reference from declarations below the
                     30:                   "import". *)
                     31: 
                     32:        exception CompileDynModule
                     33:        val compileDynModule:
                     34:          (Lambda.lexp -> Lambda.lexp) -> LambDynModule -> CodeDynModule
                     35:                (* Close and fold down all the lambdas, generate code. Takes
                     36:                   a lambda-optimising function as argument. *)
                     37: 
                     38:        val executeDynModule: CodeDynModule ->
                     39:           (lvar -> System.Unsafe.object) -> System.Unsafe.object array
                     40:                (* Execute the module, given the lookup function
                     41:                   (which I'll use to get at true globals like the
                     42:                   pervasives). *)
                     43: 
                     44:        val importDynModule: (LambDynModule * LambDynModule) -> LambDynModule
                     45:                (* importDynModule takes a module state, and embeds it
                     46:                   into an enclosing module state. *)
                     47:    end;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.