SML/NJ Static Module Dependency Tree

Back to Cynbe's SML/NJ Internals Page.


One of the best ways to get a sense of the overall shape of an SML program is to map its static module dependency tree -- which modules depend on which others?

(In most C programs, one would instead look at the function-call tree. SML wins, as usual -- the module dependency tree is more concise and understandable, and captures more types of dependency.)

Here is such a tree for SML/NJ 110.52:

Each module is listed only once -- duplicate entries for a given module were resolved by dropping duplicates arbitrarily.

X86UnixCMB                                                      #                                                                               # system/smlnj/cmb/x86-unix.sml
    BootstrapCompileFn                                          #                                                                               # cm/bootstrap/btcompile.sml
        SpecificSymValFn                                        # Building a host/OS-specific environments for CM "preprocessor" variables.     # cm/main/specific-symval-fn.sml 
        StabModmapFn........................................... # Central modmap for stable libraries, to maximize sharing.                     # cm/stable/stabmm.sml 
        CompileFn                                               # "Compilation traversals"                                                      # cm/compile/compile.sml
        .   GeneralParams                                       # Parameters that differ between invocations of CM -- get bundled as 'info'.    # cm/main/general-params.sml
        .   DependencyGraph                                     # CM dependency graph down to compilation unit resolution.                      # cm/depend/graph.sml
        .   GroupGraph..........................................# CM dependency graph down to group resolution                                  # cm/depend/ggraph.sml
        .   StaticEnv                                           # Compile-time type information &tc                                             # compiler/ElabData/statenv/statenv.sml
        .       Bindings                                        # binding = VALbind CON- TYC- SIG- STR- FSG- FCT-  FIX-                         # compiler/ElabData/statenv/bindings.sml 
        .       .   Symbol                                      # namespace = VALspace TYC- SIG- STR- FCT- FIX- LAB- TYV- FSIG-                 # compiler/Basics/mlcomp/symbol.sig  
        .       .   Types.......................................# tycon = GENtyc DEF- PATH- RECORD- REC- FREE- ERROR-  Also tvKind tycpath...   # compiler/ElabData/types/types.sig
        .       .   VarCon                                      # var = VALvar OVLD- ERROR-   value = VAL CON                                   # compiler/ElabData/syntax/varcon.sig
        .       Env                                             # Generic environment                                                           # compiler/ElabData/basics/env.sml 
        .       Modules                                         # spec = TYCspec STR- FCT- VAL- CON-   Also entity= tycExp= strExp= fctExp=...  # compiler/ElabData/modules/modules.sig
        .   PersStamps..........................................# (aka "pid"s) persistant stamps, or globally unique identifiers (16 byte vecs) # compiler/Basics/mlcomp/persstamps.sig
        .   PrettyPrint                                         #                                                                               # compiler/Basics/print/pp-init.sml
        .   ErrorMsg                                            #                                                                               # compiler/Basics/errormsg/errormsg.sig
        .   SmlFile                                             # "top level parsing functions"                                                 # compiler/Parse/main/smlfile.sml
        BfcFn...................................................# "Keeping binfiles for short periods of time."                                 # cm/compile/bfc.sml
        StabilizeFn                                             # "Reading, generating, and writing stable libraries."                          # cm/stable/stabilize.sml
        VerStabFn                                               # Validate existing stable file for non-stable library.                         # cm/stable/verify.sml
        ParseFn                                                 # "Parser for CM description files"                                             # cm/parse/parse.sml
    X86CCallBackend.............................................#                                                                               # compiler/TopLevel/backend/x86-ccall.sml
        BackendFn                                               #                                                                               # compiler/TopLevel/backend/backend-fn.sml  
        .   Interact                                            #                                                                               # compiler/TopLevel/interact/interact.sml
        .   EvalLoopF                                           # fun evalLoop source = ...                                                     # compiler/TopLevel/interact/evalloop.sml
        .       TOP_COMPILE.....................................#                                                                               # compiler/TopLevel/main/compile.sig
        .       Time                                            #                                                                               # system/Basis/Exports/time.sml
        .       .   TimeImp                                     #                                                                               # system/Basis/Implementation/time.sml
        .       Environment                                     # environment = { static: staticEnv, dynamic: dynenv, symbolic: symenv }        # compiler/TopLevel/environ/environ.sml
        .       .   Access......................................# access = LVAR EXTERN PATH  conrep = UNTAGGED TAGGED TRANSPARENT CONSTANT ...  # compiler/ElabData/basics/access.sig
        .       .   StaticEnv                                   # type staticEnv, val empty fns look/bind/atop/symbols...                       # compiler/ElabData/statenv/staticenv.sml 
        .       .   DynamicEnv                                  #                                                                               # compiler/Execution/dynenv/dynenv.sml
        .       .       PidEnvFn                                # val empty  fns look bind atop mk ...                                          # compiler/Basics/mlcomp/pidenv.sml
        .       .       .   PersMap.............................#                                                                               # compiler/Basics/mlcomp/persmap.sml
        .       .       .       RedBlackMapFn                   # val empty  fns isEmpty insert find remove                                     # smlnj-lib/Util/redblack-map-fn.sml
        .       .       Unsafe                                  #                                                                               # system/Basis/Implementation/Unsafe/unsafe.sml
        .       .   SymbolicEnv                                 # structure SymbolicEnv : SYMENV = PidEnvFn (type binding = FLINT.prog)         # compiler/TopLevel/environ/symenv.sml
        .       .       FLINT...................................# types prog lexp value con dcon tkind rkind fkind cconv loopkind ilhint ...    # compiler/FLINT/flint/flint.sig
        .       .       .   PrimOp                              # types numkind arithop cmpop primop   fns prNumKind prPrimop ...               # compiler/FLINT/kernel/primop.sml
        .       .       .   LtyBasic                            #                                                                               # compiler/FLINT/kernel/ltybasic.sml  
        .       .       .   LambdaVar                           # type lvar  fns mkLvar lvarName lvarSym dupLvar prLvar sameName...             # compiler/ElabData/basics/lambdavar.sml
        .       .       .       IntHashTable....................# type 'a hash_table   fns mkTable insert lookup find remove inDomain numItems  # smlnj-lib/Util/int-hash-table.sml
        .       .       .       .   MONO_HASH_TABLE             # ditto                                                                         # smlnj-lib/Util/mono-hash-table-sig.sml 
        .       .       .       .   HashTableRep                # type ('a, 'b) bucket   fns alloc growTable listItems app map fold ...         # smlnj-lib/Util/hash-table-rep.sml
        .       .       .   LtyDef                              # abstract interface to FLINT tkind, tyc lty from LtyKernel.  MANY COMMENTS     # compiler/FLINT/kernel/ltydef.sml 
        .       .       .       DebIndex........................# (de Bruijn indices)                                                           # compiler/Elaborator/basics/debindex.sml
        .       .       .       PrimTyc                         # types ptyc primtyc   funs pt_arity pt_toint pt_fromint pt_print unboxed bxupd # compiler/FLINT/kernel/primtyc.sml
        .       .       .       .   PrimTycNum                  # ptn_int32 ptn_list ptn_etag ptn_cont ...                                      # compiler/Elaborator/basics/ptnum.sml
        .       .       .       LtyKernel                       # hashconsing & vanilla implementations of tkind tyc lty. tkindEnv tycEnv...    # compiler/FLINT/kernel/ltykernel.sml
        .       .       .       .   SMLofNJ.....................#                                                                               # system/Basis/Implementation/NJ/smlnj.sml
        .       .       .       .       Cont                    #  callcc/throw                                                                 # system/Basis/Implementation/NJ/cont.sml
        .       .       .       .       .   PrimTypes           #  PrimEnv PrimTypes UnrolledList InLine primops ...                            # compiler/Semant/statenv/prim.sml
        .       .       .       .       .   InlineT             #  PrimTypes InlineT Real*4 IntInf Word* Int* Char Poly* *Array                 # system/smlnj/init/built-in.sml
        .       .       .       .       .       Core............#  * ^ + - := o > < >= <= :: @ before                                           # system/smlnj/init/core.sml
        .       .       .       .       .       .   Assembly    # static semantics from dummy.sml, dyn sem from runtime                         # system/smlnj/init/dummy.sml
        .       .       .       .       IntervalTimer           # tick setIntTimer                                                              # system/Basis/Implementation/NJ/interval-timer.sml
        .       .       .       .       .   CInterface          # c_function bindCFun findSysConst bindSysConst                                 # system/Basis/Implementation/Unsafe/cinterface.sml 
        .       .       .       .       .   TimeImp.............# fromReal toRead + - < <= toString fromString fmt scan ...                     # system/Basis/Implementation/time.sml
        .       .       .       .       Internals               # prHook   sig handler table API   trade/debug/profile API                      # system/Basis/Implementation/NJ/internals.sml
        .       .       .       .       .   CleanUp             # type when   fns addCleaner removeCleaner clean                                # system/Basis/Implementation/NJ/cleanup.sml
        .       .       .       .       .   ProfControl         # var profMode  fns profileOn profileOff runtimeIndex minorGCIndex reset...     # system/Basis/Implementation/NJ/prof-control.sml
        .       .       .       .       .   GC..................# fns doGC messages                                                             # system/Basis/Implementation/NJ/gc.sml
        .       .       .       .       .   PrintHook           # var prHook   fn print                                                         # system/Basis/Implementation/NJ/print-hook.sml, src/system/smlnj/init/print-hook.sml, src/system/smlnj/init/pervasive.sml
        .       .       .       .       .       TextIO          #                                                                               # system/Basis/Implementation/Unix/posix-text-io.sml       
        .       .       .       .       .       TextIOFn        # print scanStream stdIn stdOut stdErr flushOut closeOut canInput lookahead ... # system/Basis/Implementation/IO/text-io-fn.sml 
        .       .       .       .       .       .   OSImp.......#                                                                               # system/Basis/Implementation/Unix/os.sml
        .       .       .       .       .       .       Posix   #                                                                               # system/Basis/Implementation/Posix/*   
        .       .       .       .       .       .       OS_*    #                                                                               # system/Basis/Implementation/Unix/*
        .       .       .       .       .       .   PrimIO      # functor PrimIO                                                                # system/Basis/Implementation/IO/prim-io-fn.sml
        .       .       .       .       .       TextPrimIO......# structure TextPrimIO = PrimIO ( ... )                                         # system/Basis/Implementation/IO/text-prim-io.sml    
        .       .       .       .       .       PosixTextPrimIO #                                                                               # system/Basis/Implementation/Unix/posix-text-prim-io.sml 
        .       .       .       .       .       PosixBinPrimIO  #                                                                               # system/Basis/Implementation/Unix/posix-bin-prim-io.sml
        .       .       .       .       .   InternalSignals     #                                                                               # system/Basis/Implementation/NJ/internal-signals.sml
        .       .       .       .       .   InternalTimer.......#                                                                               # system/Basis/Implementation/internal-timer.sml 
        .       .       .       .       .       PreBasis        # - + < scanString skipWS getNChars                                             # system/Basis/Implementation/pre-basis.sml
        .       .       .       .       SysInfo                 # getOSName getOSKind getOSVersion getHostArch getTargetArch hasMultiprocessing # system/Basis/Implementation/NJ/sysinfo.sml
        .       .       .       .       Weak                    # type weak   fns weak strong                                                   # system/Basis/Implementation/NJ/weak.sml
        .   CompileF............................................# DEFINES THE CORE PARSE-ELABORATE-CODEGEN SEQ OF NON-MLRISC PART OF COMPILER   # compiler/TopLevel/main/compile.sml
        .       CCONFIG                                         # types pickle hash pid guid  fns pickUnpick mkMkStamp                          # compiler/TopLevel/main/cconfig.sig
        .       CODEGENERATOR                                   # structure Machine, val architecture, fn flintcomp                             # compiler/TopLevel/main/code-generator.sig
        .       .   MACHINE_GEN                                 # "Generation of machine code from a list of CPS functions"                     # compiler/CodeGen/main/machine-gen.sig
        .       .       MACHINE.................................#                                                                               # compiler/CodeGen/main/machine.sig     
        .       .       .   INSN_PROPERTIES                     # types kind target  fns moveInstr moveTmpR moveDstSrc nop immedRange loadImmed # MLRISC/instructions/insnProps.sig   
        .       .       .       INSTRUCTIONS                    # types instruction operand addressing_mode ea instr                            # MLRISC/instructions/instructions.sig   
        .       .       .       .   CELLS_BASIS                 # types cellkind cell cellColor  strs CellSet SortedCells HashTable ColorTable  # MLRISC/instructions/cells-basis.sig
        .       .       .       CELLS...........................# architecture-specific abstractions on cells (= registers, memory words &tc)   # MLRISC/instructions/cells.sig
        .       .       .   INSTRUCTION_EMITTER                 #                                                                               # MLRISC/emit/instruction-emitter.sig  
        .       .       .       INSTRUCTION_STREAM              # type ('a 'b 'c 'd) stream                                                     # MLRISC/instructions/stream.sig
        .       .       .       .   PSEUDO_OPS                  # type pseudo_op   fns toString emitValue sizeOf adjustLabels                   # MLRISC/flowgraph/pseudo-ops.sig  
        .       .       .       .       MLTREE..................# types controlflow mlrisc ccexp fexp oper rep rexp stm rewriter hasher printer # MLRISC/mltree/mltree.sig     
        .       .       .       .       .   CONSTANT            # type const   fns toString valueOf hash ==                                     # MLRISC/instructions/constant.sig       
        .       .       .       .       .   REGION              # type region   vals stack readonly memory   fn toString                        # MLRISC/instructions/region.sig
        .       .       .       .       .   MLTREE_BASIS        # types attribs misc_op cond fcond rounding_mode div_rounding_mode ext ty fty   # MLRISC/mltree/mltree-basis.sig
        .       .       .       .       .   MLTREE_EXTENSION....# types ('s r' 'f c)  sx rx fx ccx                                              # MLRISC/mltree/mltree-extension.sig   
        .       .       .       .       .   MACHINE_INT         # defines two's complement arithmetic.                                          # MLRISC/mltree/machine-int.sig   
        .       .       .       .       CLIENT_PSEUDO_OPS       # type pseudo_op  fns toString emitValue sizeOf adjustLabels                    # MLRISC/flowgraph/client-pseudo-ops.sig
        .       .       .       .       .   PSEUDO_OPS_BASIS    # type 'a pseudo_op  fns toString lexpToString defineLabel emitValue sizeOf     # MLRISC/flowgraph/pseudo-ops-basis.sig
        .       .       .   CONTROL_FLOW_GRAPH..................# types cfg node edge edge_info edge_kind block data block_kind weight          # MLRISC/IR/mlrisc-cfg.sig
        .       .       .       FREQ                            # type freq = int                                                               # MLRISC/library/freeq.sig
        .       .       MLTREECOMP                              # types instrStream mltreeStream selectInstructions                             # MLRISC/mltree/mltreecomp.sig
        .       .       .   MLTREEGEN                           # "various generic MLTREE transformations"                                      # MLRISC/mltree/mltree-gen.sig
        .       .       .       MLTREE_SIZE.....................# type intTy   fns size fsize   (of an expression)                              # MLRISC/mltree/mltree-size.sig
        .       .       .   MLTREE_STREAM                       # types reducer,  ('i,'cellset, 'cfg) stream                                    # MLRISC/mltree/mltree-stream.sig
        .       .       INVOKE_GC                               # "This is an alternative module for generating GC code."                       # compiler/CodeGen/cpscompile/invokegc.sig
        .       .       SHUFFLE                                 # "implements the parallel copy instruction as a sequence of moves."            # MLRISC/instructions/shuffle.sig
        .       .       MACH_SPEC...............................# "various machine and code-generator specific parameters."                     # compiler/CodeGen/main/machspec.sig
        .       .       CPS                                     # types record_kind pkind cty lvar value accesspath fun_kind cexp               # compiler/FLINT/cps/cps.sig
        .       CompInfo                                        # type 'absyn compInfo  --  contains fns mkStamp mkLvar error errorMatch        # compiler/ElabData/main/compinfo.sml
        .       .   Stamps                                      # types pid stamp generator converter  fns eq newGenerator fresh newConverter   # compiler/ElabData/basics/stamps.sml
        .       Stats...........................................# types stat counter phase  fns newCounter getCounter newStat makeState doPhase # compiler/Basics/stats/stats.sml
        .       Absyn                                           # types region exp rule pat dec strexp fctexp vb rvb eb strb fctb fnrules       # compiler/ElabData/syntax/absyn.sml
        .       .   Fixity                                      # type fixity  fns infixleft infixright fixityToString                          # compiler/Basics/mlcomp/fixity.sml
        .       .   SymPath                                     # type path   funs null extend prepend append first rest length last equal      # compiler/ElabData/basics/sympaths.sml
        .       ElabTop.........................................# structure ElabTop = ElabTopFn (structure ElabMod = ElabMod)                   # compiler/Semant/elaborate/elabtop.sml
        .       .   ElabTopFn                                   # fn elab                                                                       # compiler/Elaborator/elaborate/elabtop.sml
        .       .       InvPath                                 # type path    fns null extend append last equal toString                       # compiler/ElabData/basics/sympaths.sml
        .       .       ModuleUtil                              #                                                                               # compiler/ElabData/modules/moduleutil.sml
        .       .       .   ConvertPaths........................# types spath ipath   fns invertSPath invertIPath                               # compiler/ElabData/basics/sympaths.sml
        .       .       .   TypesUtil                           # fns tycName tycStamp tycPath tycEntPath tyconArity eqTycon prune equalType    # compiler/ElabData/types/typesutil.sml
        .       .       .       Substring                       # type substring  fns base string substring extract full isEmpty getc first ... # system/smlnj/init/substring.sml
        .       .       .       CoreBasicTypes                  #                                                                               # compiler/ElabData/types/core-basictypes.sml
        .       .       .   ModuleId............................# types tycId sigId strId fctId envId   fns sameTyc lookTyc insertTyc uLookTyc  # compiler/ElabData/modules/moduleid.sml
        .       .       Lookup                                  # fns lookFix lookSig lookFsig lookValSym lookGen lookVal lookStr lookStrDef... # compiler/ElabData/statenv/lookup.sml
        .       .       ElabUtil                                # types context compInfo  fns patproc completeMatch FUNdec pat_to_string        # compiler/Elaborator/elaborate/elabutil.sml
        .       .       .   BasicTypes                          # tycons and dcons galore                                                       # compiler/Elaborator/types/basictypes.sml
        .       .       .   EqTypes.............................# fns eqAnalyse defineEqProps checkEqTySig isEqTycon isEqType                   # compiler/Elaborator/types/eqtypes.sml
        .       .       .   Ast                                 # types path fixitem(a) literal sigConst(a) exp rule pat strexp fctexp sigexp   # compiler/Parse/ast/ast.sml
        .       .       .   AstUtil                             # fns checkFix makeSEQdec layered QuoteExp AntiquoteExp                         # compiler/Parse/ast/astutil.sml
        .       .       .   PrintUtil                           # fns printSequence printClosedSequence printSym formatQid trimmed              # compiler/Basics/print/printutil.sml
        .       .       EntityEnv...............................# types entVar entPath entityEnv  fns mark bind atop toLIst look lookEP         # compiler/ElabData/modules/entityenv.sml
        .       .       EntPath                                 # fns repcons ep2rep rep2ep eqEntVar eqEntPath cmpEntVar cmpEntPath nullEntPath # compiler/ElabData/modules/entpath.sml 
        .       .       EntPathContext                          # type context  fns isEmpty enterOpen lookTycPath bindTycPath bindTycLongPath   # compiler/ElabData/modules/epcontext.sml
        .       .       ElabDebug                               # fns debugPrint ppSymList envSymbols withInternals                             # compiler/Elaborator/elaborate/elabdebug.sml
        .       .       PPUtil..................................# type break_style  fns ppSequence ppSym mlstr pp_mlstr pp_intinf ppvseq ...    # compiler/Elaborator/print/pputil.sml
        .       .   ElabMod                                     # structure ElabMod = ElabModFn( SigMatch, Typecheck )                          # compiler/Semant/elaborate/elabmod.sml
        .       .       ElabModFn                               # fn elabDecl                                                                   # compiler/Elaborator/elaborate/elabmod.sml
        .       .       .   ElabType                            # fns elabType elabTyvList elabTYPEdec elabDATATYPEdec                          # compiler/Elaborator/elaborate/elabtype.sml
        .       .       .       TyvarSet........................# type tyvarset  fns mkTyvarset union diff diffPure elements                    # compiler/Elaborator/elaborate/tyvarset.sml
        .       .       .   ElabCore                            # fns elabDec elabABSTYPEdec                                                    # compiler/Elaborator/elaborate/elabcore.sml
        .       .       .       SymbolHashTable                 # structure SymbolHashTable = HashTableFn ( ... )                               # compiler/Basics/miscutil/symbol-hashtable.sml
        .       .       .           HashTableFn                 # type hash_table(a)  fns mkTable clear inster lookup find remove ...           # smlnj-lib/Util/hash-table-fn.sml
        .       .       .   ElabSig.............................# fns elabSig elabFctSig                                                        # compiler/Elaborator/elaborate/elabsig.sml
        .       .       .       SourceMap                       # types sourcemap charpos pair(a) regions sourceloc  fns newmap resynch filepos # compiler/Basics/source/sourcemap.sml
        .       .       .       ExpandTycon                     # type sigContext  fn expandTycon                                               # compiler/Elaborator/modules/expandtycon.sml
        .       .       SigMatch                                # structure SigMatch = SigMatchFn (EvalEntity)                                  # compiler/Semant/modules/sigmatch.sml
        .       .       .   SigMatchFn..........................# fns matchStr matchFct packStr applyFct                                        # compiler/Elaborator/modules/sigmatch.sml
        .       .       .   EvalEntity                          # fn evalApp                                                                    # compiler/Elaborator/modules/evalent.sml 
        .       .       .       Instantiate                     # fns instParam instFmBody instAbstr getTycPaths                                # compiler/Elaborator/modules/instantiate.sml
        .       .       Typecheck                               # structure Typecheck = TypecheckFn( ... )                                      # compiler/Semant/types/typecheck.sml
        .       .       .   TypecheckFn.........................# fn decType                                                                    # compiler/Elaborator/types/typecheck.sml
        .       .       .       Unify                           # type unifyFail  fn unifyTy                                                    # compiler/Elaborator/types/unify.sml
        .       .       .           OverloadLit                 # fns new isLiteralTy                                                           # compiler/Elaborator/types/overloadlit.sml
        .       SpecialSymbols                                  # vars paramId functorId hiddenId tempStrId fctbodyId ananfsigId resultId       # compiler/Elaborator/elaborate/specialsyms.sml
        .       SProf...........................................# fn instrumentDec    CURRENTLY NONFUNCTIONAL Chesakov's SProf to be used       # compiler/DebugProf/profile/sprof.sml
        .       TProf                                           # fn instrumDec                                                                 # compiler/DebugProf/profile/tprof.sml 
        .       InlInfo                                         # type inl_info   fns INL_PRIM INL_STR IN_NO match prInfo isPrimInfo pureInfo   # compiler/Semant/basics/inlinfo.sml
        .       Translate                                       # fn transDec                                                                   # compiler/FLINT/trans/translate.sml
        .       .   PLambda.....................................# types con lexp tkind tyc lty lvar dataconstr dict                             # compiler/FLINT/plambda/plambda.sml
        .       .   PLambdaType                                 # structure PLambdaType : LTYEXTERN = LtyExtern                                 # compiler/FLINT/plambda/plambdatype.sml
        .       .   MatchComp                                   # types toTcLt genintinfswitch  fns bindCompile matchCompile handCompile        # compiler/FLINT/trans/matchcomp.sml
        .       .       TemplateExpansion                       # fns templateExpandPattern lookup                                              # compiler/FLINT/trans/tempexpn.sml
        .       .       MCCommon................................# types simp dconinfo pcon path dectree  fns constantEq pathEq lookupPath       # compiler/FLINT/trans/mccommon.sml
        .       .   LiteralToNum                                # Conversions between infints and fixed sizes                                   # compiler/MiscUtil/util/literal-to-num.sml
        .       .   TransTypes                                  # fn genTT                                                                      # compiler/FLINT/trans/transtypes.sml
        .       LSplitInline                                    # types flint pid importTree import symenv                                      # compiler/FLINT/lsplit/ls-inline.sml
        .       .   ImportTree..................................# types importTree import                                                       # compiler/Execution/main/importtree.sml 
        .       Control                                         #                                                                               # compiler/TopLevel/main/control.sml
        .       .   BasicControl                                # vals printWarnings topregistry   fn nest                                      # compiler/Basics/main/basiccontrol.sml
        .       .   ParserControl                               # vals primaryPrompt secondaryPrompt lazysml overloadKW quotation               # compiler/Parse/main/parsercontrol.sml
        .       .   Control_MC..................................#                                                                               # compiler/TopLevel/main/control.sml
        .       .   Control_CG                                  #                                                                               # compiler/TopLevel/main/control.sml
        .       .   Control_Print                               # refs printDepth printLength stringDepth intinfDepth printLoop signatures      # compiler/Basics/print/printcontrol.sml
        .       .   MLRiscControl                               # various counters and optimization controls &tc                                # MLRISC/control/mlrisc-control.sml
        .       .   FLINT_Control...............................# flags print printPhases printFctTypes ...                                     # compiler/FLINT/main/control.sml
        .       .   ElabControl                                 #                                                                               # compiler/Elaborator/basics/elabcontrol.sml
        .       .   ElabDataControl                             # flags save-lvar-names ee-debugging mu-debugging                               # compiler/ElabData/main/edcontrol.sml
        .       .   ControlRegistry                             # types registry control_info  fns register registerSet nest control controls   # smlnj-lib/Controls/registry.sml
        .       .   Controls....................................# types priority control(a) value_cvt(a)  fns control genControl name get set   # smlnj-lib/Controls/controls.sml
        .       .       ControlReps                             # types priority control(a) value_cvt(a)  fn priorityGT                         # smlnj-lib/Controls/control-reps.sml
        .       .   ControlSet                                  # types control(a) control_set(a,b)  fns new member find insert remove infoOf   # smlnj-lib/Controls/control-set.sml
        .       .   TDPInstrument                               # "annotations for tracing- debugging- and profiling support."                  # compiler/DebugProf/profile/tdp-instrument.sml
        .   ProfileFn...........................................# fns getProfMode setProfMode getTimingMode setTimingMode report reportAll      # compiler/DebugProf/profile/profile-fn.sml
        .       ProfEnv                                         # type env  val replace  fn prof                                                # compiler/DebugProf/profile/prof-env.sml
        .       Profile                                         #                                                                               # compiler/DebugProf/profile/profile.sig
        .   ProfEnvFn                                           #                                                                               # compiler/DebugProf/profile/prof-env.sml
        X86MC...................................................#                                                                               # compiler/CodeGen/x86/x86gen.sml
        .   FLINTComp                                           #                                                                               # compiler/FLINT/main/flintcomp.sml
        .       Convert                                         # fn convert: FLINT.prog -> CPS.function                                        # compiler/FLINT/cps/convert.sml 
        .       CPStrans                                        # fn cpstrans: CPS.function -> CPS.function                                     # compiler/FLINT/cps/cpstrans.sml
        .       CPSopt..........................................# fn reduce: (CPS.function, Unsafe.Object.object option, bool) -> CPS.function  # compiler/FLINT/cpsopt/cpsopt.sml
        .       Closure                                         # fn closeCPS: CPS.function -> CPS.function                                     # compiler/FLINT/clos/closure.sml
        .       SpillFn                                         # fn spill: CPS.function list -> CPS.function list                              # compiler/CodeGen/cpscompile/spill.sml
        .       CpsSplitFun                                     # fn cpsSplit: CPS.function -> CPS.function list                                # compiler/FLINT/clos/cps-split.sml 
        .       PPFlint.........................................# fns printFKind printRKind printCon printSval printLexp printFundec printProg  # compiler/FLINT/flint/ppflint.sml 
        .       LtyExtern                                       # hides FLINT type tkind tyc lty behind functional abstraction layer            # /compiler/FLINT/kernel/ltyextern.sml
        .   X86CG                                               #                                                                               # compiler/CodeGen/x86/x86CG.sml
        .       MachineGen                                      # "MLRISC backend functor -- Generate machine code from a list of CPS functions"# compiler/CodeGen/main/machine-gen.sml
        .       .   Graph.......................................# ?
        .       .   CFGViewer                                   #                                                                               # MLRISC/visualization/cfgViewer.sml
        .       .       GraphLayout                             # types format style('n,'e,'g) layout  fn makeLayout                            # MLRISC/visualization/graphLayout.sml
        .       .       FormatInstruction                       # "a very simple prettyprinting fn for visualization"                           # MLRISC/visualization/mlrisc-format-insn.sml
        .       .   GraphViewer.................................# fn view: GraphLayout.layout -> unit                                           # MLRISC/visualization/graphViewer.sml
        .       .   AllDisplays                                 # fns visualize program suffix                                                  # MLRISC/visualization/allDisplays.sml
        .       .   CFGExpandCopies                             # val name   fn run: CFG.cfg -> CFG.cfg                                         # MLRISC/flowgraph/cfgExpandCopies.sml
        .       .   EstimateLoopProbsFn                         # fn estimate: CFG.cfg -> unit                                                  # MLRISC/frequencies/estimate-loop-probs-fn.sml
        .       .       DominatorTree...........................# types dom_info dominator_tree(n,e,g) postdominator_tree(n,e,g) node  fns ...  # MLRISC/ir-archive/dominator.sml 
        .       .       .   ReversedGraphView                   # fn rev_view : ('n,'e,'g) Graph.graph -> ('n,'e,'g) Graph.graph                # MLRISC/graphs/revgraph.sml
        .       .       DirectedGraph                           # fns graph: string * 'g * int -> ('n,'e,'g) Graph.graph   newGraph             # MLRISC/graphs/digraph.sml
        .       .       LoopStructure                           # types loop(n,e,g) loop_info(n,e,g) loop_structure(n,e,g)  fns dom header ...  # MLRISC/ir-archive/loop-structure.sml
        .       .       Annotations.............................# types annotation annotations propList property(a) flag   fns new toString ... # MLRISC/library/annotations.sml
        .       .       Probability                             # type prob  fns never unlikely likely always prob + 0 * / not percent toString # MLRISC/library/probability.sml
        .       .   ComputeFreqsFn                              # fns compute: CFG.cfg -> unit                                                  # MLRISC/frequencies/compute-freqs-fn.sml
        .       .       Format                                  # printf clone:  type fmt_item  fns format formatf                              # smlnj-lib/Util/format.sml
        .       .   BlockPlacement..............................# fn blockPlacement: CFG.cfg -> (CFG.cfg * CFG.node list)                       # MLRISC/block-placement/block-placement.sml
        .       .       DefaultBlockPlacement                   #                                                                               # MLRISC/block-placement/default-block-placement.sml
        .       .       WeightedPlacementFn                     #                                                                               # MLRISC/block-placement/weighted-block-placement-fn.sml
        .       .   CheckPlacementFn                            # fn check: (CFG.cfg * CFG.node list) -> unit                                   # MLRISC/block-placement/check-placement-fn.sml 
        .       .   JumpChainElimFn.............................# fn run:   (CFG.cfg * CFG.node list) -> (CFG.cfg * CFG.node list)              # MLRISC/block-placement/jump-chain-elim-fn.sml 
        .       .   InvokeGC                                    # types t stream  fns init stdCheckLimit emitModuleGC callGC ...                # compiler/CodeGen/cpscompile/invokegc.sml 
        .       .   MLRiscGen                                   # fn codegen: { funcs: fn { ... } -> (unit -> int)                              # compiler/CodeGen/main/mlriscGen.sml
        .       .   BuildFlowGraph                              # type instrStream  val build: unit -> instrStream                              # MLRISC/flowgraph/buildFlowgraph.sml
        .       X86Instr........................................# types operand addressing_mode ea cond binaryOp multiDivOp unaryOp shiftOp...  # MLRISC/x86/instructions/x86Instr.sml
        .       X86CFG                                          #                                                                               # compiler/CodeGen/x86/x86MLTree.sml
        .       .   ControlFlowGraph                            # types cfg edge node ... fns emit cfg new insns annotations liveOut freq ...   # MLRISC/flowgraph/cfg.sml 
        .       X86CpsRegs                                      # "The registers used for CPS compilation."                                     # compiler/CodeGen/x86/x86CpsRegs.sml
        .       .   X86Cells....................................# AUTOGENERATED from x86.mdl  vals cellkinds... eax ecx... showGP showFP showCC # MLRISC/x86/instructions/x86Cells.sml
        .       .       x86.mdl                                 # "32bit, x86 instruction set." (Main machine-specific definition file.)        # MLRISC/x86/x86.mdl 
        .       X86Spec                                         # endianness, numRegs &tc                                                       # compiler/CodeGen/x86/x86spec.sml
        .       X86ClientPseudoOps                              # structure X86ClientPseudoOps = SMLNJPseudoOps(structure Asm=X86GasPseudoOps)  # compiler/CodeGen/x86/x86MLTree.sml 
        .       .   SMLNJPseudoOps..............................# types smlnj_pseudo_op pseudo_op  fns toString emitValue sizeOf adjustLabels   # compiler/CodeGen/cpscompile/smlnj-pseudoOps.sml 
        .       .       PseudoOpsBasisTyp                       # type pseudo_op(labexp,ext)                                                    # MLRISC/flowgraph/pseudo-ops-basis-typ.sml
        .       .   X86GasPseudoOps                             # type pseudo_op(a)  fns toSTring lexpToString defineLabel emitValue sizeOf     # MLRISC/x86/flowgraph/x86GasPseudoOps.sml
        .       X86PseudoOps                                    # structure X86PseudoOps = PseudoOps(structure Client = X86ClientPseudoOps)     # /compiler/CodeGen/x86/x86MLTree.sml 
        .       .   PseudoOps...................................# type pseudo_op     fns toString emitValue sizeOf adjustLabels                 # MLRISC/flowgraph/pseudo-ops.sml
        .       X86_SMLNJMLTreeExt                              # types sx/rx/ccx/fx(s,r,f,c)                                                   # compiler/CodeGen/x86/x86-mltreeext.sml
        .       .   X86InstrExt                                 # types fsz sext(s,r,f,c)                                                       # MLRISC/x86/instructions/x86instr-ext.sml
        .       X86Props                                        # type kind target fns instrKind moveInstr nop jump loadImmed annotate defUse...# MLRISC/x86/instructions/x86Props.sml
        .       X86AsmEmitter...................................# AUTOGENERATED from x86.mdl  fns error makeStream ...                          # MLRISC/x86/emit/x86Asm.sml 
        .       X86Shuffle                                      # parallel copies:  type t  fns shuffle shufflefp                               # MLRISC/x86/instructions/x86Shuffle.sml
        .       IA32SVID_CCalls                                 # "C function calls for the IA32 using the System V ABI" type c_arg  fn genCall # MLRISC/x86/c-calls/ia32-svid.sml
        .       .   CTypes                                      # types c_type c_int calling_convention c_proto                                 # MLRISC/c-calls/c-types.sml
        .       X86MLTree.......................................# MLTreeF( SMLNJConstant, CPSRegions, X86_SMLNJMLTreeExt )                      # compiler/CodeGen/x86/x86MLTree.sml 
        .       .   MLTreeF                                     # types stm rexp fexp ccexp mlrisc rewriter hasher equality printer ...         # MLRISC/mltree/mltree.sml
        .       .   SMLNJConstant                               # type const  fns toString valueOf hash ==                                      # compiler/CodeGen/cpscompile/smlnj-const.sml
        .       .   X86_SMLNJMLTreeExt                          # types sx/rx/ccx/fx(s,r,f,c)                                                   # compiler/CodeGen/x86/x86-mltreeext.sml
        .       X86OmitFramePointer.............................# fn omitframeptr: {vfp,idelta,cfg} -> unit                                     # MLRISC/x86/omit-frameptr/x86omit-frameptr.sml
        .       X86MemRegs                                      # fn memReg                                                                     # compiler/CodeGen/x86/x86MemRegs.sml
        .       CPSRegions                                      # type region   vals stack spill readonly memory storelist real  fns toString   # compiler/CodeGen/cpscompile/cpsRegions.sml
        .       .   PointsTo                                    # types edgekind cell region edges  fns reset newTop pi sub mkRecord app ret    # MLRISC/aliasing/pointsTo.sml
        .       X86.............................................# types instrStream mltreeStream  fn selectInstructions: instrSTream -> ...     # MLRISC/x86/mltree/x86.sml
        .       MLTreeUtils                                     # "Common operations on MLTREE."  fns hashStm eqStm show stmToString ...        # MLRISC/mltree/mltree-utils.sml
        .       X86MLTreeExtComp                                # type reducer  fns compileSext compileRext compileFext compileCCext            # compiler/CodeGen/x86/x86MLTreeExtComp.sml
        .       .   X86CompInstrExt                             # "emit code for x86 instr set extensions"   type reducer  fn compileSext       # MLRISC/x86/instructions/x86comp-instr-ext.sml
        .       X86MLTreeStream.................................#  structure X86MLTreeStream = MLTreeStream( X86MLTree, X86Stream )             # compiler/CodeGen/x86/x86MLTree.sml
        .       .   MLTreeStream                                # types stream(i,cellset,cfg) reducer(instr,cellset,operand,addressing_mode,cfg)# MLRISC/mltree/mltree-stream.sml
        .       .   X86Stream                                   # structure X86Stream = InstructionStream(X86PseudoOps)                         # compiler/CodeGen/x86/x86MLTree.sml
        .       .       InstructionStream                       # type stream(a,b,c,d)                                                          # MLRISC/instructions/stream.sml
        .       X86Jumps........................................# flag branchDelayedArch  fns isSdi minSize sdiSize expand                      # MLRISC/x86/backpatch/x86Jumps.sml
        .       X86MLTreeEval                                   # structure X86MLTreeEval = MLTreeEval( X86MLTree, ... )                        # compiler/CodeGen/x86/x86MLTree.sml 
        .       .   MLTreeEval                                  # fns eval eqStm eqRexp eqFexp eqCCexp eqMlriscs ==                             # MLRISC/mltree/mltree-eval.sml
        .       X86MCEmitter                                    # structure X86MCEmitter = X86MCEmitter(X86Instr,X86Shuffle,X86AsmEmitter,...)  # compiler/CodeGen/x86/x86MLTree.sml 
        .       .   X86MCEmitter................................# makeStream: annotations -> stream(instruction,b,c,d)                          # MLRISC/x86/emit/x86MC.sml
        .       BackPatch                                       # types desc cluster  fns cleanUp, bbsched, finish                              # MLRISC/backpatch/vlBackPatch.sml
        .       CodeString                                      # type code_string  fns init update getCodeString                               # compiler/CodeGen/main/code-string.sml
        .       .   CodeObj                                     # types code_obj csegments executable  fns alloc input output bytes exec size   # compiler/Execution/codeobj/code-obj.sml
        .       X86RA...........................................# "X86 specific register allocator"  fn run: cfg -> cfg                         # MLRISC/x86/ra/x86RA.sml
        .       CellsBasis                                      # "Describes updatable cells."                                                  # MLRISC/instructions/cells-basis.sml
        .       ChowHennessySpillHeur                           # "Implements Chow-Hennessy-style register spill heuristic." fn chooseSpillNode # MLRISC/ra/chow-hennessy-spillheur.sml     
        .       RASpill                                         # "Manages spill/reload process."   types ...   fn spillRewrite                 # MLRISC/ra/ra-spill.sml
        .       .   RACore......................................# "Iterated register coalescing." fns dumpGraph show iteratedCoalescing ...     # MLRISC/ra/ra-core.sml
        .       .       RAGraph                                 # "Interference graph for register allocator" type interferenceGraph fn newGraph# MLRISC/ra/ra-graph.sml

Back to Cynbe's SML/NJ Internals Page.


Cynbe ru Taren
Last modified: Mon Jan 24 18:58:57 CST 2005