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.