| OLD | NEW |
| 1 // Copyright 2007-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2007-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1704 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1715 v8::Handle<Value> ThrowFromC(const v8::Arguments& args) { | 1715 v8::Handle<Value> ThrowFromC(const v8::Arguments& args) { |
| 1716 ApiTestFuzzer::Fuzz(); | 1716 ApiTestFuzzer::Fuzz(); |
| 1717 return v8::ThrowException(v8_str("konto")); | 1717 return v8::ThrowException(v8_str("konto")); |
| 1718 } | 1718 } |
| 1719 | 1719 |
| 1720 | 1720 |
| 1721 v8::Handle<Value> CCatcher(const v8::Arguments& args) { | 1721 v8::Handle<Value> CCatcher(const v8::Arguments& args) { |
| 1722 if (args.Length() < 1) return v8::Boolean::New(false); | 1722 if (args.Length() < 1) return v8::Boolean::New(false); |
| 1723 v8::HandleScope scope; | 1723 v8::HandleScope scope; |
| 1724 v8::TryCatch try_catch; | 1724 v8::TryCatch try_catch; |
| 1725 v8::Script::Compile(args[0]->ToString())->Run(); | 1725 Local<Value> result = v8::Script::Compile(args[0]->ToString())->Run(); |
| 1726 CHECK(!try_catch.HasCaught() || result.IsEmpty()); |
| 1726 return v8::Boolean::New(try_catch.HasCaught()); | 1727 return v8::Boolean::New(try_catch.HasCaught()); |
| 1727 } | 1728 } |
| 1728 | 1729 |
| 1729 | 1730 |
| 1730 THREADED_TEST(APICatch) { | 1731 THREADED_TEST(APICatch) { |
| 1731 v8::HandleScope scope; | 1732 v8::HandleScope scope; |
| 1732 Local<ObjectTemplate> templ = ObjectTemplate::New(); | 1733 Local<ObjectTemplate> templ = ObjectTemplate::New(); |
| 1733 templ->Set(v8_str("ThrowFromC"), | 1734 templ->Set(v8_str("ThrowFromC"), |
| 1734 v8::FunctionTemplate::New(ThrowFromC)); | 1735 v8::FunctionTemplate::New(ThrowFromC)); |
| 1735 LocalContext context(0, templ); | 1736 LocalContext context(0, templ); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1799 TEST(APIThrowMessageAndVerboseTryCatch) { | 1800 TEST(APIThrowMessageAndVerboseTryCatch) { |
| 1800 message_received = false; | 1801 message_received = false; |
| 1801 v8::HandleScope scope; | 1802 v8::HandleScope scope; |
| 1802 v8::V8::AddMessageListener(receive_message); | 1803 v8::V8::AddMessageListener(receive_message); |
| 1803 Local<ObjectTemplate> templ = ObjectTemplate::New(); | 1804 Local<ObjectTemplate> templ = ObjectTemplate::New(); |
| 1804 templ->Set(v8_str("ThrowFromC"), | 1805 templ->Set(v8_str("ThrowFromC"), |
| 1805 v8::FunctionTemplate::New(ThrowFromC)); | 1806 v8::FunctionTemplate::New(ThrowFromC)); |
| 1806 LocalContext context(0, templ); | 1807 LocalContext context(0, templ); |
| 1807 v8::TryCatch try_catch; | 1808 v8::TryCatch try_catch; |
| 1808 try_catch.SetVerbose(true); | 1809 try_catch.SetVerbose(true); |
| 1809 CompileRun("ThrowFromC();"); | 1810 Local<Value> result = CompileRun("ThrowFromC();"); |
| 1810 CHECK(try_catch.HasCaught()); | 1811 CHECK(try_catch.HasCaught()); |
| 1812 CHECK(result.IsEmpty()); |
| 1811 CHECK(message_received); | 1813 CHECK(message_received); |
| 1812 v8::V8::RemoveMessageListeners(check_message); | 1814 v8::V8::RemoveMessageListeners(check_message); |
| 1813 } | 1815 } |
| 1814 | 1816 |
| 1815 | 1817 |
| 1816 THREADED_TEST(ExternalScriptException) { | 1818 THREADED_TEST(ExternalScriptException) { |
| 1817 v8::HandleScope scope; | 1819 v8::HandleScope scope; |
| 1818 Local<ObjectTemplate> templ = ObjectTemplate::New(); | 1820 Local<ObjectTemplate> templ = ObjectTemplate::New(); |
| 1819 templ->Set(v8_str("ThrowFromC"), | 1821 templ->Set(v8_str("ThrowFromC"), |
| 1820 v8::FunctionTemplate::New(ThrowFromC)); | 1822 v8::FunctionTemplate::New(ThrowFromC)); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1846 args[1], | 1848 args[1], |
| 1847 args[2], | 1849 args[2], |
| 1848 args[3] }; | 1850 args[3] }; |
| 1849 if (count % cInterval == 0) { | 1851 if (count % cInterval == 0) { |
| 1850 v8::TryCatch try_catch; | 1852 v8::TryCatch try_catch; |
| 1851 Local<Value> result = | 1853 Local<Value> result = |
| 1852 v8::Handle<Function>::Cast(fun)->Call(global, 4, argv); | 1854 v8::Handle<Function>::Cast(fun)->Call(global, 4, argv); |
| 1853 int expected = args[3]->Int32Value(); | 1855 int expected = args[3]->Int32Value(); |
| 1854 if (try_catch.HasCaught()) { | 1856 if (try_catch.HasCaught()) { |
| 1855 CHECK_EQ(expected, count); | 1857 CHECK_EQ(expected, count); |
| 1858 CHECK(result.IsEmpty()); |
| 1856 CHECK(!i::Top::has_scheduled_exception()); | 1859 CHECK(!i::Top::has_scheduled_exception()); |
| 1857 } else { | 1860 } else { |
| 1858 CHECK_NE(expected, count); | 1861 CHECK_NE(expected, count); |
| 1859 } | 1862 } |
| 1860 return result; | 1863 return result; |
| 1861 } else { | 1864 } else { |
| 1862 return v8::Handle<Function>::Cast(fun)->Call(global, 4, argv); | 1865 return v8::Handle<Function>::Cast(fun)->Call(global, 4, argv); |
| 1863 } | 1866 } |
| 1864 } | 1867 } |
| 1865 } | 1868 } |
| (...skipping 3926 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5792 | 5795 |
| 5793 // Local context should still be live. | 5796 // Local context should still be live. |
| 5794 CHECK(!local_env.IsEmpty()); | 5797 CHECK(!local_env.IsEmpty()); |
| 5795 local_env->Enter(); | 5798 local_env->Enter(); |
| 5796 | 5799 |
| 5797 // Should complete without problems. | 5800 // Should complete without problems. |
| 5798 RegExpInterruptTest().RunTest(); | 5801 RegExpInterruptTest().RunTest(); |
| 5799 | 5802 |
| 5800 local_env->Exit(); | 5803 local_env->Exit(); |
| 5801 } | 5804 } |
| OLD | NEW |