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/Semant/pickle/pickmod-new.sml
ViewVC logotype

Diff of /sml/trunk/src/compiler/Semant/pickle/pickmod-new.sml

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

revision 537, Fri Feb 18 17:20:16 2000 UTC revision 569, Tue Mar 7 04:01:07 2000 UTC
# Line 5  Line 5 
5   *)   *)
6  signature PICKMOD = sig  signature PICKMOD = sig
7    
8      datatype ckey =                     (* context key *)      (* "context keys": PrimKey indicates some kind of "primitive" context
9          PrimKey                         (* for primEnv *)       * (e.g., the primitive environment), and NodeKey specifies a module
10        | NodeKey of int * Symbol.symbol  (* n-th sublib, module exporting sym *)       * of a library.  The library is given by the string list (CM's "pickle"
11         * representation of the abstract path) and the module is given by
12         * a representative export symbol.
13         * But these are details that we don't concern us here.  We just have
14         * to write this info to a pickle. *)
15        datatype ckey =
16            PrimKey
17          | NodeKey of string list * Symbol.symbol
18    
19      type 'a context =      type 'a context =
20          { lookSTR: ModuleId.modId -> 'a,          { lookSTR: ModuleId.modId -> 'a,
# Line 67  Line 74 
74  end  end
75    
76  local  local
     (* make those into red-black-maps once rb-maps work correcty. *)  
77      functor MapFn = RedBlackMapFn      functor MapFn = RedBlackMapFn
78      structure IntMap = IntRedBlackMap      structure IntMap = IntRedBlackMap
79  in  in
# Line 627  Line 633 
633    
634      datatype ckey =                     (* context key *)      datatype ckey =                     (* context key *)
635          PrimKey          PrimKey
636        | NodeKey of int * Symbol.symbol        | NodeKey of string list * Symbol.symbol
637    
638      type 'a context =      type 'a context =
639          { lookSTR: ModuleId.modId -> 'a,          { lookSTR: ModuleId.modId -> 'a,
# Line 641  Line 647 
647          NoStub          NoStub
648        | SimpleStub        | SimpleStub
649        | PrimStub        | PrimStub
650        | NodeStub of int * Symbol.symbol        | NodeStub of string list * Symbol.symbol
651    
652      (* the environment pickler *)      (* the environment pickler *)
653      fun mkEnvPickler (context0: stubinfo context, isLocalPid) = let      fun mkEnvPickler (context0: stubinfo context, isLocalPid) = let
# Line 777  Line 783 
783                            | NoStub => "B" $ [stamp s, int arity, eqprop eq,                            | NoStub => "B" $ [stamp s, int arity, eqprop eq,
784                                               tyckind kind, ipath path]                                               tyckind kind, ipath path]
785                            | PrimStub => "I" $ [modId id]                            | PrimStub => "I" $ [modId id]
786                            | NodeStub (i, s) =>                            | NodeStub (sl, s) =>
787                                  "J" $ [int i, symbol s, modId id]                              "J" $ [list string sl, symbol s, modId id]
788                  in                  in
789                      share (MIs (id, NONE)) gt_raw x                      share (MIs (id, NONE)) gt_raw x
790                  end                  end
# Line 879  Line 885 
885                                         list (list spath) typsharing,                                         list (list spath) typsharing,
886                                         list (list spath) strsharing]                                         list (list spath) strsharing]
887                            | PrimStub => "D" $ [modId id]                            | PrimStub => "D" $ [modId id]
888                            | NodeStub (i, s) =>                            | NodeStub (sl, s) =>
889                                  "E" $ [int i, symbol s, modId id]                              "E" $ [list string sl, symbol s, modId id]
890                      end                      end
891                  in                  in
892                      share (MIs (id, NONE)) sig_raw x                      share (MIs (id, NONE)) sig_raw x
# Line 905  Line 911 
911                                         option symbol paramsym,                                         option symbol paramsym,
912                                         Signature bodysig]                                         Signature bodysig]
913                            | PrimStub => "d" $ [modId id]                            | PrimStub => "d" $ [modId id]
914                            | NodeStub (i, s) =>                            | NodeStub (sl, s) => "e" $ [list string sl,
915                                  "e" $ [int i, symbol s, modId id]                                                         symbol s, modId id]
916                      end                      end
917                  in                  in
918                      share (MIs (id, NONE)) fsig_raw x                      share (MIs (id, NONE)) fsig_raw x
# Line 962  Line 968 
968                                  "D" $ [Signature sign, strEntity rlzn,                                  "D" $ [Signature sign, strEntity rlzn,
969                                         access a, inl_info info]                                         access a, inl_info info]
970                            | PrimStub => "I" $ [modId id]                            | PrimStub => "I" $ [modId id]
971                            | NodeStub (i, s) =>                            | NodeStub (sl, s) =>
972                                   "J" $ [int i, symbol s, modId id, access a]                              "J" $ [list string sl, symbol s, modId id,
973                                       access a]
974                  in                  in
975                      share (MIs (id, acc_pid (#access x))) s_raw x                      share (MIs (id, acc_pid (#access x))) s_raw x
976                  end                  end
# Line 985  Line 992 
992                                  "G" $ [fctSig sign, fctEntity rlzn,                                  "G" $ [fctSig sign, fctEntity rlzn,
993                                         access a, inl_info info]                                         access a, inl_info info]
994                            | PrimStub => "H" $ [modId id]                            | PrimStub => "H" $ [modId id]
995                            | NodeStub (i, s) =>                            | NodeStub (sl, s) =>
996                                  "I" $ [int i, symbol s, modId id, access a]                              "I" $ [list string sl, symbol s, modId id,
997                                       access a]
998                  in                  in
999                      share (MIs (id, acc_pid (#access x))) f_raw x                      share (MIs (id, acc_pid (#access x))) f_raw x
1000                  end                  end
# Line 1063  Line 1071 
1071                          SimpleStub => "D" $ [modId id]                          SimpleStub => "D" $ [modId id]
1072                        | NoStub => "E" $ [stamp s, entityEnv r]                        | NoStub => "E" $ [stamp s, entityEnv r]
1073                        | PrimStub => "F" $ [modId id]                        | PrimStub => "F" $ [modId id]
1074                        | NodeStub (i, s) => "G" $ [int i, symbol s, modId id]                        | NodeStub (sl, s) =>
1075                            "G" $ [list string sl, symbol s, modId id]
1076              in              in
1077                  share (MIs (id, NONE)) mee_raw (s, r)                  share (MIs (id, NONE)) mee_raw (s, r)
1078              end              end
# Line 1165  Line 1174 
1174          fun cvt lk i =          fun cvt lk i =
1175              case lk i of              case lk i of
1176                  SOME PrimKey => PrimStub                  SOME PrimKey => PrimStub
1177                | SOME (NodeKey (i, s)) => NodeStub (i, s)                | SOME (NodeKey (sl, s)) => NodeStub (sl, s)
1178                | NONE => NoStub                | NONE => NoStub
1179          val c = { lookSTR = cvt lookSTR,          val c = { lookSTR = cvt lookSTR,
1180                    lookSIG = cvt lookSIG,                    lookSIG = cvt lookSIG,

Legend:
Removed from v.537  
changed lines
  Added in v.569

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