| --- if1 |
| B0 = EntryBlock() dominates:(B6, B16, B5) |
| v22 = Constant("oops") |
| v25 = Constant(null) |
| v1 = Parameter(c1) |
| v2 = Parameter(c2) |
| v3 = Parameter(c3) |
| Branch(v1, true: B5, false: B6) |
| B5 = TargetBlock() idom:B0 dominates:(B10, B19, B9) |
| Branch(v2, true: B9, false: B10) |
| B9 = TargetBlock() idom:B5 |
| Goto(B19) |
| B10 = TargetBlock() idom:B5 dominates:(B14, B13) |
| Branch(v3, true: B13, false: B14) |
| B13 = TargetBlock() idom:B10 |
| Goto(B16) |
| B14 = TargetBlock() idom:B10 |
| Goto(B19) |
| B19 = JoinBlock(B14, B9) idom:B5 |
| DirectCall print(v22) |
| Goto(B16) |
| B6 = TargetBlock() idom:B0 |
| Goto(B16) |
| B16 = JoinBlock(B6, B19, B13) idom:B0 |
| Return(v25) |
| |
| --- condition |
| B0 = EntryBlock() |
| v3 = Constant(3) |
| v5 = Constant(0) |
| v1 = Parameter(i) |
| v4 = BinaryIntOp %(v1, v3) |
| v6 = Comparison int ==(v4, v5) |
| Return(v6) |
| |
| --- if2 |
| B0 = EntryBlock() dominates:(B4, B40, B3) |
| v1 = Constant(1) |
| v6 = Constant(2) |
| v11 = Constant(3) |
| v22 = Constant(4) |
| v27 = Constant(5) |
| v44 = Constant(null) |
| v2 = DirectCall condition(v1) |
| Branch(v2, true: B3, false: B4) |
| B3 = TargetBlock() idom:B0 dominates:(B9, B19, B17, B8) |
| v7 = DirectCall condition(v6) |
| Branch(v7, true: B8, false: B9) |
| B8 = TargetBlock() idom:B3 dominates:(B14, B13) |
| v12 = DirectCall condition(v11) |
| Branch(v12, true: B13, false: B14) |
| B13 = TargetBlock() idom:B8 |
| DirectCall print(v1) |
| Goto(B17) |
| B14 = TargetBlock() idom:B8 |
| Goto(B19) |
| B9 = TargetBlock() idom:B3 |
| Goto(B19) |
| B19 = JoinBlock(B9, B14) idom:B3 dominates:(B25, B32, B34, B24) |
| v23 = DirectCall condition(v22) |
| Branch(v23, true: B24, false: B25) |
| B24 = TargetBlock() idom:B19 |
| Goto(B34) |
| B25 = TargetBlock() idom:B19 dominates:(B30, B29) |
| v28 = DirectCall condition(v27) |
| Branch(v28, true: B29, false: B30) |
| B29 = TargetBlock() idom:B25 |
| Goto(B34) |
| B34 = JoinBlock(B29, B24) idom:B19 |
| DirectCall print(v6) |
| Goto(B32) |
| B30 = TargetBlock() idom:B25 |
| Goto(B32) |
| B32 = JoinBlock(B30, B34) idom:B19 |
| Goto(B17) |
| B17 = JoinBlock(B32, B13) idom:B3 |
| Goto(B40) |
| B4 = TargetBlock() idom:B0 |
| DirectCall print(v11) |
| Goto(B40) |
| B40 = JoinBlock(B4, B17) idom:B0 |
| Return(v44) |
| |
| --- forLoop |
| B0 = EntryBlock() dominates:(B5) |
| v2 = Constant(0) |
| v18 = Constant(1) |
| v1 = Parameter(n) |
| Goto(B5) |
| B5 = JoinBlock(B0, B10) idom:B0 dominates:(B11, B10) loop-header (depth:1 body:(B5, B10) back-edges:(B10)) |
| v25 = Phi(v2, v19) |
| v24 = Phi(v2, v15) |
| v9 = Comparison int <(v25, v1) |
| Branch(v9, true: B10, false: B11) |
| B10 = TargetBlock() idom:B5 in-loop:B5 |
| v15 = BinaryIntOp +(v24, v25) |
| v19 = BinaryIntOp +(v25, v18) |
| Goto(B5) |
| B11 = TargetBlock() idom:B5 |
| Return(v24) |
| |
| --- whileLoop |
| B0 = EntryBlock() dominates:(B5) |
| v2 = Constant(0) |
| v18 = Constant(10) |
| v28 = Constant(1) |
| v1 = Parameter(n) |
| Goto(B5) |
| B5 = JoinBlock(B0, B21) idom:B0 dominates:(B11, B25, B10) loop-header (depth:1 body:(B5, B10, B21) back-edges:(B21)) |
| v37 = Phi(v2, v29) |
| v35 = Phi(v2, v15) |
| v9 = Comparison int <(v37, v1) |
| Branch(v9, true: B10, false: B11) |
| B10 = TargetBlock() idom:B5 dominates:(B21, B20) in-loop:B5 |
| v15 = BinaryIntOp +(v35, v37) |
| v19 = Comparison int >(v15, v18) |
| Branch(v19, true: B20, false: B21) |
| B20 = TargetBlock() idom:B10 |
| Goto(B25) |
| B21 = TargetBlock() idom:B10 in-loop:B5 |
| v29 = BinaryIntOp +(v37, v28) |
| Goto(B5) |
| B11 = TargetBlock() idom:B5 |
| Goto(B25) |
| B25 = JoinBlock(B11, B20) idom:B5 |
| v36 = Phi(v35, v15) |
| Return(v36) |
| |
| --- doWhileLoop |
| B0 = EntryBlock() dominates:(B6) |
| v2 = Constant(0) |
| Constant(1) |
| v26 = Constant(-1) |
| v1 = Parameter(n) |
| Goto(B6) |
| B6 = JoinBlock(B0, B18) idom:B0 dominates:(B19, B18) loop-header (depth:1 body:(B6, B18) back-edges:(B18)) |
| v25 = Phi(v1, v27) |
| v24 = Phi(v2, v10) |
| v10 = BinaryIntOp +(v24, v25) |
| v27 = BinaryIntOp +(v25, v26) |
| v17 = Comparison int >=(v27, v2) |
| Branch(v17, true: B18, false: B19) |
| B18 = TargetBlock() idom:B6 in-loop:B6 |
| Goto(B6) |
| B19 = TargetBlock() idom:B6 |
| Return(v10) |
| |
| --- forInLoop |
| B0 = EntryBlock() dominates:(B7) |
| v2 = Constant(0) |
| v1 = Parameter(list) |
| v5 = InterfaceCall getter Iterable.iterator(v1) |
| Goto(B7) |
| B7 = JoinBlock(B0, B11) idom:B0 dominates:(B12, B11) loop-header (depth:1 body:(B7, B11) back-edges:(B11)) |
| v24 = Phi(v2, v19) |
| v10 = InterfaceCall Iterator.moveNext(v5) |
| Branch(v10, true: B11, false: B12) |
| B11 = TargetBlock() idom:B7 in-loop:B7 |
| v15 = InterfaceCall getter Iterator.current(v5) |
| v19 = BinaryIntOp +(v24, v15) |
| Goto(B7) |
| B12 = TargetBlock() idom:B7 |
| Return(v24) |
| |
| --- breakAndContinue |
| B0 = EntryBlock() dominates:(B5) |
| v3 = Constant(0) |
| v23 = Constant(3) |
| v35 = Constant(5) |
| v47 = Constant(1) |
| v56 = Constant(null) |
| v1 = Parameter(n) |
| v2 = Parameter(m) |
| Goto(B5) |
| B5 = JoinBlock(B0, B43) idom:B0 dominates:(B11, B10) loop-header (depth:1 body:(B5, B10, B14, B20, B43, B19, B26, B39, B30, B38, B25) back-edges:(B43)) |
| v58 = Phi(v3, v53) |
| v9 = Comparison int <(v58, v1) |
| Branch(v9, true: B10, false: B11) |
| B10 = TargetBlock() idom:B5 dominates:(B14) in-loop:B5 |
| Goto(B14) |
| B14 = JoinBlock(B10, B30) idom:B10 dominates:(B20, B43, B19) loop-header (depth:2 body:(B14, B19, B26, B39, B30, B25) back-edges:(B30)) |
| v59 = Phi(v3, v48) |
| v18 = Comparison int <(v59, v2) |
| Branch(v18, true: B19, false: B20) |
| B19 = TargetBlock() idom:B14 dominates:(B26, B30, B25) in-loop:B14 |
| v24 = Comparison int <(v59, v23) |
| Branch(v24, true: B25, false: B26) |
| B25 = TargetBlock() idom:B19 in-loop:B14 |
| Goto(B30) |
| B26 = TargetBlock() idom:B19 dominates:(B39, B38) in-loop:B14 |
| v34 = BinaryIntOp +(v58, v59) |
| v36 = BinaryIntOp %(v34, v35) |
| v37 = Comparison int ==(v36, v3) |
| Branch(v37, true: B38, false: B39) |
| B38 = TargetBlock() idom:B26 in-loop:B5 |
| Goto(B43) |
| B39 = TargetBlock() idom:B26 in-loop:B14 |
| Goto(B30) |
| B30 = JoinBlock(B39, B25) idom:B19 in-loop:B14 |
| v48 = BinaryIntOp +(v59, v47) |
| Goto(B14) |
| B20 = TargetBlock() idom:B14 in-loop:B5 |
| Goto(B43) |
| B43 = JoinBlock(B20, B38) idom:B14 in-loop:B5 |
| v53 = BinaryIntOp +(v58, v47) |
| Goto(B5) |
| B11 = TargetBlock() idom:B5 |
| Return(v56) |
| |
| --- switchStatement |
| B0 = EntryBlock() dominates:(B9, B34, B3, B8) |
| v6 = Constant(1) |
| v12 = Constant(2) |
| v18 = Constant(3) |
| v24 = Constant(4) |
| v32 = Constant("1-2") |
| v36 = Constant("3") |
| v39 = Constant("3-4") |
| v43 = Constant(null) |
| v1 = Parameter(x) |
| v7 = Comparison int ==(v1, v6) |
| Branch(v7, true: B8, false: B9) |
| B8 = TargetBlock() idom:B0 |
| Goto(B3) |
| B9 = TargetBlock() idom:B0 dominates:(B15, B14) |
| v13 = Comparison int ==(v1, v12) |
| Branch(v13, true: B14, false: B15) |
| B14 = TargetBlock() idom:B9 |
| Goto(B3) |
| B3 = JoinBlock(B14, B8) idom:B0 |
| DirectCall print(v32) |
| Goto(B34) |
| B15 = TargetBlock() idom:B9 dominates:(B21, B30, B5, B20) |
| v19 = Comparison int ==(v1, v18) |
| Branch(v19, true: B20, false: B21) |
| B20 = TargetBlock() idom:B15 |
| DirectCall print(v36) |
| Goto(B5) |
| B21 = TargetBlock() idom:B15 dominates:(B27, B26) |
| v25 = Comparison int ==(v1, v24) |
| Branch(v25, true: B26, false: B27) |
| B26 = TargetBlock() idom:B21 |
| Goto(B5) |
| B5 = JoinBlock(B26, B20) idom:B15 |
| DirectCall print(v39) |
| Goto(B30) |
| B27 = TargetBlock() idom:B21 |
| Goto(B30) |
| B30 = JoinBlock(B27, B5) idom:B15 |
| Goto(B34) |
| B34 = JoinBlock(B30, B3) idom:B0 |
| Return(v43) |
| |
| --- tryBlocks |
| B0 = EntryBlock() dominates:(B4, B24, B3) |
| Constant(1) |
| Constant(2) |
| v11 = Constant(3) |
| v35 = Constant(null) |
| TryEntry(try-body: B3, catch-block: B4) |
| B3 = TargetBlock() exception-handler:B4 idom:B0 |
| DirectCall print(v11) |
| Goto(B24) |
| B4 = CatchBlock() idom:B0 |
| v38 = Parameter(x) |
| v26 = Parameter(#exception) |
| Parameter(#stackTrace) |
| DirectCall print(v26) |
| DirectCall print(v38) |
| Goto(B24) |
| B24 = JoinBlock(B4, B3) idom:B0 |
| Return(v35) |
| |
| --- tryFinallyWithBreaks |
| B0 = EntryBlock() dominates:(B2, B1) |
| v4 = Constant(10) |
| v6 = Constant(0) |
| Constant(5) |
| Constant(3) |
| Constant(1) |
| Constant(2) |
| v59 = Constant(20) |
| v84 = Constant(42) |
| Constant(true) |
| TryEntry(try-body: B1, catch-block: B2) |
| B1 = TargetBlock() exception-handler:B2 idom:B0 dominates:(B17, B16) |
| DirectCall print(v4) |
| TryEntry(try-body: B16, catch-block: B17) |
| B16 = TargetBlock() exception-handler:B17 idom:B1 dominates:(B30) |
| DirectCall print(v6) |
| Goto(B30) |
| B30 = JoinBlock(B16) exception-handler:B2 idom:B16 |
| DirectCall print(v59) |
| Return(v84) |
| B17 = CatchBlock() exception-handler:B2 idom:B1 |
| v57 = Parameter(#exception) |
| v58 = Parameter(#stackTrace) |
| DirectCall print(v59) |
| Throw(v57, v58) |
| B2 = CatchBlock() idom:B0 |
| Parameter(#exception) |
| Parameter(#stackTrace) |
| Return(v84) |
| |
| --- tryWithThrowRethrow |
| B0 = EntryBlock() dominates:(B4, B17, B3) |
| v6 = Constant(1) |
| v14 = Constant("Boom!") |
| v16 = Constant(null) |
| v26 = Constant(2) |
| v1 = Parameter(c1) |
| v2 = Parameter(c2) |
| TryEntry(try-body: B3, catch-block: B4) |
| B3 = TargetBlock() exception-handler:B4 idom:B0 dominates:(B10, B9) |
| DirectCall print(v6) |
| Branch(v1, true: B9, false: B10) |
| B9 = TargetBlock() exception-handler:B4 idom:B3 |
| Throw(v14) |
| B10 = TargetBlock() exception-handler:B4 idom:B3 |
| Goto(B17) |
| B4 = CatchBlock() idom:B0 dominates:(B24, B23) |
| v19 = Parameter(#exception) |
| v20 = Parameter(#stackTrace) |
| v22 = TypeTest(v19, Error) |
| Branch(v22, true: B23, false: B24) |
| B23 = TargetBlock() idom:B4 dominates:(B30, B29) |
| DirectCall print(v26) |
| Branch(v2, true: B29, false: B30) |
| B29 = TargetBlock() idom:B23 |
| Throw(v19, v20) |
| B30 = TargetBlock() idom:B23 |
| Goto(B17) |
| B17 = JoinBlock(B30, B10) idom:B0 |
| Return(v16) |
| B24 = TargetBlock() idom:B4 |
| Throw(v19, v20) |
| |
| --- main |
| B0 = EntryBlock() |
| v1 = Constant("hey") |
| v3 = Constant(null) |
| DirectCall print(v1) |
| Return(v3) |
| |