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/branches/primop-branch-2/src/compiler/DebugProf/profile/tprof.sml
ViewVC logotype

Diff of /sml/branches/primop-branch-2/src/compiler/DebugProf/profile/tprof.sml

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

revision 1960, Fri Jul 7 20:38:45 2006 UTC revision 1961, Fri Jul 7 21:06:11 2006 UTC
# Line 90  Line 90 
90    
91  fun tmpvar(str,ty,mkv) =  fun tmpvar(str,ty,mkv) =
92      let val sym = S.varSymbol str      let val sym = S.varSymbol str
93       in VALvar{access=A.namedAcc(sym, mkv), info=II.Null,       in VALvar{access=A.namedAcc(sym, mkv), prim=PrimOpId.NonPrim,
94                 path=SP.SPATH[sym], typ=ref ty}                 path=SP.SPATH[sym], typ=ref ty}
95      end      end
96    
# Line 180  Line 180 
180    
181                 fun instrvb(vb as VB{pat,exp,tyvars,boundtvs}) =                 fun instrvb(vb as VB{pat,exp,tyvars,boundtvs}) =
182                      (case getvar pat                      (case getvar pat
183                        of SOME(VALvar{info, path=SP.SPATH[n],...}) =>                        of SOME(VALvar{prim, path=SP.SPATH[n],...}) =>
184                             if II.isSimple info then vb                            (case prim
185                             else VB{pat=pat, tyvars=tyvars,                               of PrimOpId.NonPrim => vb
186                                  | _ => VB{pat=pat, tyvars=tyvars,
187                                     exp=instrexp (n::clean names,                                     exp=instrexp (n::clean names,
188                                                   ccvara) false exp,                                                   ccvara) false exp,
189                                     boundtvs=boundtvs}                                          boundtvs=boundtvs})
190                         | SOME(VALvar{info, ...}) =>                         | SOME(VALvar{prim, ...}) =>
191                             if II.isSimple info then vb                            (case prim
192                             else VB{pat=pat, exp=instrexp sp false exp,                               of PrimOpId.NonPrim => vb
193                                     tyvars=tyvars, boundtvs=boundtvs}                                | _ =>  VB{pat=pat, exp=instrexp sp false exp,
194                                             tyvars=tyvars, boundtvs=boundtvs})
195                         | _ => VB{pat=pat, exp=instrexp sp false exp,                         | _ => VB{pat=pat, exp=instrexp sp false exp,
196                                   tyvars=tyvars, boundtvs=boundtvs})                                   tyvars=tyvars, boundtvs=boundtvs})
197    
# Line 288  Line 290 
290                         WHILEexp { test = iinstr test, expr = iinstr expr }                         WHILEexp { test = iinstr test, expr = iinstr expr }
291    
292                     | exp as APPexp (f,a) =>                     | exp as APPexp (f,a) =>
293                         let fun safe(VARexp(ref(VALvar{info, ...}), _)) =                         let fun safe(VARexp(ref(VALvar{prim, ...}), _)) =
294                                 if II.isSimple info then                                 (case prim
295                                     (if mayReturnMoreThanOnce info then false                                   of PrimOpId.NonPrim => false
296                                      | _ =>
297                                         if mayReturnMoreThanOnce prim then false
298                                      else true)                                      else true)
                                else false  
299                               | safe(MARKexp(e,_)) = safe e                               | safe(MARKexp(e,_)) = safe e
300                               | safe(CONSTRAINTexp(e,_)) = safe e                               | safe(CONSTRAINTexp(e,_)) = safe e
301                               | safe(SEQexp[e]) = safe e                               | safe(SEQexp[e]) = safe e

Legend:
Removed from v.1960  
changed lines
  Added in v.1961

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