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 665, Fri Jun 16 04:43:57 2000 UTC revision 666, Fri Jun 16 08:27:00 2000 UTC
# Line 149  Line 149 
149            val theValues = ref (NONE: kernelValues option)            val theValues = ref (NONE: kernelValues option)
150    
151        in        in
152            val pcmode = PathConfig.new ()            val penv = SrcPath.newEnv ()
153    
154            (* cancelling anchors cannot affect the order of existing paths            (* cancelling anchors cannot affect the order of existing paths
155             * (it may invalidate some paths; but all other ones stay as             * (it may invalidate some paths; but all other ones stay as
156             * they are) *)             * they are) *)
157            fun setAnchor a NONE = PathConfig.cancel (pcmode, a)            fun setAnchor a v = SrcPath.set_anchor (penv, a, v)
             | setAnchor a (SOME s) = (PathConfig.set (pcmode, a, s);  
                                       SrcPath.sync ())  
158            (* same goes for reset because it just cancels all anchors... *)            (* same goes for reset because it just cancels all anchors... *)
159            fun resetPathConfig () = PathConfig.reset pcmode            fun resetPathConfig () = SrcPath.reset_anchors penv
160            (* get the current binding for an anchor *)            (* get the current binding for an anchor *)
161            fun getAnchor a () =            fun getAnchor a () = SrcPath.get_anchor (penv, a)
               Option.map (fn f => f ()) (PathConfig.configAnchor pcmode a)  
162    
163            fun mkStdSrcPath s =            fun mkStdSrcPath s =
164                SrcPath.standard pcmode { context = SrcPath.cwdContext (),                SrcPath.file
165                                          spec = s,                  (SrcPath.standard { err = fn s => raise Fail s, env = penv }
166                                          err = fn s => raise Fail s }                                    { context = SrcPath.cwd (), spec = s })
167    
168            fun getPending () = let            fun getPending () = let
169                fun one (s, _) = let                fun one (s, _) = let
# Line 185  Line 182 
182                    NONE => []                    NONE => []
183                  | SOME f => [f]                  | SOME f => [f]
184                val p = #get StdConfig.pathcfgspec () :: p                val p = #get StdConfig.pathcfgspec () :: p
185                fun processOne f = PathConfig.processSpecFile (pcmode, f)                fun processOne f = SrcPath.processSpecFile (penv, f)
186                    handle _ => ()                    handle _ => ()
187            in            in
188                  SrcPath.sync ();
189                app processOne p                app processOne p
190            end            end
191    
# Line 198  Line 196 
196                val v = getTheValues ()                val v = getTheValues ()
197            in            in
198                { fnpolicy = fnpolicy,                { fnpolicy = fnpolicy,
199                  pcmode = pcmode,                  penv = penv,
200                  symval = SSV.symval,                  symval = SSV.symval,
201                  keep_going = #get StdConfig.keep_going () }                  keep_going = #get StdConfig.keep_going () }
202            end            end
# Line 240  Line 238 
238                val _ = Say.vsay ["[attempting to load plugin ", x, "]\n"]                val _ = Say.vsay ["[attempting to load plugin ", x, "]\n"]
239                fun badname s = Say.say ["[bad plugin name: ", s, "]\n"]                fun badname s = Say.say ["[bad plugin name: ", s, "]\n"]
240                fun mkSrcPath s =                fun mkSrcPath s =
241                    SrcPath.standard pcmode { context = context,                    SrcPath.file
242                                              spec = s, err = badname }                        (SrcPath.standard { env = penv, err = badname }
243                                            { context = context, spec = s })
244                val success =                val success =
245                    run mkSrcPath NONE (make_runner false) x handle _ => false                    run mkSrcPath NONE (make_runner false) x handle _ => false
246            in            in
# Line 252  Line 251 
251                success                success
252            end            end
253    
254            fun cwd_load_plugin x = load_plugin (SrcPath.cwdContext ()) x            fun cwd_load_plugin x = load_plugin (SrcPath.cwd ()) x
255    
256            fun stabilize_runner gp g = true            fun stabilize_runner gp g = true
257    
# Line 267  Line 266 
266                    case archos of                    case archos of
267                        NONE => fnpolicy                        NONE => fnpolicy
268                      | SOME ao => FilenamePolicy.colocate_generic ao                      | SOME ao => FilenamePolicy.colocate_generic ao
269                fun sourcesOf ((p, gth), (v, a)) =                fun sourcesOf ((p, gth, _), (v, a)) =
270                    if SrcPathSet.member (v, p) then (v, a)                    if SrcPathSet.member (v, p) then (v, a)
271                    else                    else
272                        let val v = SrcPathSet.add (v, p)                        let val v = SrcPathSet.add (v, p)
# Line 305  Line 304 
304                (case Parse.parse (parse_arg (gr, NONE, p)) of                (case Parse.parse (parse_arg (gr, NONE, p)) of
305                     SOME (g, _) => let                     SOME (g, _) => let
306                         val (_, sm) =                         val (_, sm) =
307                             sourcesOf ((p, fn () => g),                             sourcesOf ((p, fn () => g, []),
308                                        (SrcPathSet.empty,                                        (SrcPathSet.empty,
309                                         StringMap.singleton                                         StringMap.singleton
310                                             (SrcPath.osstring p,                                             (SrcPath.osstring p,
# Line 339  Line 338 
338                val gr = GroupReg.new ()                val gr = GroupReg.new ()
339                fun parse p = Parse.parse (parse_arg (gr, NONE, p))                fun parse p = Parse.parse (parse_arg (gr, NONE, p))
340            in            in
341                Slave.slave { pcmode = pcmode,                Slave.slave { penv = penv,
342                              parse = parse,                              parse = parse,
343                              my_archos = my_archos,                              my_archos = my_archos,
344                              sbtrav = Compile.newSbnodeTraversal,                              sbtrav = Compile.newSbnodeTraversal,
# Line 386  Line 385 
385                        if isDir d then SOME (x, d) else NONE                        if isDir d then SOME (x, d) else NONE
386                    end                    end
387                    val pairList = List.mapPartial subDir fileList                    val pairList = List.mapPartial subDir fileList
388                      fun sa (x, d) = SrcPath.set_anchor (penv, x, SOME d)
389                in                in
390                    app (fn (x, d) => PathConfig.set (pcmode, x, d)) pairList                    app sa pairList
391                end                end
392    
393                val pidmapfile = P.concat (bootdir, BtNames.pidmap)                val pidmapfile = P.concat (bootdir, BtNames.pidmap)
# Line 400  Line 400 
400                                               handle DE.Unbound => e)                                               handle DE.Unbound => e)
401                                  | NONE => e                                  | NONE => e
402                        in                        in
403                            SrcPathMap.insert (m, SrcPath.fromDescr pcmode d,                            SrcPathMap.insert (m, SrcPath.decode penv d,
404                                               foldl enter1 emptydyn pids)                                               foldl enter1 emptydyn pids)
405                        end                        end
406                    in                    in
# Line 422  Line 422 
422    
423                val initgspec = mkStdSrcPath BtNames.initgspec                val initgspec = mkStdSrcPath BtNames.initgspec
424                val ginfo = { param = { fnpolicy = fnpolicy,                val ginfo = { param = { fnpolicy = fnpolicy,
425                                        pcmode = pcmode,                                        penv = penv,
426                                        symval = SSV.symval,                                        symval = SSV.symval,
427                                        keep_going = false },                                        keep_going = false },
428                              groupreg = GroupReg.new (),                              groupreg = GroupReg.new (),
429                              errcons = EM.defaultConsumer () }                              errcons = EM.defaultConsumer () }
430                fun loadInitGroup () =                fun loadInitGroup () =
431                    Stabilize.loadStable ginfo                    Stabilize.loadStable
432                      { getGroup = fn _ => raise Fail "CMBoot: initial getGroup",                        { getGroup = fn _ =>
433                                          raise Fail "CMBoot: initial getGroup",
434                        anyerrors = ref false }                        anyerrors = ref false }
435                      (initgspec, NONE)                        (ginfo, initgspec, NONE, [])
436            in            in
437                case loadInitGroup () of                case loadInitGroup () of
438                    NONE => raise Fail "CMBoot: unable to load init group"                    NONE => raise Fail "CMBoot: unable to load init group"
# Line 541  Line 542 
542          end          end
543    
544          structure Library = struct          structure Library = struct
545              type lib = SrcPath.t              type lib = SrcPath.file
546              val known = Parse.listLibs              val known = Parse.listLibs
547              val descr = SrcPath.descr              val descr = SrcPath.descr
548              val osstring = SrcPath.osstring              val osstring = SrcPath.osstring
# Line 557  Line 558 
558    
559          structure Server = struct          structure Server = struct
560              type server = Servers.server              type server = Servers.server
561              fun start x = Servers.start x before SrcPath.invalidateCwd ()              fun start x = Servers.start x
562                              before SrcPath.scheduleNotification ()
563              val stop = Servers.stop              val stop = Servers.stop
564              val kill = Servers.kill              val kill = Servers.kill
565              val name = Servers.name              val name = Servers.name
# Line 576  Line 578 
578      end      end
579    
580      structure Tools = ToolsFn (val load_plugin = cwd_load_plugin      structure Tools = ToolsFn (val load_plugin = cwd_load_plugin
581                                 val pcmode = pcmode)                                 val penv = penv)
582    
583      val load_plugin = load_plugin      val load_plugin = load_plugin
584    end    end

Legend:
Removed from v.665  
changed lines
  Added in v.666

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