--- a +++ b @@ -171,5 +171,5 @@ def productElement(x$1: Int (INT)): Object { - locals: value x$1, value x1 + locals: value x$1, value x1, variable boxed1 startBlock: 1 - blocks: [1,2,3,4] + blocks: [1,3,4] @@ -186,2 +186,4 @@ 92 LOAD_LOCAL(value x$1) + 92 STORE_LOCAL(variable boxed1) + 92 LOAD_LOCAL(variable boxed1) 92 BOX INT @@ -194,5 +196,2 @@ 92 CALL_METHOD MyException.message (dynamic) - 92 JUMP 2 - - 2: 92 RETURN(REF(class Object)) @@ -246,3 +245,3 @@ startBlock: 1 - blocks: [1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18] + blocks: [1,2,3,4,5,6,8,11,12,13,14,15,16,17,18] @@ -257,5 +256,2 @@ 92 SCOPE_ENTER value x1 - 92 JUMP 7 - - 7: 92 LOAD_LOCAL(value x1) @@ -408,5 +404,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, value ex6, value x4, value x5, value message, value x + locals: value args, variable result, value ex6, value x4, value x5, value x startBlock: 1 - blocks: [1,2,3,4,5,8,10,11,13] + blocks: [1,2,3,5,8,10,11,13,14] @@ -434,4 +430,13 @@ 103 CALL_METHOD MyException. (static-instance) - 103 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 14 + 14: + 101 LOAD_LOCAL(value ex6) + 101 STORE_LOCAL(value x4) + 101 SCOPE_ENTER value x4 + 106 LOAD_LOCAL(value x4) + 106 IS_INSTANCE REF(class MyException) + 106 CZJUMP (BOOL)NE ? 5 : 8 + 13: @@ -447,5 +452,2 @@ 101 SCOPE_ENTER value x4 - 101 JUMP 4 - - 4: 106 LOAD_LOCAL(value x4) @@ -459,8 +461,5 @@ 106 SCOPE_ENTER value x5 - 106 LOAD_LOCAL(value x5) - 106 CALL_METHOD MyException.message (dynamic) - 106 STORE_LOCAL(value message) - 106 SCOPE_ENTER value message 106 LOAD_MODULE object Predef - 106 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 106 CALL_METHOD MyException.message (dynamic) 106 CALL_METHOD scala.Predef.println (dynamic) @@ -536,3 +535,3 @@ startBlock: 1 - blocks: [1,2,3,4,6,7,9,10] + blocks: [1,3,4,6,7,9,10,11,12,13] @@ -565,4 +564,9 @@ 306 CALL_METHOD MyException. (static-instance) - 306 THROW(MyException) + ? JUMP 11 + 11: + ? LOAD_LOCAL(variable monitor4) + 305 MONITOR_EXIT + ? JUMP 12 + 9: @@ -571,3 +575,3 @@ 305 MONITOR_EXIT - ? THROW(Throwable) + ? JUMP 12 @@ -577,4 +581,11 @@ 304 MONITOR_EXIT - ? THROW(Throwable) + ? STORE_LOCAL(value t) + ? JUMP 13 + 12: + ? LOAD_LOCAL(variable monitor3) + 304 MONITOR_EXIT + ? STORE_LOCAL(value t) + ? JUMP 13 + 3: @@ -591,5 +602,14 @@ 310 CALL_METHOD scala.Predef.println (dynamic) - 310 JUMP 2 + 300 RETURN(UNIT) - 2: + 13: + 310 LOAD_MODULE object Predef + 310 CALL_PRIMITIVE(StartConcat) + 310 CONSTANT("Caught crash: ") + 310 CALL_PRIMITIVE(StringConcat(REF(class String))) + 310 LOAD_LOCAL(value t) + 310 CALL_METHOD java.lang.Throwable.toString (dynamic) + 310 CALL_PRIMITIVE(StringConcat(REF(class String))) + 310 CALL_PRIMITIVE(EndConcat) + 310 CALL_METHOD scala.Predef.println (dynamic) 300 RETURN(UNIT) @@ -601,6 +621,6 @@ with finalizer: null - catch (Throwable) in Vector(7, 9, 10) starting at: 6 + catch (Throwable) in Vector(7, 9, 10, 11) starting at: 6 consisting of blocks: List(6) with finalizer: null - catch (Throwable) in Vector(4, 6, 7, 9, 10) starting at: 3 + catch (Throwable) in Vector(4, 6, 7, 9, 10, 11, 12) starting at: 3 consisting of blocks: List(3) @@ -636,3 +656,3 @@ startBlock: 1 - blocks: [1,3,4,5,6,8,9] + blocks: [1,3,4,5,6,8,9,10,11] @@ -660,4 +680,10 @@ 78 CALL_METHOD java.lang.IllegalArgumentException. (static-instance) - 78 THROW(IllegalArgumentException) + ? STORE_LOCAL(value e) + ? JUMP 10 + 10: + 81 LOAD_LOCAL(value e) + ? STORE_LOCAL(variable exc1) + ? JUMP 11 + 8: @@ -686,3 +712,4 @@ 81 LOAD_LOCAL(value e) - 81 THROW(Exception) + ? STORE_LOCAL(variable exc1) + ? JUMP 11 @@ -703,2 +730,15 @@ + 11: + 83 LOAD_MODULE object Predef + 83 CONSTANT("finally") + 83 CALL_METHOD scala.Predef.println (dynamic) + 84 LOAD_LOCAL(variable result) + 84 CONSTANT(1) + 84 CALL_PRIMITIVE(Arithmetic(SUB,INT)) + 84 CONSTANT(2) + 84 CALL_PRIMITIVE(Arithmetic(DIV,INT)) + 84 STORE_LOCAL(variable result) + 84 LOAD_LOCAL(variable exc1) + 84 THROW(Throwable) + } @@ -708,3 +748,3 @@ with finalizer: null - catch () in Vector(4, 5, 6, 8) starting at: 3 + catch () in Vector(4, 5, 6, 8, 10) starting at: 3 consisting of blocks: List(3) @@ -732,5 +772,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, value ex6, variable exc2, value x4, value x5, value message, value x, value ex6, value x4, value x5, value message, value x + locals: value args, variable result, value ex6, variable exc2, value x4, value x5, value x, value ex6, value x4, value x5, value x startBlock: 1 - blocks: [1,3,4,5,6,9,13,14,15,18,20,21,23,24] + blocks: [1,3,4,5,6,9,13,14,15,18,20,21,23,24,25,26,27] @@ -758,4 +798,11 @@ 172 CALL_METHOD MyException. (static-instance) - 172 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 25 + 25: + 170 LOAD_LOCAL(value ex6) + 170 STORE_LOCAL(value x4) + 170 SCOPE_ENTER value x4 + 170 JUMP 14 + 23: @@ -798,8 +845,5 @@ 175 SCOPE_ENTER value x5 - 175 LOAD_LOCAL(value x5) - 175 CALL_METHOD MyException.message (dynamic) - 175 STORE_LOCAL(value message) - 175 SCOPE_ENTER value message 176 LOAD_MODULE object Predef - 176 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 176 CALL_METHOD MyException.message (dynamic) 176 CALL_METHOD scala.Predef.println (dynamic) @@ -807,5 +851,7 @@ 177 DUP(REF(class MyException)) - 177 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 177 CALL_METHOD MyException.message (dynamic) 177 CALL_METHOD MyException. (static-instance) - 177 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 26 @@ -813,3 +859,4 @@ 170 LOAD_LOCAL(value ex6) - 170 THROW(Throwable) + ? STORE_LOCAL(value ex6) + ? JUMP 26 @@ -823,2 +870,8 @@ + 26: + 169 LOAD_LOCAL(value ex6) + 169 STORE_LOCAL(value x4) + 169 SCOPE_ENTER value x4 + 169 JUMP 5 + 5: @@ -833,8 +886,5 @@ 180 SCOPE_ENTER value x5 - 180 LOAD_LOCAL(value x5) - 180 CALL_METHOD MyException.message (dynamic) - 180 STORE_LOCAL(value message) - 180 SCOPE_ENTER value message 181 LOAD_MODULE object Predef - 181 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 181 CALL_METHOD MyException.message (dynamic) 181 CALL_METHOD scala.Predef.println (dynamic) @@ -842,5 +892,7 @@ 182 DUP(REF(class MyException)) - 182 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 182 CALL_METHOD MyException.message (dynamic) 182 CALL_METHOD MyException. (static-instance) - 182 THROW(MyException) + ? STORE_LOCAL(variable exc2) + ? JUMP 27 @@ -848,3 +900,4 @@ 169 LOAD_LOCAL(value ex6) - 169 THROW(Throwable) + ? STORE_LOCAL(variable exc2) + ? JUMP 27 @@ -865,2 +918,15 @@ + 27: + 184 LOAD_MODULE object Predef + 184 CONSTANT("finally") + 184 CALL_METHOD scala.Predef.println (dynamic) + 185 LOAD_LOCAL(variable result) + 185 CONSTANT(1) + 185 CALL_PRIMITIVE(Arithmetic(SUB,INT)) + 185 CONSTANT(2) + 185 CALL_PRIMITIVE(Arithmetic(DIV,INT)) + 185 STORE_LOCAL(variable result) + 185 LOAD_LOCAL(variable exc2) + 185 THROW(Throwable) + } @@ -870,6 +936,6 @@ with finalizer: null - catch (Throwable) in Vector(13, 14, 15, 18, 20, 21, 23) starting at: 4 + catch (Throwable) in Vector(13, 14, 15, 18, 20, 21, 23, 25) starting at: 4 consisting of blocks: List(9, 8, 6, 5, 4) with finalizer: null - catch () in Vector(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23) starting at: 3 + catch () in Vector(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23, 25, 26) starting at: 3 consisting of blocks: List(3) @@ -897,5 +963,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, value e, value ex6, value x4, value x5, value message, value x + locals: value args, variable result, value e, value ex6, value x4, value x5, value x startBlock: 1 - blocks: [1,2,3,6,7,8,11,13,14,16] + blocks: [1,2,3,6,7,8,11,13,14,16,17] @@ -923,4 +989,11 @@ 124 CALL_METHOD MyException. (static-instance) - 124 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 17 + 17: + 122 LOAD_LOCAL(value ex6) + 122 STORE_LOCAL(value x4) + 122 SCOPE_ENTER value x4 + 122 JUMP 7 + 16: @@ -948,8 +1021,5 @@ 127 SCOPE_ENTER value x5 - 127 LOAD_LOCAL(value x5) - 127 CALL_METHOD MyException.message (dynamic) - 127 STORE_LOCAL(value message) - 127 SCOPE_ENTER value message 127 LOAD_MODULE object Predef - 127 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 127 CALL_METHOD MyException.message (dynamic) 127 CALL_METHOD scala.Predef.println (dynamic) @@ -982,3 +1052,3 @@ with finalizer: null - catch (IllegalArgumentException) in Vector(6, 7, 8, 11, 13, 14, 16) starting at: 3 + catch (IllegalArgumentException) in Vector(6, 7, 8, 11, 13, 14, 16, 17) starting at: 3 consisting of blocks: List(3) @@ -1006,5 +1076,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, value ex6, value x4, value x5, value message, value x, value e + locals: value args, variable result, value ex6, value x4, value x5, value x, value e startBlock: 1 - blocks: [1,2,3,4,5,8,12,13,14,16] + blocks: [1,2,3,5,8,12,13,14,16,17] @@ -1032,4 +1102,13 @@ 148 CALL_METHOD MyException. (static-instance) - 148 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 17 + 17: + 145 LOAD_LOCAL(value ex6) + 145 STORE_LOCAL(value x4) + 145 SCOPE_ENTER value x4 + 154 LOAD_LOCAL(value x4) + 154 IS_INSTANCE REF(class MyException) + 154 CZJUMP (BOOL)NE ? 5 : 8 + 16: @@ -1053,5 +1132,2 @@ 145 SCOPE_ENTER value x4 - 145 JUMP 4 - - 4: 154 LOAD_LOCAL(value x4) @@ -1065,8 +1141,5 @@ 154 SCOPE_ENTER value x5 - 154 LOAD_LOCAL(value x5) - 154 CALL_METHOD MyException.message (dynamic) - 154 STORE_LOCAL(value message) - 154 SCOPE_ENTER value message 154 LOAD_MODULE object Predef - 154 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 154 CALL_METHOD MyException.message (dynamic) 154 CALL_METHOD scala.Predef.println (dynamic) @@ -1287,3 +1360,3 @@ startBlock: 1 - blocks: [1,2,3,4,5,7] + blocks: [1,2,3,4,5,7,8] @@ -1311,4 +1384,11 @@ 38 CALL_METHOD java.lang.IllegalArgumentException. (static-instance) - 38 THROW(IllegalArgumentException) + ? STORE_LOCAL(value e) + ? JUMP 8 + 8: + 42 LOAD_MODULE object Predef + 42 CONSTANT("IllegalArgumentException") + 42 CALL_METHOD scala.Predef.println (dynamic) + 42 JUMP 2 + 7: @@ -1358,5 +1438,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, value ex6, value x4, value x5, value message, value x + locals: value args, variable result, value ex6, value x4, value x5, value x startBlock: 1 - blocks: [1,2,3,4,5,8,10,11,13,14,16] + blocks: [1,2,3,5,8,10,11,13,14,16,17] @@ -1384,3 +1464,4 @@ 203 CALL_METHOD MyException. (static-instance) - 203 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 17 @@ -1404,4 +1485,13 @@ 209 CALL_METHOD MyException. (static-instance) - 209 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 17 + 17: + 200 LOAD_LOCAL(value ex6) + 200 STORE_LOCAL(value x4) + 200 SCOPE_ENTER value x4 + 212 LOAD_LOCAL(value x4) + 212 IS_INSTANCE REF(class MyException) + 212 CZJUMP (BOOL)NE ? 5 : 8 + 16: @@ -1417,5 +1507,2 @@ 200 SCOPE_ENTER value x4 - 200 JUMP 4 - - 4: 212 LOAD_LOCAL(value x4) @@ -1429,8 +1516,5 @@ 212 SCOPE_ENTER value x5 - 212 LOAD_LOCAL(value x5) - 212 CALL_METHOD MyException.message (dynamic) - 212 STORE_LOCAL(value message) - 212 SCOPE_ENTER value message 213 LOAD_MODULE object Predef - 213 LOAD_LOCAL(value message) + ? LOAD_LOCAL(value x5) + 213 CALL_METHOD MyException.message (dynamic) 213 CALL_METHOD scala.Predef.println (dynamic) @@ -1478,3 +1562,3 @@ startBlock: 1 - blocks: [1,2,3,4,5,7] + blocks: [1,2,3,4,5,7,8] @@ -1502,4 +1586,11 @@ 58 CALL_METHOD java.lang.IllegalArgumentException. (static-instance) - 58 THROW(IllegalArgumentException) + ? STORE_LOCAL(value e) + ? JUMP 8 + 8: + 62 LOAD_MODULE object Predef + 62 CONSTANT("RuntimeException") + 62 CALL_METHOD scala.Predef.println (dynamic) + 62 JUMP 2 + 7: @@ -1551,3 +1642,3 @@ startBlock: 1 - blocks: [1,3,4] + blocks: [1,3,4,5] @@ -1571,4 +1662,9 @@ 229 CALL_METHOD MyException. (static-instance) - 229 THROW(MyException) + ? JUMP 5 + 5: + ? LOAD_LOCAL(variable monitor1) + 228 MONITOR_EXIT + 228 THROW(Throwable) + 3: @@ -1577,3 +1673,3 @@ 228 MONITOR_EXIT - ? THROW(Throwable) + 228 THROW(Throwable) @@ -1605,5 +1701,5 @@ def main(args: Array[String] (ARRAY[REF(class String)])): Unit { - locals: value args, variable result, variable monitor2, variable monitorResult1 + locals: value exception$1, value args, variable result, variable monitor2, variable monitorResult1 startBlock: 1 - blocks: [1,3,4] + blocks: [1,3,4,5] @@ -1630,4 +1726,12 @@ 245 CALL_METHOD MyException. (static-instance) - 245 THROW(MyException) + ? STORE_LOCAL(value exception$1) + ? DROP ConcatClass + ? LOAD_LOCAL(value exception$1) + ? JUMP 5 + 5: + ? LOAD_LOCAL(variable monitor2) + 244 MONITOR_EXIT + 244 THROW(Throwable) + 3: @@ -1636,3 +1740,3 @@ 244 MONITOR_EXIT - ? THROW(Throwable) + 244 THROW(Throwable)