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 651, Thu Jun 1 18:34:03 2000 UTC revision 652, Tue Jun 6 02:14:56 2000 UTC
# Line 109  Line 109 
109              app (visit o #1) (SmlInfoMap.listItemsi (!smlmap))              app (visit o #1) (SmlInfoMap.listItemsi (!smlmap))
110          end          end
111    
112          fun newTraversal (GG.ERRORGROUP, _) =          fun newTraversal0 (GG.ERRORGROUP, _) =
113              { group = fn _ => NONE, exports = SymbolMap.empty }              { group = fn _ => NONE, exports = SymbolMap.empty }
114            | newTraversal (group as GG.GROUP grec, getBFC) = let            | newTraversal0 (group as GG.GROUP grec, getBFC) = let
115    
116              val { exports, grouppath, ... } = grec              val { exports, grouppath, ... } = grec
117    
# Line 276  Line 276 
276                                  end                                  end
277    
278                              fun fsbn (_, n) = sbn n                              fun fsbn (_, n) = sbn n
279                              fun impexp (n, _) = fsbn n                              fun impexp (nth, _, _) = fsbn (nth ())
280                          in                          in
281                              SymbolMap.app impexp exports                              SymbolMap.app impexp exports
282                          end                          end
283                        fun force f = f ()
284                  in                  in
285                      if SrcPathSet.member (!visited, grouppath) then ()                      if SrcPathSet.member (!visited, grouppath) then ()
286                      else (visited := SrcPathSet.add (!visited, grouppath);                      else (visited := SrcPathSet.add (!visited, grouppath);
287                            app (registerGroup o #2) sublibs;                            app (registerGroup o force o #2) sublibs;
288                            case kind of                            case kind of
289                                GG.LIB { kind = GG.STABLE _, ... } =>                                GG.LIB { kind = GG.STABLE _, ... } =>
290                                    registerStableLib g                                    registerStableLib g
# Line 346  Line 347 
347    
348              and fsbn (_, n) = sbn n              and fsbn (_, n) = sbn n
349    
350              fun impexp (n, _) gp = #1 (fsbn n) gp              fun impexp (nth, _, _) gp = #1 (fsbn (nth ())) gp
351                  handle Link exn => raise exn                  handle Link exn => raise exn
352    
353              val exports' = SymbolMap.map impexp exports              val exports' = SymbolMap.map impexp exports
# Line 364  Line 365 
365              { exports = exports', group = group' }              { exports = exports', group = group' }
366          end          end
367    
368            fun newTraversal (x as (GG.ERRORGROUP, _)) = newTraversal0 x
369              | newTraversal (x as (GG.GROUP { exports, ... }, _)) = let
370                    val tth = Memoize.memoize (fn () => newTraversal0 x)
371                in
372                    { group = fn gp => #group (tth ()) gp,
373                      exports = SymbolMap.mapi
374                                    (fn (sy, _) => fn gp =>
375                                        valOf (SymbolMap.find (#exports (tth ()),
376                                                               sy))
377                                              gp)
378                                    exports }
379                end
380    
381          fun reset () = (stablemap := StableMap.empty;          fun reset () = (stablemap := StableMap.empty;
382                          smlmap := SmlInfoMap.empty)                          smlmap := SmlInfoMap.empty)
383    

Legend:
Removed from v.651  
changed lines
  Added in v.652

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