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/bootstrap/btcompile.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/bootstrap/btcompile.sml

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

revision 361, Wed Jun 30 06:44:04 1999 UTC revision 362, Thu Jul 1 09:39:48 1999 UTC
# Line 8  Line 8 
8   *)   *)
9  functor BootstrapCompileFn (structure MachDepVC: MACHDEP_VC  functor BootstrapCompileFn (structure MachDepVC: MACHDEP_VC
10                              val os: SMLofNJ.SysInfo.os_kind) :> sig                              val os: SMLofNJ.SysInfo.os_kind) :> sig
11      val compile : string option -> bool      val recomp' : string option -> bool
12        val recomp : unit -> bool
13        val deliver' : string option -> bool
14        val deliver : unit -> bool
15        val reset : unit -> unit
16  end = struct  end = struct
17    
18      structure EM = GenericVC.ErrorMsg      structure EM = GenericVC.ErrorMsg
# Line 29  Line 33 
33      structure RecompPersstate =      structure RecompPersstate =
34          RecompPersstateFn (structure MachDepVC = MachDepVC          RecompPersstateFn (structure MachDepVC = MachDepVC
35                             val discard_code = true                             val discard_code = true
36                             fun new_smlinfo (i, popt) = ())                             fun stable_value_present i = false
37                               fun new_smlinfo i = ())
38    
39      structure Recomp = RecompFn (structure PS = RecompPersstate)      structure Recomp = RecompFn (structure PS = RecompPersstate)
40      structure RT = CompileGenericFn (structure CT = Recomp)      structure RT = CompileGenericFn (structure CT = Recomp)
# Line 43  Line 48 
48                       fun warmup (i, p) = ()                       fun warmup (i, p) = ()
49                       val recomp = recomp)                       val recomp = recomp)
50      (* ... and Parse *)      (* ... and Parse *)
51      structure Parse = ParseFn (structure Stabilize = Stabilize)      structure Parse = ParseFn (structure Stabilize = Stabilize
52                                   val pending = AutoLoad.getPending)
53    
54      fun listName p =      fun listName p =
55          case OS.Path.fromString p of          case OS.Path.fromString p of
# Line 59  Line 65 
65              end              end
66            | _ => raise Fail "BootstrapCompile:listName: bad name"            | _ => raise Fail "BootstrapCompile:listName: bad name"
67    
68      fun compile dbopt = let      fun compile deliver dbopt = let
69    
70          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)
71          val pcmodespec = BtNames.pcmodespec          val pcmodespec = BtNames.pcmodespec
# Line 76  Line 82 
82          val ctxt = SrcPath.cwdContext ()          val ctxt = SrcPath.cwdContext ()
83    
84          val pidfile = OS.Path.joinDirFile { dir = bootdir, file = "RTPID" }          val pidfile = OS.Path.joinDirFile { dir = bootdir, file = "RTPID" }
85          val listfile = OS.Path.joinDirFile { dir = bootdir, file = "BINLIST" }          val listfile = OS.Path.joinDirFile { dir = bootdir, file = "BOOTLIST" }
86    
87          val pcmode = PathConfig.new ()          val pcmode = PathConfig.new ()
88          val _ = PathConfig.processSpecFile (pcmode, pcmodespec)          val _ = PathConfig.processSpecFile (pcmode, pcmodespec)
# Line 181  Line 187 
187                                               #2 (#stat core)]),                                               #2 (#stat core)]),
188                            fnpolicy = mainfnpolicy }                            fnpolicy = mainfnpolicy }
189                          { corenv = corenv }                          { corenv = corenv }
190                val stab =
191                    if deliver then SOME true else NONE
192          in          in
193              case Parse.parse NONE param (SOME true) maingspec of              case Parse.parse NONE param stab maingspec of
194                  NONE => false                  NONE => false
195                | SOME (g, gp) =>                | SOME (g, gp) =>
196                      if recomp gp g then let                      if recomp gp g then let
# Line 211  Line 219 
219                          end                          end
220                      in                      in
221                          Say.say ["Runtime System PID is: ", rtspid, "\n"];                          Say.say ["Runtime System PID is: ", rtspid, "\n"];
222                          SafeIO.perform { openIt = fn () =>                        if deliver then
223                           (SafeIO.perform { openIt = fn () =>
224                                             AutoDir.openTextOut pidfile,                                             AutoDir.openTextOut pidfile,
225                                           closeIt = TextIO.closeOut,                                           closeIt = TextIO.closeOut,
226                                           work = fn s =>                                           work = fn s =>
# Line 235  Line 244 
244                                           work = cpCMI,                                           work = cpCMI,
245                                           cleanup = fn () =>                                           cleanup = fn () =>
246                                             OS.FileSys.remove cmifile                                             OS.FileSys.remove cmifile
247                                             handle _ => () };                                             handle _ => () })
248                          else ();
249                          true                          true
250                      end                      end
251                      else false                      else false
# Line 246  Line 256 
256              SOME x => main_compile x              SOME x => main_compile x
257            | NONE => false            | NONE => false
258      end      end
259    
260        val recomp' = compile false
261        fun recomp () = recomp' NONE
262        val deliver' = compile true
263        fun deliver () = deliver' NONE
264        fun reset () =
265            (RecompPersstate.reset ();
266             RT.resetAll ();
267             Recomp.reset ())
268  end  end

Legend:
Removed from v.361  
changed lines
  Added in v.362

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