Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/mid-to-low/step2.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/mid-to-low/step2.sml

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

revision 2668, Thu Jun 12 03:29:04 2014 UTC revision 2669, Fri Jun 13 02:08:31 2014 UTC
# Line 98  Line 98 
98  (*Get constant *)  (*Get constant *)
99  fun skeleton A=(case A  fun skeleton A=(case A
100      of [DstIL.ASSGN(_,DstIL.LIT(Literal.Int 0))]=>0      of [DstIL.ASSGN(_,DstIL.LIT(Literal.Int 0))]=>0
101        | [DstIL.ASSGN(_,DstIL.LIT(Literal.Int 1))]=> 1
102        | [DstIL.ASSGN(_,DstIL.LIT(Literal.Int ~1))]=> ~1
103      | _ => 9      | _ => 9
104      (*end case*))      (*end case*))
105    
# Line 146  Line 148 
148    
149    
150      fun gen body=let      fun gen body=let
151          fun AddcheckO ([],[],[])=let val (vA,A)=mkInt 1 in ([vA],A) end          fun AddcheckO ([],[],[])=let val (vA,A)=mkInt 0 in ([vA],A) end
152            | AddcheckO([],ids,code)=(ids,code)            | AddcheckO([],ids,code)=(ids,code)
153            | AddcheckO(e1::es,ids,code)=let            | AddcheckO(e1::es,ids,code)=let
154              val (a,b)=gen e1              val (a,b)=gen e1
# Line 170  Line 172 
172              fun sumloop mapsum=let              fun sumloop mapsum=let
173                  val _ = mapp:=mapsum                  val _ = mapp:=mapsum
174                  val(vA,A)=gen e                  val(vA,A)=gen e
175                  in ([vA],A) end                  in (case (skeleton A)
176                        of 0 => ([],A)
177                        |  _ => ([vA],A)
178                        (*end case*))
179                    end
180    
181                    (*in ([vA],A) end*)
182              fun sumI1(left,(v,0,lb1),[],rest,code)=let              fun sumI1(left,(v,0,lb1),[],rest,code)=let
183                  val dict=insert(v, lb1) left                  val dict=insert(v, lb1) left
184                  val (vD,pre)= sumloop dict                  val (vD,pre)= sumloop dict
# Line 192  Line 200 
200                  sumI1(!mapp,(v,ub-lb,lb),tl(sumx),[],[])                  sumI1(!mapp,(v,ub-lb,lb),tl(sumx),[],[])
201              end              end
202    
203          fun iterList(e,rator)= (case e          fun iterList(e, DstOp.addSca)=(case e
204                of ([],code)=>let val (vA,A)=mkInt 0 in (vA,A) end
205                | ([id1],code) => (id1,code)
206                | (ids,code)    => let
207                    val (vB,B)= mkMultipleSca(ids,DstOp.addSca)
208                    in (vB,code@B) end
209                (*end case*))
210    
211            | iterList(e,rator)= (case e
212              of ([id1],code) => (id1,code)              of ([id1],code) => (id1,code)
213              | (ids,code)    => let              | (ids,code)    => let
214                  val (vB,B)= mkMultipleSca(ids, rator)                  val (vB,B)= mkMultipleSca(ids, rator)
215                  in (vB,code@B) end                  in (vB,code@B) end
216              (*end case*))              (*end case*))
217    
218      in (case body      in (case body
219          of  E.Field _           => err 1          of  E.Field _           => err 1
220          | E.Partial _           => err 1          | E.Partial _           => err 1

Legend:
Removed from v.2668  
changed lines
  Added in v.2669

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