Chromium Code Reviews| Index: test/cctest/compiler/test-run-jsexceptions.cc |
| diff --git a/test/cctest/compiler/test-run-jsexceptions.cc b/test/cctest/compiler/test-run-jsexceptions.cc |
| index 0712ab62057d742eef946eb74b3c4cc0a6e5e0ab..26aaa44ff42b21f5079e15f5e536128881ccf8d5 100644 |
| --- a/test/cctest/compiler/test-run-jsexceptions.cc |
| +++ b/test/cctest/compiler/test-run-jsexceptions.cc |
| @@ -43,3 +43,113 @@ TEST(ThrowSourcePosition) { |
| CHECK_EQ(4, message->GetLineNumber()); |
| CHECK_EQ(95, message->GetStartPosition()); |
| } |
| + |
| + |
| +TEST(Catch) { |
|
titzer
2015/02/02 09:47:29
+ 1
Good to have cctests for TurboFan, yay. Can w
Michael Starzinger
2015/02/02 14:47:41
The cases covered by these cases are already cover
|
| + i::FLAG_turbo_exceptions = true; |
| + const char* src = |
| + "(function(a,b) {" |
| + " var r = '-';" |
| + " try {" |
| + " r += 'A-';" |
| + " throw 'B-';" |
| + " } catch (e) {" |
| + " r += e;" |
| + " }" |
| + " return r;" |
| + "})"; |
| + FunctionTester T(src); |
| + |
| + T.CheckCall(T.Val("-A-B-")); |
| +} |
| + |
| + |
| +TEST(CatchNested) { |
| + i::FLAG_turbo_exceptions = true; |
| + const char* src = |
| + "(function(a,b) {" |
| + " var r = '-';" |
| + " try {" |
| + " r += 'A-';" |
| + " throw 'C-';" |
| + " } catch (e) {" |
| + " try {" |
| + " throw 'B-';" |
| + " } catch (e) {" |
| + " r += e;" |
| + " }" |
| + " r += e;" |
| + " }" |
| + " return r;" |
| + "})"; |
| + FunctionTester T(src); |
| + |
| + T.CheckCall(T.Val("-A-B-C-")); |
| +} |
| + |
| + |
| +TEST(CatchBreak) { |
| + i::FLAG_turbo_exceptions = true; |
| + const char* src = |
| + "(function(a,b) {" |
| + " var r = '-';" |
| + " L: try {" |
| + " r += 'A-';" |
| + " if (a) break L;" |
| + " r += 'B-';" |
| + " throw 'C-';" |
| + " } catch (e) {" |
| + " if (b) break L;" |
| + " r += e;" |
| + " }" |
| + " r += 'D-';" |
| + " return r;" |
| + "})"; |
| + FunctionTester T(src); |
| + |
| + T.CheckCall(T.Val("-A-D-"), T.true_value(), T.false_value()); |
| + T.CheckCall(T.Val("-A-B-D-"), T.false_value(), T.true_value()); |
| + T.CheckCall(T.Val("-A-B-C-D-"), T.false_value(), T.false_value()); |
| +} |
| + |
| + |
| +TEST(Finally) { |
| + i::FLAG_turbo_exceptions = true; |
| + const char* src = |
| + "(function(a,b) {" |
| + " var r = '-';" |
| + " try {" |
| + " r += 'A-';" |
| + " } finally {" |
| + " r += 'B-';" |
| + " }" |
| + " return r;" |
| + "})"; |
| + FunctionTester T(src); |
| + |
| + T.CheckCall(T.Val("-A-B-")); |
| +} |
| + |
| + |
| +TEST(FinallyBreak) { |
| + i::FLAG_turbo_exceptions = true; |
| + const char* src = |
| + "(function(a,b) {" |
| + " var r = '-';" |
| + " L: try {" |
| + " r += 'A-';" |
| + " if (a) return r;" |
| + " r += 'B-';" |
| + " if (b) break L;" |
| + " r += 'C-';" |
| + " } finally {" |
| + " r += 'D-';" |
| + " }" |
| + " return r;" |
| + "})"; |
| + FunctionTester T(src); |
| + |
| + T.CheckCall(T.Val("-A-"), T.true_value(), T.false_value()); |
| + T.CheckCall(T.Val("-A-B-D-"), T.false_value(), T.true_value()); |
| + T.CheckCall(T.Val("-A-B-C-D-"), T.false_value(), T.false_value()); |
| +} |