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/MLRISC/block-placement/weighted-block-placement-fn.sml
ViewVC logotype

Diff of /sml/trunk/src/MLRISC/block-placement/weighted-block-placement-fn.sml

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

revision 1176, Mon Mar 25 16:07:39 2002 UTC revision 1177, Mon Mar 25 16:49:18 2002 UTC
# Line 251  Line 251 
251                  nd as (blkId, CFG.BLOCK{kind=CFG.NORMAL, insns, freq, ...}),                  nd as (blkId, CFG.BLOCK{kind=CFG.NORMAL, insns, freq, ...}),
252                  (next as (nextId, _)) :: rest,                  (next as (nextId, _)) :: rest,
253                  l                  l
254                ) = (                ) = let
255                    fun continue () = patch (next, rest, nd::l)
256                    in
257                  case #out_edges graph blkId                  case #out_edges graph blkId
258                   of [(_, dst, e as CFG.EDGE{k, w, a})] => (                   of [(_, dst, e as CFG.EDGE{k, w, a})] => (
259                        case (dst = nextId, k)                        case (dst = nextId, k)
# Line 269  Line 271 
271                                else () (* do not rewrite jumps to STOP block *)                                else () (* do not rewrite jumps to STOP block *)
272                          | _ => ()                          | _ => ()
273                        (* end case *);                        (* end case *);
274                        patch (next, rest, nd::l))                          continue())
275                    | [(_, dst1, e1 as CFG.EDGE{k=CFG.BRANCH b, ...}),                    | [(_, dst1, e1 as CFG.EDGE{k=CFG.BRANCH b, ...}),
276                        (_, dst2, e2)                        (_, dst2, e2)
277                      ] => (case (dst1 = nextId, dst2 = nextId, b)                      ] => (case (dst1 = nextId, dst2 = nextId, b)
# Line 313  Line 315 
315                                  (blkId, dst2, updEdge(e2, CFG.BRANCH true))                                  (blkId, dst2, updEdge(e2, CFG.BRANCH true))
316                                ]);                                ]);
317                              flipJmp (insns, labelOf dst2);                              flipJmp (insns, labelOf dst2);
318                              patch (next, rest, nd::l))                                continue())
319                          | (false, _, false) => (                          | (false, _, false) => (
320                              setEdges (blkId, [                              setEdges (blkId, [
321                                  (blkId, dst1, updEdge(e1, CFG.BRANCH true)),                                  (blkId, dst1, updEdge(e1, CFG.BRANCH true)),
322                                  (blkId, dst2, updEdge(e2, CFG.BRANCH false))                                  (blkId, dst2, updEdge(e2, CFG.BRANCH false))
323                                ]);                                ]);
324                              flipJmp (insns, labelOf dst1);                              flipJmp (insns, labelOf dst1);
325                              patch (next, rest, nd::l))                                continue())
326                          | _ => patch (next, rest, nd::l)                            | _ => continue()
                       (* end case *))  
                   | _ => patch (next, rest, nd::l)  
327                  (* end case *))                  (* end case *))
328                        | _ => continue()
329                      (* end case *)
330                      end
331              | patch (nd, next::rest, l) = patch(next, rest, nd::l)              | patch (nd, next::rest, l) = patch(next, rest, nd::l)
332              | patch (_, [], l) = List.rev l              | patch (nd, [], l) = List.rev(nd::l)
333            val blocks = patch (hd blocks, tl blocks, [])            val blocks = patch (hd blocks, tl blocks, [])
334            in            in
335              if !changed then CFG.changed cfg else ();              if !changed then CFG.changed cfg else ();

Legend:
Removed from v.1176  
changed lines
  Added in v.1177

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