diff options
Diffstat (limited to 'deps/v8/test/unittests/heap/cppgc/marker-unittest.cc')
-rw-r--r-- | deps/v8/test/unittests/heap/cppgc/marker-unittest.cc | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc b/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc index b879d9b989..2574db151f 100644 --- a/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc +++ b/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc @@ -28,7 +28,6 @@ class MarkerTest : public testing::TestWithHeap { auto* heap = Heap::From(GetHeap()); InitializeMarker(*heap, GetPlatformHandle().get(), config); marker_->FinishMarking(stack_state); - marker_->ProcessWeakness(); // Pretend do finish sweeping as StatsCollector verifies that Notify* // methods are called in the right order. heap->stats_collector()->NotifySweepingCompleted(); @@ -234,7 +233,7 @@ TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedEmptyStack) { Member<GCedWithCallback> member(obj); marker->VisitorForTesting().Trace(member); }); - EXPECT_TRUE(HeapObjectHeader::FromPayload(object).IsMarked()); + EXPECT_FALSE(HeapObjectHeader::FromPayload(object).IsMarked()); marker()->FinishMarking(MarkingConfig::StackState::kMayContainHeapPointers); EXPECT_TRUE(HeapObjectHeader::FromPayload(object).IsMarked()); } @@ -248,7 +247,7 @@ TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedNonEmptyStack) { GetAllocationHandle(), [marker = marker()](GCedWithCallback* obj) { Member<GCedWithCallback> member(obj); marker->VisitorForTesting().Trace(member); - EXPECT_TRUE(HeapObjectHeader::FromPayload(obj).IsMarked()); + EXPECT_FALSE(HeapObjectHeader::FromPayload(obj).IsMarked()); marker->FinishMarking( MarkingConfig::StackState::kMayContainHeapPointers); EXPECT_TRUE(HeapObjectHeader::FromPayload(obj).IsMarked()); @@ -258,14 +257,20 @@ TEST_F(MarkerTest, InConstructionObjectIsEventuallyMarkedNonEmptyStack) { TEST_F(MarkerTest, SentinelNotClearedOnWeakPersistentHandling) { static const Marker::MarkingConfig config = { MarkingConfig::CollectionType::kMajor, - MarkingConfig::StackState::kNoHeapPointers}; - InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get(), config); + MarkingConfig::StackState::kNoHeapPointers, + MarkingConfig::MarkingType::kIncremental}; Persistent<GCed> root = MakeGarbageCollected<GCed>(GetAllocationHandle()); auto* tmp = MakeGarbageCollected<GCed>(GetAllocationHandle()); root->SetWeakChild(tmp); - marker()->FinishMarking(MarkingConfig::StackState::kNoHeapPointers); + InitializeMarker(*Heap::From(GetHeap()), GetPlatformHandle().get(), config); + while (!marker()->IncrementalMarkingStepForTesting( + MarkingConfig::StackState::kNoHeapPointers)) { + } + // {root} object must be marked at this point because we do not allow + // encountering kSentinelPointer in WeakMember on regular Trace() calls. + ASSERT_TRUE(HeapObjectHeader::FromPayload(root.Get()).IsMarked()); root->SetWeakChild(kSentinelPointer); - marker()->ProcessWeakness(); + marker()->FinishMarking(MarkingConfig::StackState::kNoHeapPointers); EXPECT_EQ(kSentinelPointer, root->weak_child()); } @@ -290,7 +295,6 @@ class IncrementalMarkingTest : public testing::TestWithHeap { void FinishMarking() { marker_->FinishMarking(MarkingConfig::StackState::kMayContainHeapPointers); - marker_->ProcessWeakness(); // Pretend do finish sweeping as StatsCollector verifies that Notify* // methods are called in the right order. Heap::From(GetHeap())->stats_collector()->NotifySweepingCompleted(); @@ -372,7 +376,7 @@ TEST_F(IncrementalMarkingTest, IncrementalStepDuringAllocation) { holder->member_ = obj; EXPECT_FALSE(header->IsMarked()); FinishSteps(MarkingConfig::StackState::kMayContainHeapPointers); - EXPECT_TRUE(header->IsMarked()); + EXPECT_FALSE(header->IsMarked()); }); FinishSteps(MarkingConfig::StackState::kNoHeapPointers); EXPECT_TRUE(header->IsMarked()); |