Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(975)

Side by Side Diff: test/cctest/heap/test-heap.cc

Issue 2910933002: [heap] Disable concurrent marking for cctests that rely on manual GC. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/cctest/heap/test-compaction.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 724 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 735
736 CHECK(WeakPointerCleared); 736 CHECK(WeakPointerCleared);
737 } 737 }
738 738
739 TEST(BytecodeArray) { 739 TEST(BytecodeArray) {
740 static const uint8_t kRawBytes[] = {0xc3, 0x7e, 0xa5, 0x5a}; 740 static const uint8_t kRawBytes[] = {0xc3, 0x7e, 0xa5, 0x5a};
741 static const int kRawBytesSize = sizeof(kRawBytes); 741 static const int kRawBytesSize = sizeof(kRawBytes);
742 static const int kFrameSize = 32; 742 static const int kFrameSize = 32;
743 static const int kParameterCount = 2; 743 static const int kParameterCount = 2;
744 744
745 FLAG_concurrent_marking = false;
745 FLAG_manual_evacuation_candidates_selection = true; 746 FLAG_manual_evacuation_candidates_selection = true;
746 FLAG_stress_incremental_marking = false; 747 FLAG_stress_incremental_marking = false;
747 CcTest::InitializeVM(); 748 CcTest::InitializeVM();
748 Isolate* isolate = CcTest::i_isolate(); 749 Isolate* isolate = CcTest::i_isolate();
749 Heap* heap = isolate->heap(); 750 Heap* heap = isolate->heap();
750 Factory* factory = isolate->factory(); 751 Factory* factory = isolate->factory();
751 HandleScope scope(isolate); 752 HandleScope scope(isolate);
752 753
753 heap::SimulateFullSpace(heap->old_space()); 754 heap::SimulateFullSpace(heap->old_space());
754 Handle<FixedArray> constant_pool = factory->NewFixedArray(5, TENURED); 755 Handle<FixedArray> constant_pool = factory->NewFixedArray(5, TENURED);
(...skipping 2395 matching lines...) Expand 10 before | Expand all | Expand 10 after
3150 TEST(ReleaseOverReservedPages) { 3151 TEST(ReleaseOverReservedPages) {
3151 if (FLAG_never_compact) return; 3152 if (FLAG_never_compact) return;
3152 FLAG_trace_gc = true; 3153 FLAG_trace_gc = true;
3153 // The optimizer can allocate stuff, messing up the test. 3154 // The optimizer can allocate stuff, messing up the test.
3154 FLAG_opt = false; 3155 FLAG_opt = false;
3155 FLAG_always_opt = false; 3156 FLAG_always_opt = false;
3156 // Parallel compaction increases fragmentation, depending on how existing 3157 // Parallel compaction increases fragmentation, depending on how existing
3157 // memory is distributed. Since this is non-deterministic because of 3158 // memory is distributed. Since this is non-deterministic because of
3158 // concurrent sweeping, we disable it for this test. 3159 // concurrent sweeping, we disable it for this test.
3159 FLAG_parallel_compaction = false; 3160 FLAG_parallel_compaction = false;
3161 FLAG_concurrent_marking = false;
3160 // Concurrent sweeping adds non determinism, depending on when memory is 3162 // Concurrent sweeping adds non determinism, depending on when memory is
3161 // available for further reuse. 3163 // available for further reuse.
3162 FLAG_concurrent_sweeping = false; 3164 FLAG_concurrent_sweeping = false;
3163 // Fast evacuation of pages may result in a different page count in old space. 3165 // Fast evacuation of pages may result in a different page count in old space.
3164 FLAG_page_promotion = false; 3166 FLAG_page_promotion = false;
3165 CcTest::InitializeVM(); 3167 CcTest::InitializeVM();
3166 Isolate* isolate = CcTest::i_isolate(); 3168 Isolate* isolate = CcTest::i_isolate();
3167 // If there's snapshot available, we don't know whether 20 small arrays will 3169 // If there's snapshot available, we don't know whether 20 small arrays will
3168 // fit on the initial pages. 3170 // fit on the initial pages.
3169 if (!isolate->snapshot_available()) return; 3171 if (!isolate->snapshot_available()) return;
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after
3860 CcTest::CollectAllGarbage(); 3862 CcTest::CollectAllGarbage();
3861 3863
3862 // Make a new closure that will get code installed from the code map. 3864 // Make a new closure that will get code installed from the code map.
3863 // Unoptimized code is missing and the deoptimizer will go ballistic. 3865 // Unoptimized code is missing and the deoptimizer will go ballistic.
3864 CompileRun("var h = mkClosure(); h('bozo');"); 3866 CompileRun("var h = mkClosure(); h('bozo');");
3865 } 3867 }
3866 3868
3867 3869
3868 TEST(LargeObjectSlotRecording) { 3870 TEST(LargeObjectSlotRecording) {
3869 if (!FLAG_incremental_marking) return; 3871 if (!FLAG_incremental_marking) return;
3872 FLAG_concurrent_marking = false;
3870 FLAG_manual_evacuation_candidates_selection = true; 3873 FLAG_manual_evacuation_candidates_selection = true;
3871 FLAG_stress_incremental_marking = false; 3874 FLAG_stress_incremental_marking = false;
3872 CcTest::InitializeVM(); 3875 CcTest::InitializeVM();
3873 Isolate* isolate = CcTest::i_isolate(); 3876 Isolate* isolate = CcTest::i_isolate();
3874 Heap* heap = isolate->heap(); 3877 Heap* heap = isolate->heap();
3875 HandleScope scope(isolate); 3878 HandleScope scope(isolate);
3876 3879
3877 // Create an object on an evacuation candidate. 3880 // Create an object on an evacuation candidate.
3878 heap::SimulateFullSpace(heap->old_space()); 3881 heap::SimulateFullSpace(heap->old_space());
3879 Handle<FixedArray> lit = isolate->factory()->NewFixedArray(4, TENURED); 3882 Handle<FixedArray> lit = isolate->factory()->NewFixedArray(4, TENURED);
(...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after
4851 4854
4852 4855
4853 static void InterruptCallback357137(v8::Isolate* isolate, void* data) { } 4856 static void InterruptCallback357137(v8::Isolate* isolate, void* data) { }
4854 4857
4855 4858
4856 static void RequestInterrupt(const v8::FunctionCallbackInfo<v8::Value>& args) { 4859 static void RequestInterrupt(const v8::FunctionCallbackInfo<v8::Value>& args) {
4857 CcTest::isolate()->RequestInterrupt(&InterruptCallback357137, NULL); 4860 CcTest::isolate()->RequestInterrupt(&InterruptCallback357137, NULL);
4858 } 4861 }
4859 4862
4860 HEAP_TEST(Regress538257) { 4863 HEAP_TEST(Regress538257) {
4864 FLAG_concurrent_marking = false;
4861 FLAG_manual_evacuation_candidates_selection = true; 4865 FLAG_manual_evacuation_candidates_selection = true;
4862 v8::Isolate::CreateParams create_params; 4866 v8::Isolate::CreateParams create_params;
4863 // Set heap limits. 4867 // Set heap limits.
4864 create_params.constraints.set_max_semi_space_size(1); 4868 create_params.constraints.set_max_semi_space_size(1);
4865 create_params.constraints.set_max_old_space_size(6); 4869 create_params.constraints.set_max_old_space_size(6);
4866 create_params.array_buffer_allocator = CcTest::array_buffer_allocator(); 4870 create_params.array_buffer_allocator = CcTest::array_buffer_allocator();
4867 v8::Isolate* isolate = v8::Isolate::New(create_params); 4871 v8::Isolate* isolate = v8::Isolate::New(create_params);
4868 isolate->Enter(); 4872 isolate->Enter();
4869 { 4873 {
4870 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate); 4874 i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after
5649 5653
5650 { 5654 {
5651 SharedFunctionInfo::GlobalIterator iterator(isolate); 5655 SharedFunctionInfo::GlobalIterator iterator(isolate);
5652 while (iterator.Next()) sfi_count--; 5656 while (iterator.Next()) sfi_count--;
5653 } 5657 }
5654 5658
5655 CHECK_EQ(0, sfi_count); 5659 CHECK_EQ(0, sfi_count);
5656 } 5660 }
5657 5661
5658 HEAP_TEST(Regress587004) { 5662 HEAP_TEST(Regress587004) {
5663 FLAG_concurrent_marking = false;
5659 FLAG_concurrent_sweeping = false; 5664 FLAG_concurrent_sweeping = false;
5660 #ifdef VERIFY_HEAP 5665 #ifdef VERIFY_HEAP
5661 FLAG_verify_heap = false; 5666 FLAG_verify_heap = false;
5662 #endif 5667 #endif
5663 CcTest::InitializeVM(); 5668 CcTest::InitializeVM();
5664 v8::HandleScope scope(CcTest::isolate()); 5669 v8::HandleScope scope(CcTest::isolate());
5665 Heap* heap = CcTest::heap(); 5670 Heap* heap = CcTest::heap();
5666 Isolate* isolate = CcTest::i_isolate(); 5671 Isolate* isolate = CcTest::i_isolate();
5667 Factory* factory = isolate->factory(); 5672 Factory* factory = isolate->factory();
5668 const int N = 5673 const int N =
(...skipping 22 matching lines...) Expand all
5691 // Re-enable old space expansion to avoid OOM crash. 5696 // Re-enable old space expansion to avoid OOM crash.
5692 heap->set_force_oom(false); 5697 heap->set_force_oom(false);
5693 CcTest::CollectGarbage(NEW_SPACE); 5698 CcTest::CollectGarbage(NEW_SPACE);
5694 } 5699 }
5695 5700
5696 HEAP_TEST(Regress589413) { 5701 HEAP_TEST(Regress589413) {
5697 if (!FLAG_incremental_marking) return; 5702 if (!FLAG_incremental_marking) return;
5698 FLAG_stress_compaction = true; 5703 FLAG_stress_compaction = true;
5699 FLAG_manual_evacuation_candidates_selection = true; 5704 FLAG_manual_evacuation_candidates_selection = true;
5700 FLAG_parallel_compaction = false; 5705 FLAG_parallel_compaction = false;
5706 FLAG_concurrent_marking = false;
5701 FLAG_concurrent_sweeping = false; 5707 FLAG_concurrent_sweeping = false;
5702 CcTest::InitializeVM(); 5708 CcTest::InitializeVM();
5703 v8::HandleScope scope(CcTest::isolate()); 5709 v8::HandleScope scope(CcTest::isolate());
5704 Heap* heap = CcTest::heap(); 5710 Heap* heap = CcTest::heap();
5705 // Get the heap in clean state. 5711 // Get the heap in clean state.
5706 CcTest::CollectGarbage(OLD_SPACE); 5712 CcTest::CollectGarbage(OLD_SPACE);
5707 CcTest::CollectGarbage(OLD_SPACE); 5713 CcTest::CollectGarbage(OLD_SPACE);
5708 Isolate* isolate = CcTest::i_isolate(); 5714 Isolate* isolate = CcTest::i_isolate();
5709 Factory* factory = isolate->factory(); 5715 Factory* factory = isolate->factory();
5710 // Fill the new space with byte arrays with elements looking like pointers. 5716 // Fill the new space with byte arrays with elements looking like pointers.
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
5938 size_t length() const { return strlen(data_); } 5944 size_t length() const { return strlen(data_); }
5939 5945
5940 private: 5946 private:
5941 const char* data_; 5947 const char* data_;
5942 }; 5948 };
5943 5949
5944 TEST(Regress631969) { 5950 TEST(Regress631969) {
5945 if (!FLAG_incremental_marking) return; 5951 if (!FLAG_incremental_marking) return;
5946 FLAG_manual_evacuation_candidates_selection = true; 5952 FLAG_manual_evacuation_candidates_selection = true;
5947 FLAG_parallel_compaction = false; 5953 FLAG_parallel_compaction = false;
5954 FLAG_concurrent_marking = false;
5948 FLAG_concurrent_sweeping = false; 5955 FLAG_concurrent_sweeping = false;
5949 CcTest::InitializeVM(); 5956 CcTest::InitializeVM();
5950 v8::HandleScope scope(CcTest::isolate()); 5957 v8::HandleScope scope(CcTest::isolate());
5951 Heap* heap = CcTest::heap(); 5958 Heap* heap = CcTest::heap();
5952 // Get the heap in clean state. 5959 // Get the heap in clean state.
5953 CcTest::CollectGarbage(OLD_SPACE); 5960 CcTest::CollectGarbage(OLD_SPACE);
5954 CcTest::CollectGarbage(OLD_SPACE); 5961 CcTest::CollectGarbage(OLD_SPACE);
5955 Isolate* isolate = CcTest::i_isolate(); 5962 Isolate* isolate = CcTest::i_isolate();
5956 Factory* factory = isolate->factory(); 5963 Factory* factory = isolate->factory();
5957 // Allocate two strings in a fresh page and mark the page as evacuation 5964 // Allocate two strings in a fresh page and mark the page as evacuation
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
6341 CHECK(!heap->code_space()->FirstPage()->Contains(code->address())); 6348 CHECK(!heap->code_space()->FirstPage()->Contains(code->address()));
6342 6349
6343 // Ensure it's not in large object space. 6350 // Ensure it's not in large object space.
6344 MemoryChunk* chunk = MemoryChunk::FromAddress(code->address()); 6351 MemoryChunk* chunk = MemoryChunk::FromAddress(code->address());
6345 CHECK(chunk->owner()->identity() != LO_SPACE); 6352 CHECK(chunk->owner()->identity() != LO_SPACE);
6346 CHECK(chunk->NeverEvacuate()); 6353 CHECK(chunk->NeverEvacuate());
6347 } 6354 }
6348 6355
6349 } // namespace internal 6356 } // namespace internal
6350 } // namespace v8 6357 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/heap/test-compaction.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698