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 448, Thu Oct 21 09:20:16 1999 UTC revision 449, Fri Oct 22 07:35:29 1999 UTC
# Line 205  Line 205 
205            fun run sflag f s = let            fun run sflag f s = let
206                val c = SrcPath.cwdContext ()                val c = SrcPath.cwdContext ()
207                val p = SrcPath.standard pcmode { context = c, spec = s }                val p = SrcPath.standard pcmode { context = c, spec = s }
               val _ = Servers.start (c, p)  
208            in            in
209                case Parse.parse NONE (param ()) sflag p of                case Parse.parse NONE (param ()) sflag p of
210                    NONE => false                    NONE => false
211                  | SOME (g, gp) => f gp g                  | SOME (g, gp) =>
212                          (Servers.cm p;
213                           f gp g
214                           before Servers.waitforall ())
215            end            end
216    
217              val listLibs = Parse.listLibs
218              fun dismissLib l = let
219                  val c = SrcPath.cwdContext ()
220                  val p = SrcPath.standard pcmode { context = c, spec = l }
221              in
222                  Parse.dismissLib p
223              end
224    
225              fun stabilize_runner gp g = true
226    
227              fun stabilize recursively = run (SOME recursively) stabilize_runner
228              val recomp = run NONE recomp_runner
229              val make = run NONE make_runner
230    
231            fun slave () = let            fun slave () = let
232                fun shutdown () = OS.Process.exit OS.Process.success                fun shutdown () = OS.Process.exit OS.Process.success
233                fun say_ok () = Say.say ["SLAVE: ok\n"]                fun say_ok () = Say.say ["SLAVE: ok\n"]
# Line 222  Line 238 
238                in                in
239                    if line = "" then shutdown ()                    if line = "" then shutdown ()
240                    else case String.tokens Char.isSpace line of                    else case String.tokens Char.isSpace line of
241                        ["cm", d, f] => start (d, f)                        ["cm", d, f] => do_cm (d, f)
242                        | ["cmb", d, db] => do_cmb (d, db)
243                      | ["shutdown"] => shutdown ()                      | ["shutdown"] => shutdown ()
244                      | _ => (say_error (); waitForStart ())                      | _ => (say_error (); waitForStart ())
245                end handle _ => (say_error (); waitForStart ())                end handle _ => (say_error (); waitForStart ())
246    
247                and start (d, f) = let                and do_cmb (d, db) = let
248                      val _ = OS.FileSys.chDir d
249                      val c = SrcPath.cwdContext ()
250                  in
251                      case CMBSlave.slave make db of
252                          NONE => (say_error (); waitForStart ())
253                        | SOME (g, gp, trav) => let
254                              val _ = say_ok ()
255                              val index = Reachable.snodeMap g
256                          in
257                              workLoop (index, trav, gp, c)
258                          end
259                  end handle _ => (say_error (); waitForStart ())
260    
261                  and do_cm (d, f) = let
262                    val _ = OS.FileSys.chDir d                    val _ = OS.FileSys.chDir d
263                    val c = SrcPath.cwdContext ()                    val c = SrcPath.cwdContext ()
264                    val p = SrcPath.native { context = c, spec = f }                    val p = SrcPath.native { context = c, spec = f }
265                in                in
266                    case Parse.parse NONE (param ()) NONE p of                    case Parse.parse NONE (param ()) NONE p of
267                        NONE => (say_error (); waitForStart ())                        NONE => (say_error (); waitForStart ())
268                      | SOME x => (say_ok (); workLoop (x, c))                      | SOME (g, gp) => let
269                              val _ = say_ok ()
270                              val index = Reachable.snodeMap g
271                              val trav = Compile.newSbnodeTraversal () gp
272                              fun trav' sbn = isSome (trav sbn)
273                          in
274                              workLoop (index, trav', gp, c)
275                          end
276                end handle _ => (say_error (); waitForStart ())                end handle _ => (say_error (); waitForStart ())
277    
278                and workLoop ((g, gp), c) = let                and workLoop (index, trav, gp, c) = let
                   val index = Reachable.snodeMap g  
                   val trav = Compile.newSbnodeTraversal ()  
279                    fun loop () = let                    fun loop () = let
280                        val line = TextIO.inputLine TextIO.stdIn                        val line = TextIO.inputLine TextIO.stdIn
281                    in                    in
# Line 253  Line 289 
289                                  | SOME sn => let                                  | SOME sn => let
290                                        val sbn = DependencyGraph.SB_SNODE sn                                        val sbn = DependencyGraph.SB_SNODE sn
291                                    in                                    in
292                                        case trav gp sbn of                                        if trav sbn then (say_ok (); loop ())
293                                            NONE => (say_error (); loop ())                                        else (say_error (); loop ())
                                         | SOME _ => (say_ok (); loop ())  
294                                    end                                    end
295                            end                            end
296                          | ["cm", d, f] => start (d, f)                          | ["cm", d, f] => do_cm (d, f)
297                          | ["finish"] => (say_ok (); waitForStart ())                          | ["finish"] => (say_ok (); waitForStart ())
298                          | ["shutdown"] => shutdown ()                          | ["shutdown"] => shutdown ()
299                          | _ => (say_error (); loop ())                          | _ => (say_error (); loop ())
# Line 271  Line 306 
306                waitForStart ()                waitForStart ()
307            end            end
308    
           val listLibs = Parse.listLibs  
           fun dismissLib l = let  
               val c = SrcPath.cwdContext ()  
               val p = SrcPath.standard pcmode { context = c, spec = l }  
           in  
               Parse.dismissLib p  
           end  
   
           fun stabilize_runner gp g = true  
   
           fun stabilize recursively = run (SOME recursively) stabilize_runner  
           val recomp = run NONE recomp_runner  
           val make = run NONE make_runner  
   
309            fun reset () =            fun reset () =
310                (Compile.reset ();                (Compile.reset ();
311                 Link.reset ();                 Link.reset ();
# Line 427  Line 448 
448                                     listLibs = listLibs,                                     listLibs = listLibs,
449                                     dismissLib = dismissLib,                                     dismissLib = dismissLib,
450                                     symval = SSV.symval,                                     symval = SSV.symval,
451                                     server = Servers.add })                                     server_start = Servers.start,
452                                       server_stop = Servers.stop,
453                                       server_kill = Servers.kill })
454    
455                    end                    end
456            end            end

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

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