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

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/compile/compile.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/compile/compile.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 586, Thu Mar 30 05:08:07 2000 UTC revision 587, Thu Mar 30 09:01:52 2000 UTC
# Line 10  Line 10 
10      structure DG = DependencyGraph      structure DG = DependencyGraph
11      structure GG = GroupGraph      structure GG = GroupGraph
12      structure E = GenericVC.Environment      structure E = GenericVC.Environment
13      structure BE = GenericVC.BareEnvironment      structure SE = GenericVC.StaticEnv
14      structure Pid = GenericVC.PersStamps      structure Pid = GenericVC.PersStamps
15      structure DE = GenericVC.DynamicEnv      structure DE = GenericVC.DynamicEnv
16      structure PP = PrettyPrint      structure PP = PrettyPrint
# Line 114  Line 114 
114    
115          fun nofilter (ed: envdelta) = let          fun nofilter (ed: envdelta) = let
116              val { statenv, symenv, statpid, sympid } = ed              val { statenv, symenv, statpid, sympid } = ed
117                val statenv' = Memoize.memoize statenv
118          in          in
119              { envs = fn () => { stat = #env (statenv ()), sym = symenv () },              { envs = fn () => { stat = statenv' (), sym = symenv () },
120                pids = pidset (statpid, sympid) }                pids = pidset (statpid, sympid) }
121          end          end
122    
# Line 124  Line 125 
125    
126          fun filter (ii, s) = let          fun filter (ii, s) = let
127              val { statenv, symenv, statpid, sympid } = ii              val { statenv, symenv, statpid, sympid } = ii
128              val { env = ste, ctxt } = statenv ()              val ste = statenv ()
129          in          in
130              if exportsNothingBut s ste then              if exportsNothingBut s ste then
131                  { envs = fn () => { stat = ste, sym = symenv () },                  { envs = fn () => { stat = ste, sym = symenv () },
# Line 136  Line 137 
137                      case FilterMap.find (!filtermap, key) of                      case FilterMap.find (!filtermap, key) of
138                          SOME statpid' => statpid'                          SOME statpid' => statpid'
139                        | NONE => let                        | NONE => let
                             (* We re-pickle the filtered ste relative to  
                              * the original one.  This should give a fairly  
                              * minimal pickle. *)  
140                              val statpid' = GenericVC.Rehash.rehash                              val statpid' = GenericVC.Rehash.rehash
141                                  { context = ctxt,                                          { env = ste', orig_hash = statpid }
                                   env = GenericVC.CoerceEnv.es2bs ste',  
                                   orig_hash = statpid }  
142                          in                          in
143                              filtermap :=                              filtermap :=
144                                FilterMap.insert (!filtermap, key, statpid');                                FilterMap.insert (!filtermap, key, statpid');
# Line 248  Line 244 
244                               * earlier run) *)                               * earlier run) *)
245                              val _ = #anyErrors source := false                              val _ = #anyErrors source := false
246                              val bfc = BF.create                              val bfc = BF.create
247                                  { runtimePid = NONE,                                  { splitting = split,
                                   splitting = split,  
248                                    cmData = cmData,                                    cmData = cmData,
249                                    ast = ast,                                    ast = ast,
250                                    source = source,                                    source = source,
251                                    senv = stat,                                    senv = stat,
252                                    symenv = BE.layerSymbolic                                    symenv = E.layerSymbolic
253                                                 (sym, BE.symbolicPart corenv),                                                 (sym, E.symbolicPart corenv),
254                                    corenv = BE.staticPart corenv }                                    corenv = E.staticPart corenv }
255                              val memo = bfc2memo (bfc, SmlInfo.lastseen i)                              val memo = bfc2memo (bfc, SmlInfo.lastseen i)
256                          in                          in
257                              save bfc;                              save bfc;
# Line 388  Line 383 
383              { sbnode = sbnode, impexp = impexp }              { sbnode = sbnode, impexp = impexp }
384          end          end
385    
386          fun newTraversal (notify, storeBFC, g) = let          fun newTraversal (_, _, GG.ERRORGROUP) =
387              val GG.GROUP { exports, ... } = g              { group = fn _ => NONE, exports = SymbolMap.empty }
388              | newTraversal (notify, storeBFC, g as GG.GROUP grec) = let
389                    val { exports, ... } = grec
390              val um = Indegree.indegrees g              val um = Indegree.indegrees g
391              fun getUrgency i = getOpt (SmlInfoMap.find (um, i), 0)              fun getUrgency i = getOpt (SmlInfoMap.find (um, i), 0)
392              val { impexp, ... } = mkTraversal (notify, storeBFC, getUrgency)                  val { impexp, ... } =
393                        mkTraversal (notify, storeBFC, getUrgency)
394              fun group gp = let              fun group gp = let
395                  val eo_cl =                  val eo_cl =
396                      map (fn x => Concur.fork (fn () => impexp gp x))                      map (fn x => Concur.fork (fn () => impexp gp x))

Legend:
Removed from v.586  
changed lines
  Added in v.587

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