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

Diff of /sml/trunk/src/cm/compile/link.sml

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

revision 404, Wed Sep 1 07:03:22 1999 UTC revision 446, Wed Sep 29 03:29:07 1999 UTC
# Line 159  Line 159 
159                      handle exn =>                      handle exn =>
160                          exn_err ("unable to load library module",                          exn_err ("unable to load library module",
161                                   error, descr, exn)                                   error, descr, exn)
                 val epid = BF.exportPidOf bfc  
162              in              in
163                  execute (bfc, e)                  execute (bfc, e)
164                  handle exn => exn_err ("link-time exception in library code",                  handle exn => exn_err ("link-time exception in library code",
# Line 200  Line 199 
199          end          end
200    
201          fun registerGroup g = let          fun registerGroup g = let
             val GG.GROUP { grouppath, kind, sublibs, ... } = g  
202              val visited = ref SrcPathSet.empty              val visited = ref SrcPathSet.empty
203                fun registerGroup' g = let
204                    val GG.GROUP { grouppath, kind, sublibs, ... } = g
205              fun registerStableLib (GG.GROUP { exports, ... }) = let              fun registerStableLib (GG.GROUP { exports, ... }) = let
206                  val localmap = ref StableMap.empty                  val localmap = ref StableMap.empty
207                  fun bn (DG.PNODE p) =                  fun bn (DG.PNODE p) =
208                      (fn gp => fn _ => prim2dyn p gp, NONE)                      (fn gp => fn _ => prim2dyn p gp, NONE)
209                    | bn (DG.BNODE n) = let                    | bn (DG.BNODE n) = let
210                          val { bininfo = i, localimports, globalimports } = n                              val { bininfo = i, localimports, globalimports } =
211                                    n
212                          fun new () = let                          fun new () = let
213                              val e0 = (getPerv, [])                              val e0 = (getPerv, [])
214                              fun join ((f, NONE), (e, l)) =                              fun join ((f, NONE), (e, l)) =
# Line 244  Line 245 
245                                     | NONE => let                                     | NONE => let
246                                           val x = new ()                                           val x = new ()
247                                       in                                       in
248                                           localmap :=                                                    localmap := StableMap.insert
249                                              StableMap.insert (!localmap, i, x);                                                         (!localmap, i, x);
250                                           x                                           x
251                                       end)                                       end)
252                      end                      end
# Line 255  Line 256 
256                  fun sbn (DG.SB_SNODE n) =                  fun sbn (DG.SB_SNODE n) =
257                      EM.impossible "Link:SNODE in stable lib"                      EM.impossible "Link:SNODE in stable lib"
258                    | sbn (DG.SB_BNODE (DG.PNODE _, _)) = ()                    | sbn (DG.SB_BNODE (DG.PNODE _, _)) = ()
259                    | sbn (DG.SB_BNODE (n as DG.BNODE { bininfo, ... }, _)) = let                        | sbn (DG.SB_BNODE (n as DG.BNODE { bininfo, ... }, _)) =
260                            let
261                          val b as B (_, i, _) =                          val b as B (_, i, _) =
262                              case bn n of                              case bn n of
263                                  (f, NONE) => B (f, bininfo, [])                                  (f, NONE) => B (f, bininfo, [])
# Line 272  Line 274 
274          in          in
275              if SrcPathSet.member (!visited, grouppath) then ()              if SrcPathSet.member (!visited, grouppath) then ()
276              else (visited := SrcPathSet.add (!visited, grouppath);              else (visited := SrcPathSet.add (!visited, grouppath);
277                    app registerGroup sublibs;                        app (registerGroup' o #2) sublibs;
278                    case kind of                    case kind of
279                        GG.STABLELIB => registerStableLib g                        GG.STABLELIB => registerStableLib g
280                      | _ => ())                      | _ => ())
281          end          end
282            in
283                registerGroup' g
284            end
285    
286          fun newTraversal (group as GG.GROUP { exports, ... }, getBFC) = let          fun newTraversal (group as GG.GROUP { exports, ... }, getBFC) = let
287    
288              val _ = registerGroup group              val _ = registerGroup group
289    
290              val l_stablemap = ref StableMap.empty              val l_stablemap = ref StableMap.empty

Legend:
Removed from v.404  
changed lines
  Added in v.446

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