--- 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) @@ -390,5 +386,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] @@ -416,4 +412,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: @@ -429,5 +434,2 @@ 101 SCOPE_ENTER value x4 - 101 JUMP 4 - - 4: 106 LOAD_LOCAL(value x4) @@ -441,8 +443,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) @@ -518,3 +517,3 @@ startBlock: 1 - blocks: [1,2,3,4,6,7,9,10] + blocks: [1,3,4,6,7,9,10,11,12,13] @@ -547,4 +546,9 @@ 306 CALL_METHOD MyException. (static-instance) - 306 THROW(MyException) + ? JUMP 11 + 11: + ? LOAD_LOCAL(variable monitor4) + 305 MONITOR_EXIT + ? JUMP 12 + 9: @@ -553,3 +557,3 @@ 305 MONITOR_EXIT - ? THROW(Throwable) + ? JUMP 12 @@ -559,4 +563,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: @@ -573,5 +584,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) @@ -583,6 +603,6 @@ with finalizer: null - catch (Throwable) in ArrayBuffer(7, 9, 10) starting at: 6 + catch (Throwable) in ArrayBuffer(7, 9, 10, 11) starting at: 6 consisting of blocks: List(6) with finalizer: null - catch (Throwable) in ArrayBuffer(4, 6, 7, 9, 10) starting at: 3 + catch (Throwable) in ArrayBuffer(4, 6, 7, 9, 10, 11, 12) starting at: 3 consisting of blocks: List(3) @@ -618,3 +638,3 @@ startBlock: 1 - blocks: [1,3,4,5,6,8,9] + blocks: [1,3,4,5,6,8,9,10,11] @@ -642,4 +662,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: @@ -668,3 +694,4 @@ 81 LOAD_LOCAL(value e) - 81 THROW(Exception) + ? STORE_LOCAL(variable exc1) + ? JUMP 11 @@ -685,2 +712,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) + } @@ -690,3 +730,3 @@ with finalizer: null - catch () in ArrayBuffer(4, 5, 6, 8) starting at: 3 + catch () in ArrayBuffer(4, 5, 6, 8, 10) starting at: 3 consisting of blocks: List(3) @@ -714,5 +754,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] @@ -740,4 +780,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: @@ -780,8 +827,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) @@ -789,5 +833,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 @@ -795,3 +841,4 @@ 170 LOAD_LOCAL(value ex6) - 170 THROW(Throwable) + ? STORE_LOCAL(value ex6) + ? JUMP 26 @@ -805,2 +852,8 @@ + 26: + 169 LOAD_LOCAL(value ex6) + 169 STORE_LOCAL(value x4) + 169 SCOPE_ENTER value x4 + 169 JUMP 5 + 5: @@ -815,8 +868,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) @@ -824,5 +874,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 @@ -830,3 +882,4 @@ 169 LOAD_LOCAL(value ex6) - 169 THROW(Throwable) + ? STORE_LOCAL(variable exc2) + ? JUMP 27 @@ -847,2 +900,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) + } @@ -852,6 +918,6 @@ with finalizer: null - catch (Throwable) in ArrayBuffer(13, 14, 15, 18, 20, 21, 23) starting at: 4 + catch (Throwable) in ArrayBuffer(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 ArrayBuffer(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23) starting at: 3 + catch () in ArrayBuffer(4, 5, 6, 9, 13, 14, 15, 18, 20, 21, 23, 25, 26) starting at: 3 consisting of blocks: List(3) @@ -879,5 +945,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] @@ -905,4 +971,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: @@ -930,8 +1003,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) @@ -964,3 +1034,3 @@ with finalizer: null - catch (IllegalArgumentException) in ArrayBuffer(6, 7, 8, 11, 13, 14, 16) starting at: 3 + catch (IllegalArgumentException) in ArrayBuffer(6, 7, 8, 11, 13, 14, 16, 17) starting at: 3 consisting of blocks: List(3) @@ -988,5 +1058,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] @@ -1014,4 +1084,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: @@ -1035,5 +1114,2 @@ 145 SCOPE_ENTER value x4 - 145 JUMP 4 - - 4: 154 LOAD_LOCAL(value x4) @@ -1047,8 +1123,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) @@ -1269,3 +1342,3 @@ startBlock: 1 - blocks: [1,2,3,4,5,7] + blocks: [1,2,3,4,5,7,8] @@ -1293,4 +1366,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: @@ -1340,5 +1420,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] @@ -1366,3 +1446,4 @@ 203 CALL_METHOD MyException. (static-instance) - 203 THROW(MyException) + ? STORE_LOCAL(value ex6) + ? JUMP 17 @@ -1386,4 +1467,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: @@ -1399,5 +1489,2 @@ 200 SCOPE_ENTER value x4 - 200 JUMP 4 - - 4: 212 LOAD_LOCAL(value x4) @@ -1411,8 +1498,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) @@ -1460,3 +1544,3 @@ startBlock: 1 - blocks: [1,2,3,4,5,7] + blocks: [1,2,3,4,5,7,8] @@ -1484,4 +1568,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: @@ -1533,3 +1624,3 @@ startBlock: 1 - blocks: [1,3,4] + blocks: [1,3,4,5] @@ -1553,4 +1644,9 @@ 229 CALL_METHOD MyException. (static-instance) - 229 THROW(MyException) + ? JUMP 5 + 5: + ? LOAD_LOCAL(variable monitor1) + 228 MONITOR_EXIT + 228 THROW(Throwable) + 3: @@ -1559,3 +1655,3 @@ 228 MONITOR_EXIT - ? THROW(Throwable) + 228 THROW(Throwable) @@ -1587,5 +1683,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] @@ -1612,4 +1708,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: @@ -1618,3 +1722,3 @@ 244 MONITOR_EXIT - ? THROW(Throwable) + 244 THROW(Throwable)