Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/compiler/TopLevel/viscomp/control.sml
ViewVC logotype

View of /sml/trunk/src/compiler/TopLevel/viscomp/control.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 197 - (download) (annotate)
Sun Nov 22 01:25:23 1998 UTC (21 years ago) by monnier
File size: 6366 byte(s)
Merged in Bratin's typelifting and Chris' named tvars.
FLINT is now using tvars from the first lcontract all the way to cps.

* reps/rttype.sml: changes from Bratin.
(rtLexp): define the NVAR case (return the tvar as an lvar).
* opt/[fl]contract.sml: removed the restriction on inlining at the same
  deBruijn depth.
* opt/lift.sml: new file for typelifting.
* flint/flintutil.sml (copy): added tvar renaming.
* flint/tvarcvt.sml: new file for named tvar <-> deBruijn conversions.
(* COPYRIGHT (c) 1995 AT&T Bell Laboratories *)
(* control.sml *)

structure Control : CONTROL =
  struct
    structure Print : PRINTCONTROL =
      struct
        val printDepth = ref 5
        val printLength = ref 12
        val stringDepth = ref 70
        val printLoop = ref true
        val signatures = ref 2
	val printOpens = ref true
        val out = ref{
		say = fn s => TextIO.output(TextIO.stdOut,s),
		flush = fn () => TextIO.flushOut TextIO.stdOut
	      }
        val linewidth = ref 79
        fun say s = #say (!out) s
        fun flush() = #flush (!out) ()
      end

    structure MC : MCCONTROL =
    struct
      val printArgs = ref false
      val printRet = ref false
      val bindContainsVar = ref true
      val bindExhaustive = ref true
      val matchNonExhaustiveWarn = ref true
      val matchNonExhaustiveError = ref false
          (* matchExhaustiveError overrides matchExhaustiveWarn *)
      val matchRedundantWarn = ref true
      val matchRedundantError = ref true
          (* matchRedundantError overrides matchRedundantWarn *)
      val expandResult = ref false
    end

    structure MLRISC = MLRISC_Control

    structure FLINT =
    struct
	val print	= ref false
	val printPhases	= ref false
	val inlineThreshold = ref 20
	val unrollThreshold = ref 20
	val specialize	= ref true
	val liftLiterals= ref false
	val sharewrap	= ref true
	val maxargs	= ref 10
	val saytappinfo	= ref true	(* for typelifting statistics *)
	val phases	= ref ["deb2names", "lcontract", "fcontract",
			       "fixfix", "fcontract",
			       "specialize", "fcontract",
			       (* "names2deb", "typelift", "wellformed", "deb2names", *)
			       "loopify", "fcontract",
			       "wrap",
			       "reify", "fixfix", "fcontract"]
			      
	(* only for temporary debugging *)
	val misc	= ref 0
			      
	(* FLINT internal type-checking controls *)
	val check	= ref true
	val checkDatatypes = ref false	(* loops on the new cm.sml *)
	val checkKinds	= ref true
    end

    structure CG : CGCONTROL =
    struct
      val tailrecur = ref true
      val recordopt = ref true
      val tail = ref true
      val allocprof = ref false
      val closureprint = ref false
      val closureStrategy = ref 0
      val lambdaopt = ref true
      val cpsopt = ref [(* "first_contract", "eta", "uncurry", "etasplit",
			"cycle_expand", *) "eta", "last_contract"]
      val rounds = ref 10
      val path = ref false
      val betacontract = ref true
      val eta = ref true
      val selectopt = ref true
      val dropargs = ref true
      val deadvars = ref true
      val flattenargs = ref false
      val extraflatten = ref false
      val switchopt = ref true
      val handlerfold = ref true
      val branchfold = ref false
      val arithopt = ref true
      val betaexpand = ref true
      val unroll = ref true
      val knownfiddle = ref false
      val invariant = ref true
      val targeting = ref 0
      val lambdaprop = ref false
      val newconreps = ref true
      val boxedconstconreps = ref false
      val unroll_recur = ref true
      val sharepath = ref true
      val staticprof = ref false
      val hoistup = ref false
      val hoistdown = ref false
      val recordcopy = ref true
      val recordpath = ref true
      val verbose = ref false
      val debugcps = ref false
      val misc4 = ref 0
      val argrep = ref true
      val bodysize = ref 20
      val reducemore = ref 15
      val alphac = ref true
      val comment = ref false
      val knownGen = ref 0
      val knownClGen = ref 0
      val escapeGen = ref 0
      val calleeGen = ref 0
      val spillGen = ref 0
      val foldconst = ref true
      val etasplit = ref true
      val printit = ref false
      val printsize = ref false
      val scheduling = ref true
      val cse = ref false
      val optafterclosure = ref false
      val uncurry = ref true
      val ifidiom = ref true
      val comparefold = ref true
      val csehoist = ref false
      val rangeopt = ref false
      val icount = ref false
      val debugRep = ref false
      val checklty1 = ref false
      val checklty2 = ref false
      val checklty3 = ref false
      val checkcps1 = ref false
      val checkcps2 = ref false
      val checkcps3 = ref false
      val checkcps = ref false
      val flatfblock = ref true
      val deadup = ref true
      val pollChecks = ref false
      val pollRatioAtoI = ref 1.0

      datatype mlrisc_phase = 
	  NO_PHASE
	| AFTER_INSTR_SEL
	| AFTER_RA
	| AFTER_SCHED
	| PHASES of mlrisc_phase * mlrisc_phase
      val printFlowgraph = ref NO_PHASE
      val printFlowgraphStream = ref TextIO.stdOut

      val memDisambiguate = ref false
      val controlDependence = ref false
      val flinton = ref true

      val compdebugging = ref false
      val mudebugging   = ref false
      val eedebugging   = ref false
      val insdebugging  = ref false
      val smdebugging   = ref false
      val emdebugging   = ref false
      val esdebugging   = ref false
      val etdebugging   = ref false
      val ecdebugging   = ref false
      val tmdebugging   = ref false
    end
    val primaryPrompt = ref "- "
    val secondaryPrompt = ref "= "
    val printWarnings = ref true
    val valueRestrictionLocalWarn = ref false
    val valueRestrictionTopWarn = ref true
    val multDefWarn = ref false
    val shareDefError = ref true
    val instantiateSigs = ref true
    val debugging = ref false
    val internals = ref false
    val lazysml = ref false
    val interp = ref false
(*
    val debugLook = ref false
    val debugCollect = ref false
    val debugBind = ref false
*)
    val markabsyn = ref true
    val trackExn = ref true
    val indexing = ref false
    val instSigs = ref true
    val quotation = ref false  (* controls backquote quotation *)
    val overloadKW = ref false	(* controls "overload" as a keyword *)

    val preserveLvarNames : bool ref = ref false
    val saveit = ref true
    val saveLvarNames : bool ref = saveit
    val saveAbsyn : bool ref = saveit
    val saveLambda : bool ref = saveit
    val saveConvert : bool ref = saveit
    val saveCPSopt : bool ref = saveit
    val saveClosure : bool ref = saveit

    val lambdaSplitEnable = ref false
    val crossInlineEnable  = ref false
end


(*
 * $Log: control.sml,v $
 * Revision 1.4  1998/05/23 14:10:30  george
 *   Fixed RCS keyword syntax
 *
 *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0