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 386, Thu Jul 22 07:35:50 1999 UTC revision 387, Mon Jul 26 02:44:20 1999 UTC
# Line 46  Line 46 
46    
47          fun start () = ref Map.empty          fun start () = ref Map.empty
48    
49          fun share (SML i) = SmlInfo.share i          fun sh_mode (SML i) = SmlInfo.sh_mode i
50            | share (STABLE i) = BinInfo.share i            | sh_mode (STABLE i) = BinInfo.sh_mode i
51    
52          fun discard (k, m) =          fun discard (k, m) =
53              case Map.find (m, k) of              case Map.find (m, k) of
# Line 103  Line 103 
103                               (case Map.find (!persmap, k) of                               (case Map.find (!persmap, k) of
104                                    NONE => NONE                                    NONE => NONE
105                                  | SOME NONE =>                                  | SOME NONE =>
106                                        (case share k of                                        (case sh_mode k of
107                                             SOME true =>                                             Sharing.SHARE true =>
108                                                 error k EM.WARN                                                 error k EM.WARN
109                                                  (concat ["re-instantiating ",                                                  (concat ["re-instantiating ",
110                                                           descr k,                                                           descr k,
# Line 113  Line 113 
113                                           | _ => ();                                           | _ => ();
114                                         NONE)                                         NONE)
115                                  | SOME (SOME (e, _)) =>                                  | SOME (SOME (e, _)) =>
116                                             (case share k of                                             (case sh_mode k of
117                                                  SOME false =>                                                  Sharing.DONTSHARE =>
118                                                      (discard_pers k; NONE)                                                      (discard_pers k; NONE)
119                                                | _ =>  SOME e))                                                | _ =>  SOME e))
120                         | SOME (e, _) => SOME e)                         | SOME (e, _) => SOME e)
# Line 140  Line 140 
140              fun retainShared (k, (e, d), (pm, tm)) = let              fun retainShared (k, (e, d), (pm, tm)) = let
141                  val m = discard (k, pm)                  val m = discard (k, pm)
142              in              in
143                  case share k of                  case sh_mode k of
144                      SOME false => (pm, Map.insert (tm, k, (e, d)))                      Sharing.DONTSHARE => (pm, Map.insert (tm, k, (e, d)))
145                    | _ => (Map.insert (m, k, SOME (e, ref Set.empty)), tm)                    | _ => (Map.insert (m, k, SOME (e, ref Set.empty)), tm)
146              end              end
147              val pm = !persmap              val pm = !persmap

Legend:
Removed from v.386  
changed lines
  Added in v.387

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