| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 |
| 2 // Redistribution and use in source and binary forms, with or without | 3 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 4 // modification, are permitted provided that the following conditions are |
| 4 // met: | 5 // met: |
| 5 // | 6 // |
| 6 // * Redistributions of source code must retain the above copyright | 7 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 8 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 9 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 10 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 11 // disclaimer in the documentation and/or other materials provided |
| 11 // with the distribution. | 12 // with the distribution. |
| (...skipping 10758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10770 | 10771 |
| 10771 TEST(DontLeakGlobalObjects) { | 10772 TEST(DontLeakGlobalObjects) { |
| 10772 // Regression test for issues 1139850 and 1174891. | 10773 // Regression test for issues 1139850 and 1174891. |
| 10773 | 10774 |
| 10774 v8::V8::Initialize(); | 10775 v8::V8::Initialize(); |
| 10775 | 10776 |
| 10776 for (int i = 0; i < 5; i++) { | 10777 for (int i = 0; i < 5; i++) { |
| 10777 { v8::HandleScope scope; | 10778 { v8::HandleScope scope; |
| 10778 LocalContext context; | 10779 LocalContext context; |
| 10779 } | 10780 } |
| 10781 // Fire context disposed notification to force clearing monomorphic ICs. |
| 10782 v8::V8::ContextDisposedNotification(); |
| 10780 CheckSurvivingGlobalObjectsCount(0); | 10783 CheckSurvivingGlobalObjectsCount(0); |
| 10781 | 10784 |
| 10782 { v8::HandleScope scope; | 10785 { v8::HandleScope scope; |
| 10783 LocalContext context; | 10786 LocalContext context; |
| 10784 v8_compile("Date")->Run(); | 10787 v8_compile("Date")->Run(); |
| 10785 } | 10788 } |
| 10789 // Fire context disposed notification to force clearing monomorphic ICs. |
| 10790 v8::V8::ContextDisposedNotification(); |
| 10786 CheckSurvivingGlobalObjectsCount(0); | 10791 CheckSurvivingGlobalObjectsCount(0); |
| 10787 | 10792 |
| 10788 { v8::HandleScope scope; | 10793 { v8::HandleScope scope; |
| 10789 LocalContext context; | 10794 LocalContext context; |
| 10790 v8_compile("/aaa/")->Run(); | 10795 v8_compile("/aaa/")->Run(); |
| 10791 } | 10796 } |
| 10797 // Fire context disposed notification to force clearing monomorphic ICs. |
| 10798 v8::V8::ContextDisposedNotification(); |
| 10792 CheckSurvivingGlobalObjectsCount(0); | 10799 CheckSurvivingGlobalObjectsCount(0); |
| 10793 | 10800 |
| 10794 { v8::HandleScope scope; | 10801 { v8::HandleScope scope; |
| 10795 const char* extension_list[] = { "v8/gc" }; | 10802 const char* extension_list[] = { "v8/gc" }; |
| 10796 v8::ExtensionConfiguration extensions(1, extension_list); | 10803 v8::ExtensionConfiguration extensions(1, extension_list); |
| 10797 LocalContext context(&extensions); | 10804 LocalContext context(&extensions); |
| 10798 v8_compile("gc();")->Run(); | 10805 v8_compile("gc();")->Run(); |
| 10799 } | 10806 } |
| 10807 // Fire context disposed notification to force clearing monomorphic ICs. |
| 10808 v8::V8::ContextDisposedNotification(); |
| 10800 CheckSurvivingGlobalObjectsCount(0); | 10809 CheckSurvivingGlobalObjectsCount(0); |
| 10801 } | 10810 } |
| 10802 } | 10811 } |
| 10803 | 10812 |
| 10804 | 10813 |
| 10805 v8::Persistent<v8::Object> some_object; | 10814 v8::Persistent<v8::Object> some_object; |
| 10806 v8::Persistent<v8::Object> bad_handle; | 10815 v8::Persistent<v8::Object> bad_handle; |
| 10807 | 10816 |
| 10808 void NewPersistentHandleCallback(v8::Persistent<v8::Value> handle, void*) { | 10817 void NewPersistentHandleCallback(v8::Persistent<v8::Value> handle, void*) { |
| 10809 v8::HandleScope scope; | 10818 v8::HandleScope scope; |
| (...skipping 3809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 14619 context->Enter(); | 14628 context->Enter(); |
| 14620 v8::TryCatch try_catch; | 14629 v8::TryCatch try_catch; |
| 14621 CompileRun(source_exception); | 14630 CompileRun(source_exception); |
| 14622 CHECK(try_catch.HasCaught()); | 14631 CHECK(try_catch.HasCaught()); |
| 14623 v8::Handle<v8::Message> message = try_catch.Message(); | 14632 v8::Handle<v8::Message> message = try_catch.Message(); |
| 14624 CHECK(!message.IsEmpty()); | 14633 CHECK(!message.IsEmpty()); |
| 14625 CHECK_EQ(1, message->GetLineNumber()); | 14634 CHECK_EQ(1, message->GetLineNumber()); |
| 14626 context->Exit(); | 14635 context->Exit(); |
| 14627 } | 14636 } |
| 14628 context.Dispose(); | 14637 context.Dispose(); |
| 14638 v8::V8::ContextDisposedNotification(); |
| 14629 for (gc_count = 1; gc_count < 10; gc_count++) { | 14639 for (gc_count = 1; gc_count < 10; gc_count++) { |
| 14630 other_context->Enter(); | 14640 other_context->Enter(); |
| 14631 CompileRun(source_exception); | 14641 CompileRun(source_exception); |
| 14632 other_context->Exit(); | 14642 other_context->Exit(); |
| 14633 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); | 14643 HEAP->CollectAllGarbage(i::Heap::kNoGCFlags); |
| 14634 if (GetGlobalObjectsCount() == 1) break; | 14644 if (GetGlobalObjectsCount() == 1) break; |
| 14635 } | 14645 } |
| 14636 CHECK_GE(2, gc_count); | 14646 CHECK_GE(2, gc_count); |
| 14637 CHECK_EQ(1, GetGlobalObjectsCount()); | 14647 CHECK_EQ(1, GetGlobalObjectsCount()); |
| 14638 | 14648 |
| (...skipping 2469 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 17108 v8::HandleScope scope; | 17118 v8::HandleScope scope; |
| 17109 LocalContext context; | 17119 LocalContext context; |
| 17110 | 17120 |
| 17111 // Compile a try-finally clause where the finally block causes a GC | 17121 // Compile a try-finally clause where the finally block causes a GC |
| 17112 // while there still is a message pending for external reporting. | 17122 // while there still is a message pending for external reporting. |
| 17113 TryCatch try_catch; | 17123 TryCatch try_catch; |
| 17114 try_catch.SetVerbose(true); | 17124 try_catch.SetVerbose(true); |
| 17115 CompileRun("try { throw new Error(); } finally { gc(); }"); | 17125 CompileRun("try { throw new Error(); } finally { gc(); }"); |
| 17116 CHECK(try_catch.HasCaught()); | 17126 CHECK(try_catch.HasCaught()); |
| 17117 } | 17127 } |
| OLD | NEW |