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/stable/stabilize.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/stable/stabilize.sml

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

revision 354, Fri Jun 25 08:36:12 1999 UTC revision 360, Tue Jun 29 09:21:02 1999 UTC
# Line 13  Line 13 
13      structure SM = GenericVC.SourceMap      structure SM = GenericVC.SourceMap
14      structure GP = GeneralParams      structure GP = GeneralParams
15      structure E = GenericVC.Environment      structure E = GenericVC.Environment
16        structure Pid = GenericVC.PersStamps
17    
18      type statenvgetter = GP.info -> DG.bnode -> E.staticEnv      type statenvgetter = GP.info -> DG.bnode -> E.staticEnv
19      type recomp = GP.info -> GG.group -> bool      type recomp = GP.info -> GG.group -> bool
20        type pid = Pid.persstamp
21  in  in
22    
23  signature STABILIZE = sig  signature STABILIZE = sig
# Line 30  Line 32 
32  end  end
33    
34  functor StabilizeFn (val bn2statenv : statenvgetter  functor StabilizeFn (val bn2statenv : statenvgetter
35                         val getPid : SmlInfo.info -> pid option
36                         val warmup : BinInfo.info * pid option -> unit
37                       val recomp: recomp) :> STABILIZE = struct                       val recomp: recomp) :> STABILIZE = struct
38    
39      datatype pitem =      datatype pitem =
# Line 91  Line 95 
95              val bsz = OS.FileSys.fileSize o bname              val bsz = OS.FileSys.fileSize o bname
96    
97              fun cpb s i = let              fun cpb s i = let
98                    val N = 4096
99                  fun copy ins = let                  fun copy ins = let
100                      fun cp () =                      fun cp () =
101                          if BinIO.endOfStream ins then ()                          if BinIO.endOfStream ins then ()
102                          else (BinIO.output (s, BinIO.input ins); cp ())                          else (BinIO.output (s, BinIO.inputN (ins, N));
103                                  cp ())
104                  in                  in
105                      cp ()                      cp ()
106                  end                  end
# Line 273  Line 279 
279                      "b" :: w_int n (w_symbol sy k) m                      "b" :: w_int n (w_symbol sy k) m
280                  end                  end
281    
282                fun w_pid p = w_string (Byte.bytesToString (Pid.toBytes p))
283    
284              fun w_sn_raw (DG.SNODE n) k =              fun w_sn_raw (DG.SNODE n) k =
285                  w_si (#smlinfo n)                  w_option w_pid (getPid (#smlinfo n))
286                             (w_si (#smlinfo n)
287                       (w_list w_sn (#localimports n)                       (w_list w_sn (#localimports n)
288                               (w_list w_fsbn (#globalimports n) k))                                         (w_list w_fsbn (#globalimports n) k)))
289    
290              and w_sn n = w_share w_sn_raw PSN n              and w_sn n = w_share w_sn_raw PSN n
291    
# Line 430  Line 439 
439    
440      fun loadStable (gp, getGroup, anyerrors) group = let      fun loadStable (gp, getGroup, anyerrors) group = let
441    
442          fun bn2env n = Statenv2DAEnv.cvtMemo (fn () => bn2statenv gp n)          val es2bs = GenericVC.CoerceEnv.es2bs
443            fun bn2env n =
444                Statenv2DAEnv.cvtMemo (fn () => es2bs (bn2statenv gp n))
445    
446          val errcons = #errcons gp          val errcons = #errcons gp
447          val grpSrcInfo = (errcons, anyerrors)          val grpSrcInfo = (errcons, anyerrors)
# Line 458  Line 469 
469              val m = ref IntBinaryMap.empty              val m = ref IntBinaryMap.empty
470              val next = ref 0              val next = ref 0
471    
472                val pset = ref PidSet.empty
473    
474              fun bytesIn n = let              fun bytesIn n = let
475                  val bv = BinIO.inputN (s, n)                  val bv = BinIO.inputN (s, n)
476              in              in
# Line 626  Line 639 
639                      end                      end
640                    | _ => raise Format                    | _ => raise Format
641    
642                fun r_pid () = Pid.fromBytes (Byte.stringToBytes (r_string ()))
643    
644              (* this is the place where what used to be an              (* this is the place where what used to be an
645               * SNODE changes to a BNODE! *)               * SNODE changes to a BNODE! *)
646              fun r_sn_raw () =              fun r_sn_raw () = let
647                  DG.BNODE { bininfo = r_si (),                  val popt = r_option r_pid ()
648                    val i = r_si ()
649                in
650                    warmup (i, popt);
651                    DG.BNODE { bininfo = i,
652                             localimports = r_list r_sn (),                             localimports = r_list r_sn (),
653                             globalimports = r_list r_fsbn () }                             globalimports = r_list r_fsbn () }
654                end
655    
656              and r_sn () =              and r_sn () =
657                  r_share r_sn_raw UBN (fn (UBN n) => n | _ => raise Format) ()                  r_share r_sn_raw UBN (fn (UBN n) => n | _ => raise Format) ()

Legend:
Removed from v.354  
changed lines
  Added in v.360

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