Index: test/cctest/test-mementos.cc |
diff --git a/test/cctest/test-mementos.cc b/test/cctest/test-mementos.cc |
index f59eef9485f8257ef158117dc5b6e69a2f82da09..427104d5c81d107a9a59974d2590d5bb5deff331 100644 |
--- a/test/cctest/test-mementos.cc |
+++ b/test/cctest/test-mementos.cc |
@@ -29,11 +29,8 @@ |
using namespace v8::internal; |
-TEST(Regress340063) { |
- CcTest::InitializeVM(); |
- if (!i::FLAG_allocation_site_pretenuring) return; |
- v8::HandleScope scope(CcTest::isolate()); |
+static void SetUpNewSpaceWithPoisonedMementoAtTop() { |
Isolate* isolate = CcTest::i_isolate(); |
Heap* heap = isolate->heap(); |
NewSpace* new_space = heap->new_space(); |
@@ -52,8 +49,31 @@ TEST(Regress340063) { |
memento->set_map_no_write_barrier(heap->allocation_memento_map()); |
memento->set_allocation_site( |
reinterpret_cast<AllocationSite*>(kHeapObjectTag), SKIP_WRITE_BARRIER); |
+} |
+ |
+ |
+TEST(Regress340063) { |
+ CcTest::InitializeVM(); |
+ if (!i::FLAG_allocation_site_pretenuring) return; |
+ v8::HandleScope scope(CcTest::isolate()); |
+ |
+ |
+ SetUpNewSpaceWithPoisonedMementoAtTop(); |
// Call GC to see if we can handle a poisonous memento right after the |
// current new space top pointer. |
+ Heap* heap = CcTest::i_isolate()->heap(); |
heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask); |
Hannes Payer (out of office)
2014/02/18 11:41:03
Change it to CcTest::i_isolate()->heap()->CollectA
|
} |
+ |
+ |
+TEST(BadMementoAfterTopForceScavenge) { |
+ CcTest::InitializeVM(); |
+ if (!i::FLAG_allocation_site_pretenuring) return; |
+ v8::HandleScope scope(CcTest::isolate()); |
+ |
+ SetUpNewSpaceWithPoisonedMementoAtTop(); |
+ |
+ // Force GC to test the poisoned memento handling |
+ CcTest::i_isolate()->heap()->CollectGarbage(i::NEW_SPACE); |
+} |