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

SCM Repository

[diderot] Diff of /branches/pure-cfg/src/compiler/IL/translate-fn.sml
ViewVC logotype

Diff of /branches/pure-cfg/src/compiler/IL/translate-fn.sml

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

revision 508, Sun Feb 6 18:55:04 2011 UTC revision 509, Sun Feb 6 20:46:43 2011 UTC
# Line 60  Line 60 
60    
61      fun translateCFG (env, SrcIL.CFG{entry, exit}) = let      fun translateCFG (env, SrcIL.CFG{entry, exit}) = let
62            val findNd = findNd env            val findNd = findNd env
63            fun trans (SrcIL.ND{id, kind, ...}) = let            fun trans (srcNd as SrcIL.ND{id, kind, ...}) = let
64                  fun newNd nd = (insertNd (env, id, nd); nd)                  fun newNd nd = (insertNd (env, id, nd); nd)
65                  in                  in
66                    case findNd id                    case findNd id
# Line 90  Line 90 
90                                val trueB = trans (!trueBranch)                                val trueB = trans (!trueBranch)
91                                val _ = (DstNd.setTrueBranch (nd, trueB); DstNd.setPred(trueB, nd))                                val _ = (DstNd.setTrueBranch (nd, trueB); DstNd.setPred(trueB, nd))
92                                val falseB = trans (!falseBranch)                                val falseB = trans (!falseBranch)
93                                val _ = (DstNd.setTrueBranch (nd, falseB); DstNd.setPred(falseB, nd))                                val _ = (DstNd.setFalseBranch (nd, falseB); DstNd.setPred(falseB, nd))
94                                in                                in
95                                  nd                                  nd
96                                end                                end
# Line 101  Line 101 
101                                  nd                                  nd
102                                end                                end
103                            | SrcIL.ASSIGN{stm, succ, ...} => let                            | SrcIL.ASSIGN{stm, succ, ...} => let
104                                val DstIL.CFG{entry, exit} = expand (env, stm)                                val cfg = expand (env, stm)
105                                in                                in
106                                  DstNd.addEdge (exit, trans (!succ));                                  if DstCFG.isEmpty cfg
107                                  entry                                    then trans (!succ)
108                                      else (
109                                        DstNd.addEdge (DstCFG.exit cfg, trans (!succ));
110                                        DstCFG.entry cfg)
111                                end                                end
112                            | SrcIL.NEW{strand, args, succ, ...} => let                            | SrcIL.NEW{strand, args, succ, ...} => let
113                                val nd = newNd (DstNd.mkNEW{                                val nd = newNd (DstNd.mkNEW{

Legend:
Removed from v.508  
changed lines
  Added in v.509

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