Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Tracker SCM

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 904, Mon Aug 20 19:50:05 2001 UTC revision 905, Thu Aug 23 21:53:02 2001 UTC
# Line 36  Line 36 
36    
37        structure StabModmap = StabModmapFn ()        structure StabModmap = StabModmapFn ()
38    
39          val useStreamHook =
40              ref (fn _ => raise Fail "useStreamHook not initialized")
41              : (TextIO.instream -> unit) ref
42    
43        structure Compile =        structure Compile =
44            CompileFn (structure Backend = HostBackend            CompileFn (structure Backend = HostBackend
45                       structure StabModmap = StabModmap                       structure StabModmap = StabModmap
46                       val useStream = HostBackend.Interact.useStream                       fun useStream s = !useStreamHook s
47                       val compile_there = Servers.compile o SrcPath.encode)                       val compile_there = Servers.compile o SrcPath.encode)
48    
49        structure BFC =        structure BFC =
# Line 102  Line 106 
106                                  let val delta = E.mkenv { static = stat,                                  let val delta = E.mkenv { static = stat,
107                                                            symbolic = sym,                                                            symbolic = sym,
108                                                            dynamic = dyn }                                                            dynamic = dyn }
109                                      val base = #get ER.topLevel ()                                      val loc = ER.loc ()
110                                        val base = #get loc ()
111                                      val new = E.concatEnv (delta, base)                                      val new = E.concatEnv (delta, base)
112                                  in                                  in
113                                      #set ER.topLevel new;                                      #set loc new;
114                                      Say.vsay ["[New bindings added.]\n"]                                      Say.vsay ["[New bindings added.]\n"]
115                                  end                                  end
116                              else ();                              else ();
# Line 226  Line 231 
231                (case Parse.parse (parse_arg (al_greg, NONE, p)) of                (case Parse.parse (parse_arg (al_greg, NONE, p)) of
232                     NONE => false                     NONE => false
233                   | SOME (g, _) =>                   | SOME (g, _) =>
234                     (AutoLoad.register (EnvRef.topLevel, g);                     (AutoLoad.register (EnvRef.loc (), g);
235                      true))                      true))
236                before dropPickles ()                before dropPickles ()
237            end            end
# Line 446  Line 451 
451                AutoLoad.mkManager { get_ginfo = al_ginfo,                AutoLoad.mkManager { get_ginfo = al_ginfo,
452                                     dropPickles = dropPickles }                                     dropPickles = dropPickles }
453    
           fun al_manager' (ast, _, ter) = al_manager (ast, ter)  
   
454            fun reset () =            fun reset () =
455                (Compile.reset ();                (Compile.reset ();
456                 Link.reset ();                 Link.reset ();
# Line 456  Line 459 
459                 SmlInfo.reset ();                 SmlInfo.reset ();
460                 StabModmap.reset ())                 StabModmap.reset ())
461    
462            fun initTheValues (bootdir, de, er, autoload_postprocess) = let            fun initTheValues (bootdir, de, er, autoload_postprocess, icm) = let
463                  (* icm: "install compilation manager" *)
464                val _ = let                val _ = let
465                    fun listDir ds = let                    fun listDir ds = let
466                        fun loop l =                        fun loop l =
# Line 585  Line 589 
589                            Preload.preload { make = make, autoload = autoload }                            Preload.preload { make = make, autoload = autoload }
590                    in                    in
591                        #set ER.pervasive pervasive;                        #set ER.pervasive pervasive;
592                        #set ER.topLevel E.emptyEnv;                        #set (ER.loc ()) E.emptyEnv;(* redundant? *)
593                        theValues := SOME { init_group = init_group };                        theValues := SOME { init_group = init_group };
594                        case er of                        case er of
595                            BARE =>                            BARE =>
# Line 593  Line 597 
597                                 system_values := SrcPathMap.empty;                                 system_values := SrcPathMap.empty;
598                                 NONE)                                 NONE)
599                          | AUTOLOAD =>                          | AUTOLOAD =>
600                                (HostBackend.Interact.installCompManager                                (icm al_manager;
                                     (SOME al_manager');  
601                                      standard_preload BtNames.standard_preloads;                                      standard_preload BtNames.standard_preloads;
602                                 (* unconditionally drop all library pickles *)                                 (* unconditionally drop all library pickles *)
603                                 Parse.dropPickles ();                                 Parse.dropPickles ();
# Line 603  Line 606 
606            end            end
607        end        end
608    in    in
609      fun init (bootdir, de, er) = let      fun init (bootdir, de, er, useStream, useFile, icm) = let
610          fun procCmdLine () = let          fun procCmdLine () = let
611              val autoload = ignore o autoload              val autoload = ignore o autoload
612              val make = ignore o make              val make = ignore o make
613              fun p (f, mk, ("sml" | "sig" | "fun")) =              fun p (f, mk, ("sml" | "sig" | "fun")) = useFile f
                 HostBackend.Interact.useFile f  
614                | p (f, mk, "cm") = mk f                | p (f, mk, "cm") = mk f
615                | p (f, mk, e) = Say.say ["!* unable to process `", f,                | p (f, mk, e) = Say.say ["!* unable to process `", f,
616                                          "' (unknown extension `", e, "')\n"]                                          "' (unknown extension `", e, "')\n"]
# Line 649  Line 651 
651                | l => args (l, autoload)                | l => args (l, autoload)
652          end          end
653      in      in
654            useStreamHook := useStream;
655          initTheValues (bootdir, de, er,          initTheValues (bootdir, de, er,
656                         fn () => (Cleanup.install initPaths;                         fn () => (Cleanup.install initPaths;
657                                   procCmdLine))                                   procCmdLine),
658                           icm)
659      end      end
660    
661      structure CM = struct      structure CM = struct

Legend:
Removed from v.904  
changed lines
  Added in v.905

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