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

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

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

revision 300, Thu May 27 22:01:36 1999 UTC revision 301, Fri May 28 09:43:39 1999 UTC
# Line 129  Line 129 
129              end              end
130          in          in
131              SOME (load ()) handle exn => let              SOME (load ()) handle exn => let
132                  fun pphist pps =                  fun ppb pps =
133                      (PP.add_string pps (General.exnMessage exn);                      (PP.add_string pps (General.exnMessage exn);
134                       PP.add_newline pps)                       PP.add_newline pps)
135              in              in
136                  BinIO.closeIn s;                  BinIO.closeIn s;
137                  BinInfo.error gp i EM.COMPLAIN                  BinInfo.error gp i EM.COMPLAIN
138                         "unable to load stable library module" pphist;                         "unable to load stable library module" ppb;
139                  NONE                  NONE
140              end              end
141          end          end
# Line 163  Line 163 
163                      fun writer () = BF.write { stream = s, content = bfc,                      fun writer () = BF.write { stream = s, content = bfc,
164                                                 keep_code = true }                                                 keep_code = true }
165                  in                  in
166                      Interrupt.guarded writer                      Interrupt.guarded writer handle exn =>
167                      handle exn => (BinIO.closeOut s; raise exn);                          (BinIO.closeOut s; raise exn);
168                          BinIO.closeOut s;                          BinIO.closeOut s;
169                          Say.vsay (concat ["wrote ", binname, "]\n"])                      Say.vsay (concat ["[wrote ", binname, "]\n"])
170                  end handle e as Interrupt.Interrupt => (delete (); raise e)                  end handle e as Interrupt.Interrupt => (delete (); raise e)
171                           | exn => let                           | exn => let
172                                 fun pphist pps =                                 fun ppb pps =
173                                     (PP.add_string pps (General.exnMessage exn);                                     (PP.add_string pps (General.exnMessage exn);
174                                      PP.add_newline pps)                                      PP.add_newline pps)
175                             in                             in
176                                 delete ();                                 delete ();
177                                 SmlInfo.error gp i EM.WARN                                 SmlInfo.error gp i EM.WARN
178                                         ("failed to write " ^ binname) pphist                                         ("failed to write " ^ binname) ppb
179                             end                             end
180    
181                  fun load () = let                  fun load () = let
182                        val bin_ts = AbsPath.tstamp binpath
183                    in
184                        if TStamp.earlier (bin_ts, SmlInfo.lastseen i) then
185                            NONE
186                        else let
187                      val s = AbsPath.openBinIn binpath                      val s = AbsPath.openBinIn binpath
188                      fun read () = BF.read { stream = s, name = binname,                      fun read () = BF.read { stream = s, name = binname,
189                                              senv = stat,keep_code = true }                                              senv = stat,keep_code = true }
190                  in                  in
191                      SOME (Interrupt.guarded read)                          (SOME (Interrupt.guarded read)
192                             before SmlInfo.forgetParsetree i)
193                      handle exn => (BinIO.closeIn s; raise exn)                      handle exn => (BinIO.closeIn s; raise exn)
194                  end handle e as Interrupt.Interrupt => raise e                  end handle e as Interrupt.Interrupt => raise e
195                           | _ => NONE                           | _ => NONE
196                    end
197    
198                  fun compile () =                  fun compile () =
199                      case SmlInfo.parsetree gp i of                      case SmlInfo.parsetree gp i of
# Line 195  Line 202 
202                              val _ = Say.vsay (concat ["[compiling ",                              val _ = Say.vsay (concat ["[compiling ",
203                                                        SmlInfo.name i, " -> ",                                                        SmlInfo.name i, " -> ",
204                                                        binname, "...]\n"])                                                        binname, "...]\n"])
205                              val corenv =                              val corenv = #corenv (#param gp)
                                 Primitive.corenv (#primconf (#param gp))  
206                              val cmData = PidSet.listItems pids                              val cmData = PidSet.listItems pids
207                              val bfc = BF.create { runtimePid = NONE,                              val bfc = BF.create { runtimePid = NONE,
208                                                    splitting = true,                                                    splitting = true,
# Line 208  Line 214 
214                                                    corenv = corenv }                                                    corenv = corenv }
215                              val memo = { bfc = bfc, ctxt = stat }                              val memo = { bfc = bfc, ctxt = stat }
216                          in                          in
217                                SmlInfo.forgetParsetree i;
218                              save bfc;                              save bfc;
219                              PS.recomp_memo_sml (i, memo);                              PS.recomp_memo_sml (i, memo);
220                              SOME (memo2envdelta memo)                              SOME (memo2envdelta memo)
221                          end handle e as Interrupt.Interrupt => raise e                          end handle e as Interrupt.Interrupt => raise e
222                                   | _ => NONE                                   | BF.Compile _ => NONE
223                                     | e => let
224                                           fun ppb pps =
225                                               (PP.add_string pps
226                                                    (General.exnMessage e);
227                                                PP.add_newline pps)
228                                       in
229                                           SmlInfo.error gp i EM.COMPLAIN
230                                              ("exception raised while compiling "
231                                               ^ SmlInfo.name i)
232                                              ppb;
233                                           NONE
234                                       end
235    
236                  fun isValid x =                  fun isValid x =
237                      PidSet.equal (PidSet.addList (PidSet.empty, BF.cmDataOf x),                      PidSet.equal (PidSet.addList (PidSet.empty, BF.cmDataOf x),

Legend:
Removed from v.300  
changed lines
  Added in v.301

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