summaryrefslogtreecommitdiff
path: root/deps/v8/test/unittests/heap/cppgc/marker-unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/unittests/heap/cppgc/marker-unittest.cc')
-rw-r--r--deps/v8/test/unittests/heap/cppgc/marker-unittest.cc22
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());