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/compile/full-persstate-fn.sml
ViewVC logotype

Diff of /sml/trunk/src/cm/compile/full-persstate-fn.sml

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

revision 359, Tue Jun 29 01:53:40 1999 UTC revision 360, Tue Jun 29 09:21:02 1999 UTC
# Line 5  Line 5 
5   *   *
6   * Author: Matthias Blume (blume@kurims.kyoto-u.ac.jp)   * Author: Matthias Blume (blume@kurims.kyoto-u.ac.jp)
7   *)   *)
8  functor FullPersstateFn (structure MachDepVC : MACHDEP_VC) :> FULL_PERSSTATE =  local
     struct  
9          structure E = GenericVC.Environment          structure E = GenericVC.Environment
10          structure EM = GenericVC.ErrorMsg          structure EM = GenericVC.ErrorMsg
11          structure PP = PrettyPrint          structure PP = PrettyPrint
12    
13          type env = GenericVC.Environment.dynenv          type env = GenericVC.Environment.dynenv
14    in
15    functor FullPersstateFn (structure MachDepVC : MACHDEP_VC
16                             val warmup_hook: env option ref) :> FULL_PERSSTATE =
17        struct
18            type env = env
19    
20          datatype ord_key =          datatype ord_key =
21              SML of SmlInfo.info              SML of SmlInfo.info
# Line 50  Line 54 
54    
55          fun discard_pers i = persmap := discard (i, !persmap)          fun discard_pers i = persmap := discard (i, !persmap)
56    
57            fun new_info (i, popt) = let
58                fun dlook (e, p) =
59                    SOME (DynamicEnv.look e p) handle DynamicEnv.Unbound => NONE
60            in
61                discard_pers i;
62                case (!warmup_hook, popt) of
63                    (SOME we, SOME pid) =>
64                        (case dlook (we, pid) of
65                             NONE => ()
66                           | SOME x => let
67                                 val de =
68                                     DynamicEnv.bind (pid, x, DynamicEnv.empty)
69                             in
70                                 persmap := Map.insert (!persmap, i,
71                                                        SOME (de, ref Set.empty))
72                             end)
73                  | _ => ()
74            end
75    
76            fun new_smlinfo (i, popt) = new_info (SML i, popt)
77            fun new_bininfo (i, popt) = new_info (STABLE i, popt)
78    
79          local          local
80              structure RecompPersstate =              structure RecompPersstate =
81                  RecompPersstateFn (structure MachDepVC = MachDepVC                  RecompPersstateFn (structure MachDepVC = MachDepVC
82                                     val discard_code = false                                     val discard_code = false
83                                     val discard_value = discard_pers o SML)                                     val new_smlinfo = new_smlinfo)
84          in          in
85              open RecompPersstate              open RecompPersstate
86          end          end
# Line 121  Line 147 
147              Map.appi addDep tm              Map.appi addDep tm
148          end          end
149      end      end
150    end

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

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