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 592, Mon Apr 3 07:04:12 2000 UTC revision 652, Tue Jun 6 02:14:56 2000 UTC
# Line 31  Line 31 
31    
32      val arch = MachDepVC.architecture      val arch = MachDepVC.architecture
33      val osname = FilenamePolicy.kind2name os      val osname = FilenamePolicy.kind2name os
34    
35      val archos = concat [arch, "-", osname]      val archos = concat [arch, "-", osname]
36    
37      fun init_servers (GG.GROUP { grouppath, ... }) =      fun init_servers (GG.GROUP { grouppath, ... }) =
# Line 117  Line 118 
118    
119      fun mk_compile { deliver, root, dirbase = dbopt, paranoid } = let      fun mk_compile { deliver, root, dirbase = dbopt, paranoid } = let
120    
         val _ = StabModmap.reset ()  
   
121          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)          val dirbase = getOpt (dbopt, BtNames.dirbaseDefault)
122          val _ = checkDirbase dirbase          val _ = checkDirbase dirbase
123          val pcmodespec = BtNames.pcmodespec          val pcmodespec = BtNames.pcmodespec
# Line 138  Line 137 
137          val pcmode = PathConfig.new ()          val pcmode = PathConfig.new ()
138          val _ = PathConfig.processSpecFile (pcmode, pcmodespec)          val _ = PathConfig.processSpecFile (pcmode, pcmodespec)
139    
140          fun stdpath s = SrcPath.standard pcmode { context = ctxt, spec = s }          fun stdpath s = SrcPath.standard pcmode { context = ctxt,
141                                                      spec = s,
142                                                      err = fn s => raise Fail s }
143    
144          val initgspec = stdpath initgspec          val initgspec = stdpath initgspec
145          val maingspec =          val maingspec =
# Line 183  Line 184 
184                  fun rt2ie (n, ii: IInfo.info) = let                  fun rt2ie (n, ii: IInfo.info) = let
185                      val s = #statenv ii ()                      val s = #statenv ii ()
186                      val (dae, mkDomain) = Statenv2DAEnv.cvt s                      val (dae, mkDomain) = Statenv2DAEnv.cvt s
187                        val domain = mkDomain ()
188                  in                  in
189                      (* Link path info = NONE, will be reset at import                      { ie = (fn () => (NONE, n), dae, domain), domain = domain }
                      * time (in members.sml). *)  
                     { ie = ((NONE, n), dae), mkDomain = mkDomain }  
190                  end                  end
191    
192                  fun add_exports (n, exports) = let                  fun add_exports (n, exports) = let
193                      val { ie, mkDomain } = rt2ie (n, rt n)                      val { ie, domain } = rt2ie (n, rt n)
194                      fun ins_ie (sy, m) = SymbolMap.insert (m, sy, ie)                      fun ins_ie (sy, m) = SymbolMap.insert (m, sy, ie)
195                  in                  in
196                      SymbolSet.foldl ins_ie exports (mkDomain ())                      SymbolSet.foldl ins_ie exports domain
197                  end                  end
198    
199                  val special_exports = let                  val special_exports = let
# Line 205  Line 205 
205                  end                  end
206              in              in
207                  GG.GROUP { exports = foldl add_exports special_exports others,                  GG.GROUP { exports = foldl add_exports special_exports others,
208                             kind = GroupGraph.LIB { wrapped = StringSet.empty,                             kind = GG.LIB {
209                                 kind = GG.DEVELOPED { wrapped = StringSet.empty,
210                                                     subgroups = [] },                                                     subgroups = [] },
211                                    version = NONE },
212                             required = StringSet.singleton "primitive",                             required = StringSet.singleton "primitive",
213                             grouppath = initgspec,                             grouppath = initgspec,
214                               (* hack: sources never used for this group *)
215                               sources = SrcPathMap.empty,
216                             sublibs = [] }                             sublibs = [] }
217                  before (ovldR := savedOvld)                  before (ovldR := savedOvld)
218              end              end
# Line 219  Line 223 
223                      { getGroup = fn _ => raise Fail "CMB: initial getGroup",                      { getGroup = fn _ => raise Fail "CMB: initial getGroup",
224                        anyerrors = ref false }                        anyerrors = ref false }
225              in              in
226                  case Stabilize.loadStable ginfo lsarg initgspec of                  case Stabilize.loadStable ginfo lsarg (initgspec, NONE) of
227                      NONE => NONE                      NONE => NONE
228                    | SOME (g as GG.GROUP { exports, ... }) => SOME g                    | SOME (g as GG.GROUP { exports, ... }) => SOME g
229                    | SOME GG.ERRORGROUP => NONE                    | SOME GG.ERRORGROUP => NONE
# Line 251  Line 255 
255                  if paranoid then let                  if paranoid then let
256                      val export_nodes = perv_n :: others                      val export_nodes = perv_n :: others
257                      val ver_arg = (initgspec, export_nodes, [],                      val ver_arg = (initgspec, export_nodes, [],
258                                     SrcPathSet.empty)                                     SrcPathSet.empty, NONE)
259                      val em = StableMap.empty                      val em = StableMap.empty
260                  in                  in
261                      if VerifyStable.verify' ginfo em ver_arg then                      if VerifyStable.verify' ginfo em ver_arg then
# Line 276  Line 280 
280                    paranoid = paranoid }                    paranoid = paranoid }
281          in          in
282              Servers.dirbase dirbase;              Servers.dirbase dirbase;
283                Servers.cmb_new { archos = archos };
284              case Parse.parse parse_arg of              case Parse.parse parse_arg of
285                  NONE => NONE                  NONE => NONE
286                | SOME (g, gp) => let                | SOME (g, gp) => let
# Line 361  Line 366 
366      end      end
367    
368      fun compile dbopt =      fun compile dbopt =
369            (StabModmap.reset ();
370          case mk_compile { deliver = true, root = NONE,          case mk_compile { deliver = true, root = NONE,
371                            dirbase = dbopt, paranoid = true } of                            dirbase = dbopt, paranoid = true } of
372              NONE => false              NONE => false
373            | SOME (_, thunk) => thunk ()             | SOME (_, thunk) => thunk ())
374    
375      local      local
376          fun slave (dirbase, root) =          fun slave NONE = (StabModmap.reset (); NONE)
377              | slave (SOME (dirbase, root)) =
378              case mk_compile { deliver = false, root = SOME root,              case mk_compile { deliver = false, root = SOME root,
379                                dirbase = SOME dirbase, paranoid = false } of                                dirbase = SOME dirbase, paranoid = false } of
380                  NONE => NONE                  NONE => NONE

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

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