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/unpickmod-new.sml
ViewVC logotype

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

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

revision 774, Wed Jan 10 12:50:56 2001 UTC revision 1548, Wed Jul 14 21:25:43 2004 UTC
# Line 25  Line 25 
25                        PersStamps.persstamp * Word8Vector.vector ->                        PersStamps.persstamp * Word8Vector.vector ->
26                        StaticEnv.staticEnv                        StaticEnv.staticEnv
27    
28      val unpickleFLINT : Word8Vector.vector -> CompBasic.flint option      val unpickleFLINT : Word8Vector.vector -> FLINT.prog option
29    
30      (* The env unpickler resulting from "mkUnpicklers" cannot be used for      (* The env unpickler resulting from "mkUnpicklers" cannot be used for
31       * "original" environments that come out of the elaborator.  For those,       * "original" environments that come out of the elaborator.  For those,
# Line 35  Line 35 
35          { session: UnpickleUtil.session,          { session: UnpickleUtil.session,
36            stringlist: string list UnpickleUtil.reader } ->            stringlist: string list UnpickleUtil.reader } ->
37          context ->          context ->
38          { symenv: SymbolicEnv.symenv UnpickleUtil.reader,          { symenv: SymbolicEnv.env UnpickleUtil.reader,
39            statenv: StaticEnv.staticEnv UnpickleUtil.reader,            statenv: StaticEnv.staticEnv UnpickleUtil.reader,
40            symbol: Symbol.symbol UnpickleUtil.reader,            symbol: Symbol.symbol UnpickleUtil.reader,
41            symbollist: Symbol.symbol list UnpickleUtil.reader }            symbollist: Symbol.symbol list UnpickleUtil.reader }
# Line 114  Line 114 
114            P.GETSPECIAL,            P.GETSPECIAL,
115            P.USELVAR,            P.USELVAR,
116            P.DEFLVAR,            P.DEFLVAR,
           P.INLDIV,  
           P.INLMOD,  
           P.INLREM,  
           P.INLMIN,  
           P.INLMAX,  
           P.INLABS,  
117            P.INLNOT,            P.INLNOT,
118            P.INLCOMPOSE,            P.INLCOMPOSE,
119            P.INLBEFORE,            P.INLBEFORE,
# Line 132  Line 126 
126            P.SUBSCRIPT_REC,            P.SUBSCRIPT_REC,
127            P.SUBSCRIPT_RAW64,            P.SUBSCRIPT_RAW64,
128            P.UNBOXEDASSIGN,            P.UNBOXEDASSIGN,
129            P.RAW_CCALL NONE]            P.RAW_CCALL NONE,
130              P.INLIGNORE,
131              P.INLIDENTITY
132            ]
133    
134      val cmpop_table =      val cmpop_table =
135          #[P.>, P.>=, P.<, P.<=, P.LEU, P.LTU, P.GEU, P.GTU, P.EQL, P.NEQ]          #[P.>, P.>=, P.<, P.<=, P.LEU, P.LTU, P.GEU, P.GTU, P.EQL, P.NEQ]
136    
137      val arithop_table =      val arithop_table =
138          #[P.+, P.-, P.*, P./, P.~, P.ABS, P.LSHIFT, P.RSHIFT, P.RSHIFTL,          #[P.+, P.-, P.*, P./, P.~, P.ABS, P.LSHIFT, P.RSHIFT, P.RSHIFTL,
139            P.ANDB, P.ORB, P.XORB, P.NOTB, P.FSQRT, P.FSIN, P.FCOS, P.FTAN]            P.ANDB, P.ORB, P.XORB, P.NOTB, P.FSQRT, P.FSIN, P.FCOS, P.FTAN,
140              P.REM, P.DIV, P.MOD]
141    
142      val eqprop_table =      val eqprop_table =
143          #[T.YES, T.NO, T.IND, T.OBJ, T.DATA, T.ABS, T.UNDEF]          #[T.YES, T.NO, T.IND, T.OBJ, T.DATA, T.ABS, T.UNDEF]
# Line 200  Line 198 
198          val tkindListM = UU.mkMap ()          val tkindListM = UU.mkMap ()
199          val ctypeM = UU.mkMap ()          val ctypeM = UU.mkMap ()
200          val ctypeListM = UU.mkMap ()          val ctypeListM = UU.mkMap ()
201            val ccalltypeListM = UU.mkMap ()
202            val ccalltypeOptionM = UU.mkMap ()
203          val cciM = UU.mkMap ()          val cciM = UU.mkMap ()
204            val ioM = UU.mkMap ()
205    
206          val boollist = list boolListM bool          val boollist = list boolListM bool
207          val booloption = option boolOptionM bool          val booloption = option boolOptionM bool
208            val intoption = option ioM int
209    
210          val pid = UnpickleSymPid.r_pid (session, string)          val pid = UnpickleSymPid.r_pid (session, string)
211    
# Line 281  Line 283 
283          fun ctype () = let          fun ctype () = let
284              fun ct #"\020" = CTypes.C_ARRAY (ctype (), int ())              fun ct #"\020" = CTypes.C_ARRAY (ctype (), int ())
285                | ct #"\021" = CTypes.C_STRUCT (ctypelist ())                | ct #"\021" = CTypes.C_STRUCT (ctypelist ())
286                  | ct #"\022" = CTypes.C_UNION (ctypelist ())
287                | ct c =                | ct c =
288                  Vector.sub (ctype_table, Char.ord c)                  Vector.sub (ctype_table, Char.ord c)
289                  handle General.Subscript => raise Format                  handle General.Subscript => raise Format
# Line 290  Line 293 
293    
294          and ctypelist () = list ctypeListM ctype ()          and ctypelist () = list ctypeListM ctype ()
295    
296            fun ccalltype() = let
297                fun ct #"\000" = P.CCI32
298                  | ct #"\001" = P.CCI64
299                  | ct #"\002" = P.CCR64
300                  | ct #"\003" = P.CCML
301                  | ct _       = raise Format
302            in  nonshare ct
303            end
304    
305            and ccalltypelist () = list ccalltypeListM ccalltype ()
306            and ccalltypeoption () = option ccalltypeOptionM ccalltype ()
307    
308          fun ccall_info () = let          fun ccall_info () = let
309              fun cp #"C" =              fun cp #"C" =
310                  { c_proto = { conv = string (),                  { c_proto = { conv = string (),
311                                retTy = ctype (),                                retTy = ctype (),
312                                paramTys = ctypelist () },                                paramTys = ctypelist () },
313                    ml_flt_args = boollist (),                    ml_args = ccalltypelist (),
314                    ml_flt_res_opt = booloption () }                    ml_res_opt = ccalltypeoption (),
315                      reentrant = bool () }
316                | cp _ = raise Format                | cp _ = raise Format
317          in          in
318              share cciM cp              share cciM cp
# Line 328  Line 344 
344                | po #"\116" = P.RAW_LOAD (numkind ())                | po #"\116" = P.RAW_LOAD (numkind ())
345                | po #"\117" = P.RAW_STORE (numkind ())                | po #"\117" = P.RAW_STORE (numkind ())
346                | po #"\118" = P.RAW_CCALL (SOME (ccall_info ()))                | po #"\118" = P.RAW_CCALL (SOME (ccall_info ()))
347                  | po #"\119" = P.RAW_RECORD { fblock = bool () }
348                  | po #"\120" = P.INLMIN (numkind ())
349                  | po #"\121" = P.INLMAX (numkind ())
350                  | po #"\122" = P.INLABS (numkind ())
351                  | po #"\123" = P.TEST_INF (int ())
352                  | po #"\124" = P.TRUNC_INF (int ())
353                  | po #"\125" = P.EXTEND_INF (int ())
354                  | po #"\126" = P.COPY_INF (int ())
355                | po c =                | po c =
356                  Vector.sub (primop_table, Char.ord c)                  Vector.sub (primop_table, Char.ord c)
357                  handle General.Subscript => raise Format                  handle General.Subscript => raise Format
358          in          in
359              share poM po              share poM po
360          end          end
361    
362      in      in
363          { pid = pid, string = string, symbol = symbol,          { pid = pid, string = string, symbol = symbol,
364            access = access, conrep = conrep, consig = consig,            access = access, conrep = conrep, consig = consig,
365            primop = primop, boollist = boollist,            primop = primop, boollist = boollist, intoption = intoption,
366            tkind = tkind, tkindlist = tkindlist }            tkind = tkind, tkindlist = tkindlist }
367      end      end
368    
# Line 421  Line 446 
446          val iiListM = UU.mkMap ()          val iiListM = UU.mkMap ()
447          val overldM = UU.mkMap ()          val overldM = UU.mkMap ()
448          val olListM = UU.mkMap ()          val olListM = UU.mkMap ()
         val ioM = UU.mkMap ()  
449          val edListM = UU.mkMap ()          val edListM = UU.mkMap ()
450          val eenvBindM = UU.mkMap ()          val eenvBindM = UU.mkMap ()
451          val envM = UU.mkMap ()          val envM = UU.mkMap ()
# Line 436  Line 460 
460          val lmsOptM = UU.mkMap ()          val lmsOptM = UU.mkMap ()
461          val lmsPairM = UU.mkMap ()          val lmsPairM = UU.mkMap ()
462    
463          val { pid, string, symbol, access, conrep, consig,          val { pid, string, symbol, access, conrep, consig, intoption,
464                primop, boollist, tkind, tkindlist } = sharedStuff                primop, boollist, tkind, tkindlist } = sharedStuff
465    
466          fun libModSpec () = option lmsOptM (pair lmsPairM (int, symbol)) ()          fun libModSpec () = option lmsOptM (pair lmsPairM (int, symbol)) ()
# Line 527  Line 551 
551          end          end
552    
553          and tyckind () = let          and tyckind () = let
554              fun tk #"a" = T.PRIMITIVE (PT.pt_fromint (int ()))              fun tk #"a" = T.PRIMITIVE (int ())
555                | tk #"b" = let                | tk #"b" = let
556                      val index = int ()                      val index = int ()
557                      val root = entVarOption ()                      val root = entVarOption ()
# Line 557  Line 581 
581              fun dtf #"b" =              fun dtf #"b" =
582                  { mkey = stamp (),                  { mkey = stamp (),
583                    members = Vector.fromList (dtmemberlist ()),                    members = Vector.fromList (dtmemberlist ()),
584                    lambdatyc = ref NONE }                    properties = PropList.newHolder () }
585                | dtf _ = raise Format                | dtf _ = raise Format
586          in          in
587              share dtfM dtf              share dtfM dtf
# Line 749  Line 773 
773                                fctflag = ff,                                fctflag = ff,
774                                symbols = sl,                                symbols = sl,
775                                elements = el,                                elements = el,
776                                boundeps = ref beps,                                properties = PropList.newHolder (),
777                                lambdaty = ref NONE,                                (* boundeps = ref beps, *)
778                                  (* lambdaty = ref NONE, *)
779                                typsharing = ts,                                typsharing = ts,
780                                strsharing = ss,                                strsharing = ss,
781                                stub = SOME { owner = if lib then pid ()                                stub = SOME { owner = if lib then pid ()
# Line 758  Line 783 
783                                              tree = branch eltrl,                                              tree = branch eltrl,
784                                              lib = lib } }                                              lib = lib } }
785                  in                  in
786                        ModulePropLists.setSigBoundeps (r, beps);
787                      (M.SIG r, M.SIGNODE r)                      (M.SIG r, M.SIGNODE r)
788                  end                  end
789                | sg _ = raise Format                | sg _ = raise Format
# Line 787  Line 813 
813          end          end
814    
815          and spec' () = let          and spec' () = let
             val intoption = option ioM int  
816              fun sp #"1" =              fun sp #"1" =
817                  let val (t, ttr) = tycon' ()                  let val (t, ttr) = tycon' ()
818                  in                  in
# Line 1102  Line 1127 
1127                      ({ stamp = s,                      ({ stamp = s,
1128                         entities = e,                         entities = e,
1129                         rpath = ipath (),                         rpath = ipath (),
1130                         lambdaty = ref NONE,                         properties = PropList.newHolder (),
1131                           (* lambdaty = ref NONE, *)
1132                         stub = SOME { owner = if lib then pid ()                         stub = SOME { owner = if lib then pid ()
1133                                               else globalPid (),                                               else globalPid (),
1134                                       tree = etr,                                       tree = etr,
# Line 1124  Line 1150 
1150                      ({ stamp = s,                      ({ stamp = s,
1151                         closure = c,                         closure = c,
1152                         rpath = ipath (),                         rpath = ipath (),
1153                         lambdaty = ref NONE,                         properties = PropList.newHolder (),
1154                           (* lambdaty = ref NONE, *)
1155                         tycpath = NONE,                         tycpath = NONE,
1156                         stub = SOME { owner = if lib then pid ()                         stub = SOME { owner = if lib then pid ()
1157                                               else globalPid (),                                               else globalPid (),
# Line 1167  Line 1194 
1194              val bindlist = list envM (pair symBindPM (symbol, binding')) ()              val bindlist = list envM (pair symBindPM (symbol, binding')) ()
1195              fun bind ((s, (b, t)), e) = StaticEnv.bind0 (s, (b, SOME t), e)              fun bind ((s, (b, t)), e) = StaticEnv.bind0 (s, (b, SOME t), e)
1196          in          in
1197              Env.consolidate (foldl bind StaticEnv.empty bindlist)              StaticEnv.consolidate (foldl bind StaticEnv.empty bindlist)
1198          end          end
1199      in      in
1200          env          env
# Line 1208  Line 1235 
1235          val bool = UU.r_bool session          val bool = UU.r_bool session
1236    
1237          val { pid, string, symbol, access, conrep, consig,          val { pid, string, symbol, access, conrep, consig,
1238                primop, boollist, tkind, tkindlist } = sharedStuff                primop, boollist, tkind, tkindlist, intoption } = sharedStuff
1239    
1240          val ltyM = UU.mkMap ()          val ltyM = UU.mkMap ()
1241          val ltyListM = UU.mkMap ()          val ltyListM = UU.mkMap ()

Legend:
Removed from v.774  
changed lines
  Added in v.1548

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