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/compiler/TopLevel/backend/backend-fn.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/TopLevel/backend/backend-fn.sml

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

revision 1057, Fri Feb 8 17:31:02 2002 UTC revision 1058, Fri Feb 8 20:02:56 2002 UTC
# Line 14  Line 14 
14                          * assigned randomly *)                          * assigned randomly *)
15                         type pickle = unit                         type pickle = unit
16                         type hash = unit                         type hash = unit
17                           type pid = PersStamps.persstamp
18                         local                         local
19                             val topCount = ref 0                             val topCount = ref 0
20                         in                         in
21                             fun pickUnpick { context, env = newenv } = let                             fun pickUnpick { context, env = newenv,
22                                                uniquepid = _ } = let
23                                 val _ = topCount := !topCount + 1                                 val _ = topCount := !topCount + 1
24                                 val (newenv', hash, exportLvars, exportPid) =                                 val { newenv = newenv', hash,
25                                     PickMod.dontPickle (newenv, !topCount)                                       exportLvars, hasExports } =
26                                       PickMod.dontPickle { env = newenv,
27                                                            count = !topCount }
28                             in                             in
29                                 { hash = (),                                 { pid = (),
30                                     fingerprint = (),
31                                     pepper = "",
32                                   pickle = (),                                   pickle = (),
33                                   exportLvars = exportLvars,                                   exportLvars = exportLvars,
34                                   exportPid = exportPid,                                   exportPid = if hasExports then SOME hash
35                                                 else NONE,
36                                   newenv = newenv' }                                   newenv = newenv' }
37                             end                             end
38                         end                         end
# Line 45  Line 52 
52                     * pid-generation *)                     * pid-generation *)
53                    type pickle = Word8Vector.vector                    type pickle = Word8Vector.vector
54                    type hash = PersStamps.persstamp                    type hash = PersStamps.persstamp
55                      type pid = hash
56    
57                    fun pickUnpick { context, env = newenv } = let                    fun pickUnpick { context, env = newenv, uniquepid } = let
58                        val m = GenModIdMap.mkMap context                        val m = GenModIdMap.mkMap context
59                        fun up_context _ = m                        fun up_context _ = m
60                        val { hash, pickle, exportLvars, exportPid } =                        val { hash, pickle, exportLvars, hasExports } =
61                            PickMod.pickleEnv (PickMod.INITIAL m) newenv                            PickMod.pickleEnv (PickMod.INITIAL m) newenv
62                          val (pid, pepper) = uniquepid hash
63                        val newenv' =                        val newenv' =
64                            UnpickMod.unpickleEnv up_context (hash, pickle)                            UnpickMod.unpickleEnv up_context (pid, pickle)
65                    in                    in
66                        { hash = hash,                        { pid = pid,
67                            fingerprint = hash,
68                            pepper = pepper,
69                          pickle = pickle,                          pickle = pickle,
70                          exportLvars = exportLvars,                          exportLvars = exportLvars,
71                          exportPid = exportPid,                          exportPid = if hasExports then SOME pid else NONE,
72                          newenv = newenv' }                          newenv = newenv' }
73                    end                    end
74    

Legend:
Removed from v.1057  
changed lines
  Added in v.1058

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