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/main/cm-boot.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/main/cm-boot.sml

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

revision 449, Fri Oct 22 07:35:29 1999 UTC revision 451, Sat Oct 23 15:05:55 1999 UTC
# Line 28  Line 28 
28        structure BF = HostMachDepVC.Binfile        structure BF = HostMachDepVC.Binfile
29        structure P = OS.Path        structure P = OS.Path
30        structure F = OS.FileSys        structure F = OS.FileSys
31          structure DG = DependencyGraph
32    
33        val os = SMLofNJ.SysInfo.getOSKind ()        val os = SMLofNJ.SysInfo.getOSKind ()
34    
# Line 58  Line 59 
59            fun store _ = ()            fun store _ = ()
60            val { group, ... } = Compile.newTraversal (Link.evict, store, g)            val { group, ... } = Compile.newTraversal (Link.evict, store, g)
61        in        in
62            isSome (group gp) before Link.cleanup gp            isSome (Servers.withServers (fn () => group gp))
63              before Link.cleanup gp
64        end        end
65    
66        (* This function combines the actions of "recompile" and "exec".        (* This function combines the actions of "recompile" and "exec".
# Line 71  Line 73 
73            val { group = l_group, ... } = Link.newTraversal (g, get)            val { group = l_group, ... } = Link.newTraversal (g, get)
74            val GroupGraph.GROUP { required = rq, ... } = g            val GroupGraph.GROUP { required = rq, ... } = g
75        in        in
76            case c_group gp of            case Servers.withServers (fn () => c_group gp) of
77                NONE => false                NONE => false
78              | SOME { stat, sym} =>              | SOME { stat, sym} =>
79                    (* Before executing the code, we announce the priviliges                    (* Before executing the code, we announce the priviliges
# Line 103  Line 105 
105        structure Stabilize =        structure Stabilize =
106            StabilizeFn (structure MachDepVC = HostMachDepVC            StabilizeFn (structure MachDepVC = HostMachDepVC
107                         fun recomp gp g = let                         fun recomp gp g = let
108                               val GroupGraph.GROUP { grouppath, ... } = g
109                             val { store, get } = BFC.new ()                             val { store, get } = BFC.new ()
110                             val { group, ... } =                             val { group, ... } =
111                                 Compile.newTraversal (Link.evict, store, g)                                 Compile.newTraversal (Link.evict, store, g)
112                         in                         in
113                             case group gp of                             case Servers.withServers (fn () => group gp) of
114                                 NONE => NONE                                 NONE => NONE
115                               | SOME _ => SOME get                               | SOME _ => SOME get
116                         end                         end
117                         fun destroy_state gp i =                         fun destroy_state gp i =
118                             (Compile.evict i; Link.evict gp i)                             (Compile.evict i;
119                                Servers.evict i;
120                                Link.evict gp i)
121                         val getII = Compile.getII)                         val getII = Compile.getII)
122    
123        (* Access to the stabilization mechanism is integrated into the        (* Access to the stabilization mechanism is integrated into the
# Line 206  Line 211 
211                val c = SrcPath.cwdContext ()                val c = SrcPath.cwdContext ()
212                val p = SrcPath.standard pcmode { context = c, spec = s }                val p = SrcPath.standard pcmode { context = c, spec = s }
213            in            in
214                  Servers.cm p;
215                case Parse.parse NONE (param ()) sflag p of                case Parse.parse NONE (param ()) sflag p of
216                    NONE => false                    NONE => false
217                  | SOME (g, gp) =>                  | SOME (g, gp) =>
218                        (Servers.cm p;                        (f gp g
219                         f gp g                         before Servers.reset ())
                        before Servers.waitforall ())  
220            end            end
221    
222            val listLibs = Parse.listLibs            val listLibs = Parse.listLibs
# Line 250  Line 255 
255                in                in
256                    case CMBSlave.slave make db of                    case CMBSlave.slave make db of
257                        NONE => (say_error (); waitForStart ())                        NONE => (say_error (); waitForStart ())
258                      | SOME (g, gp, trav) => let                      | SOME (g, trav, evict) => let
259                            val _ = say_ok ()                            val _ = say_ok ()
260                            val index = Reachable.snodeMap g                            val index = Reachable.snodeMap g
261                        in                        in
262                            workLoop (index, trav, gp, c)                            workLoop (index, trav, evict, c)
263                        end                        end
264                end handle _ => (say_error (); waitForStart ())                end handle _ => (say_error (); waitForStart ())
265    
# Line 271  Line 276 
276                            val trav = Compile.newSbnodeTraversal () gp                            val trav = Compile.newSbnodeTraversal () gp
277                            fun trav' sbn = isSome (trav sbn)                            fun trav' sbn = isSome (trav sbn)
278                        in                        in
279                            workLoop (index, trav', gp, c)                            workLoop (index, trav', Compile.evict, c)
280                        end                        end
281                end handle _ => (say_error (); waitForStart ())                end handle _ => (say_error (); waitForStart ())
282    
283                and workLoop (index, trav, gp, c) = let                and workLoop (index, trav, evict, c) = let
284                      fun f2sn f =
285                          SrcPathMap.find (index,
286                                           SrcPath.native { context = c,
287                                                            spec = f })
288                    fun loop () = let                    fun loop () = let
289                        val line = TextIO.inputLine TextIO.stdIn                        val line = TextIO.inputLine TextIO.stdIn
290                    in                    in
291                        if line = "" then shutdown ()                        if line = "" then shutdown ()
292                        else case String.tokens Char.isSpace line of                        else case String.tokens Char.isSpace line of
293                            ["compile", f] => let                            ["evict", f] =>
294                                  (case f2sn f of
295                                       NONE => loop ()
296                                     | SOME (DG.SNODE { smlinfo, ... }) =>
297                                           (evict smlinfo; loop ()))
298                            | ["compile", f] => let
299                                val p = SrcPath.native { context = c, spec = f }                                val p = SrcPath.native { context = c, spec = f }
300                            in                            in
301                                case SrcPathMap.find (index, p) of                                case SrcPathMap.find (index, p) of
302                                    NONE => (say_error (); loop ())                                    NONE => (say_error (); loop ())
303                                  | SOME sn => let                                  | SOME sn => let
304                                        val sbn = DependencyGraph.SB_SNODE sn                                        val sbn = DG.SB_SNODE sn
305                                    in                                    in
306                                        if trav sbn then (say_ok (); loop ())                                        if trav sbn then (say_ok (); loop ())
307                                        else (say_error (); loop ())                                        else (say_error (); loop ())
# Line 472  Line 486 
486                            (getOpt (OS.Path.ext f, "<none>")))                            (getOpt (OS.Path.ext f, "<none>")))
487      in      in
488          case SMLofNJ.getArgs () of          case SMLofNJ.getArgs () of
489              ["@CMslave"] => slave ()              ["@CMslave"] => (#set StdConfig.verbose false; slave ())
490            | l => app (p o c) l            | l => app (p o c) l
491      end      end
492    end    end

Legend:
Removed from v.449  
changed lines
  Added in v.451

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