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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/low-to-tree/low-to-tree.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/low-to-tree/low-to-tree.sml

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

revision 4166, Thu Jul 7 14:33:11 2016 UTC revision 4168, Thu Jul 7 16:48:41 2016 UTC
# Line 830  Line 830 
830                          doNode (!succ, ifStk, stm :: stms)                          doNode (!succ, ifStk, stm :: stms)
831                        end                        end
832                    | k as IR.EXIT{kind, succ, ...} => (case (!succ, kind)                    | k as IR.EXIT{kind, succ, ...} => (case (!succ, kind)
833                         of (NONE, ExitKind.RETURN NONE) => mkBlock (List.rev(T.S_Exit :: stms))                         of (NONE, ExitKind.RETURN NONE) => join (ifStk, stms, k)
834                          | (NONE, ExitKind.RETURN(SOME x)) => raise Fail "FIXME: RETURN"                          | (NONE, ExitKind.RETURN(SOME x)) => let
835                          | (NONE, ExitKind.ACTIVE) => mkBlock (List.rev(T.S_Active :: stms))                              val (e', stms) = singleArg env (x, stms)
836                                in
837                                  join (ifStk, T.S_Return e' :: stms, k)
838                                end
839                            | (NONE, ExitKind.ACTIVE) => join (ifStk, T.S_Active :: stms, k)
840                          | (NONE, ExitKind.STABILIZE) => let                          | (NONE, ExitKind.STABILIZE) => let
841                              val stms = T.S_Stabilize :: stms                              val stms = T.S_Stabilize :: stms
842                              in                              in
# Line 840  Line 844 
844                              end                              end
845                          | (NONE, ExitKind.DIE) => join (ifStk, T.S_Die :: stms, k)                          | (NONE, ExitKind.DIE) => join (ifStk, T.S_Die :: stms, k)
846                          | (NONE, ExitKind.UNREACHABLE) => join (ifStk, stms, k)                          | (NONE, ExitKind.UNREACHABLE) => join (ifStk, stms, k)
847                            | (SOME nd, ExitKind.RETURN NONE) => doNode (nd, ifStk, stms)
848                            | (SOME nd, ExitKind.RETURN(SOME x)) => let
849                                val (e', stms) = singleArg env (x, stms)
850                                in
851                                  doNode (nd, ifStk, T.S_Return e' :: stms)
852                                end
853                          | (SOME nd, ExitKind.ACTIVE) => doNode (nd, ifStk, T.S_Active :: stms)                          | (SOME nd, ExitKind.ACTIVE) => doNode (nd, ifStk, T.S_Active :: stms)
854                          | (SOME nd, ExitKind.STABILIZE) => doNode (nd, ifStk, T.S_Stabilize :: stms)                          | (SOME nd, ExitKind.STABILIZE) => doNode (nd, ifStk, T.S_Stabilize :: stms)
855                          | (SOME nd, ExitKind.DIE) => doNode (nd, ifStk, T.S_Die :: stms)                          | (SOME nd, ExitKind.DIE) => doNode (nd, ifStk, T.S_Die :: stms)
856                          | (SOME nd, ExitKind.UNREACHABLE) => doNode (nd, ifStk, stms)                          | (SOME nd, ExitKind.UNREACHABLE) => doNode (nd, ifStk, stms)
                         | _ => raise Fail("unexpected continuation edge from "^IR.Node.toString nd)  
857                        (* end case *))                        (* end case *))
858                  (* end case *))                  (* end case *))
859            in            in

Legend:
Removed from v.4166  
changed lines
  Added in v.4168

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