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 651, Thu Jun 1 18:34:03 2000 UTC revision 652, Tue Jun 6 02:14:56 2000 UTC
# Line 391  Line 391 
391                      end                      end
392              end (* snode *)              end (* snode *)
393    
394              fun impexp gp (n, _) = fsbnode gp n              fun impexp gp (nth, _, _) = fsbnode gp (nth ())
395          in          in
396              { sbnode = sbnode, impexp = impexp }              { sbnode = sbnode, impexp = impexp }
397          end          end
# Line 400  Line 400 
400              { group = fn _ => NONE, exports = SymbolMap.empty }              { group = fn _ => NONE, exports = SymbolMap.empty }
401            | newTraversal (notify, storeBFC, g as GG.GROUP grec) = let            | newTraversal (notify, storeBFC, g as GG.GROUP grec) = let
402                  val { exports, ... } = grec                  val { exports, ... } = grec
403                  val um = Indegree.indegrees g                  val um = Memoize.memoize (fn () => Indegree.indegrees g)
404                  fun getUrgency i = getOpt (SmlInfoMap.find (um, i), 0)                  fun getUrgency i = getOpt (SmlInfoMap.find (um (), i), 0)
405                  val { impexp, ... } =                  (* generate the traversal -- lazily *)
406                      mkTraversal (notify, storeBFC, getUrgency)                  val impexpth =
407                        Memoize.memoize
408                            (fn () =>
409                                #impexp
410                                    (mkTraversal (notify, storeBFC, getUrgency)))
411                  fun group gp = let                  fun group gp = let
412                      val eo_cl =                      val eo_cl =
413                          map (fn x => Concur.fork (fn () => impexp gp x))                          map (fn x => Concur.fork (fn () => impexpth () gp x))
414                              (SymbolMap.listItems exports)                              (SymbolMap.listItems exports)
415                      val eo = foldl (layer'wait 0) (SOME emptyEnv) eo_cl                      val eo = foldl (layer'wait 0) (SOME emptyEnv) eo_cl
416                  in                  in
# Line 415  Line 419 
419                        | SOME e => SOME (#envs e ())                        | SOME e => SOME (#envs e ())
420                  end handle Abort => (Servers.reset false; NONE)                  end handle Abort => (Servers.reset false; NONE)
421                  fun mkExport ie gp =                  fun mkExport ie gp =
422                      case impexp gp ie handle Abort => NONE of                      case impexpth () gp ie handle Abort => NONE of
423                          NONE => (Servers.reset false; NONE)                          NONE => (Servers.reset false; NONE)
424                        | SOME e => SOME (#envs e ())                        | SOME e => SOME (#envs e ())
425              in              in

Legend:
Removed from v.651  
changed lines
  Added in v.652

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