[vm/test] Scavenger WeakProperty and WeakReference unit tests

The new space tests were evacuating new space, letting the scavenger
promote everything and then immediately running the marker.
This did not test the state right after running only the scavenge.

TEST=runtime/vm/object_test.cc

Change-Id: I3272f62a38ff5d38e76c83c831c3742e4951aa56
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/233280
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
This commit is contained in:
Daco Harkes 2022-02-16 18:57:23 +00:00 committed by Commit Bot
parent 884bed1fff
commit 0fab3fed93

View file

@ -3643,7 +3643,7 @@ ISOLATE_UNIT_TEST_CASE(WeakProperty_PreserveOne_NewSpace) {
weak.set_key(key);
weak.set_value(value);
}
GCTestHelper::CollectAllGarbage();
GCTestHelper::CollectNewSpace();
EXPECT(weak.key() != Object::null());
EXPECT(weak.value() != Object::null());
}
@ -3668,7 +3668,7 @@ ISOLATE_UNIT_TEST_CASE(WeakProperty_PreserveTwo_NewSpace) {
weak2.set_key(key2);
weak2.set_value(value2);
}
GCTestHelper::CollectAllGarbage();
GCTestHelper::CollectNewSpace();
EXPECT(weak1.key() != Object::null());
EXPECT(weak1.value() != Object::null());
EXPECT(weak2.key() != Object::null());
@ -3693,7 +3693,7 @@ ISOLATE_UNIT_TEST_CASE(WeakProperty_PreserveTwoShared_NewSpace) {
weak2.set_key(key);
weak2.set_value(value2);
}
GCTestHelper::CollectAllGarbage();
GCTestHelper::CollectNewSpace();
EXPECT(weak1.key() != Object::null());
EXPECT(weak1.value() != Object::null());
EXPECT(weak2.key() != Object::null());
@ -3783,7 +3783,7 @@ ISOLATE_UNIT_TEST_CASE(WeakProperty_ClearOne_NewSpace) {
key ^= OneByteString::null();
value ^= OneByteString::null();
}
GCTestHelper::CollectAllGarbage();
GCTestHelper::CollectNewSpace();
EXPECT(weak.key() == Object::null());
EXPECT(weak.value() == Object::null());
}
@ -3806,7 +3806,7 @@ ISOLATE_UNIT_TEST_CASE(WeakProperty_ClearTwoShared_NewSpace) {
weak2.set_key(key);
weak2.set_value(value2);
}
GCTestHelper::CollectAllGarbage();
GCTestHelper::CollectNewSpace();
EXPECT(weak1.key() == Object::null());
EXPECT(weak1.value() == Object::null());
EXPECT(weak2.key() == Object::null());
@ -3869,7 +3869,13 @@ static void WeakReference_PreserveOne(Thread* thread, Heap::Space space) {
weak.set_target(target);
weak.SetTypeArguments(type_arguments);
}
GCTestHelper::CollectAllGarbage();
if (space == Heap::kNew) {
GCTestHelper::CollectNewSpace();
} else {
GCTestHelper::CollectAllGarbage();
}
EXPECT(weak.target() != Object::null());
EXPECT(weak.GetTypeArguments() != Object::null());
}
@ -3894,7 +3900,13 @@ static void WeakReference_ClearOne(Thread* thread, Heap::Space space) {
weak.set_target(target);
weak.SetTypeArguments(type_arguments);
}
GCTestHelper::CollectAllGarbage();
if (space == Heap::kNew) {
GCTestHelper::CollectNewSpace();
} else {
GCTestHelper::CollectAllGarbage();
}
EXPECT(weak.target() == Object::null());
EXPECT(weak.GetTypeArguments() != Object::null());
}
@ -3927,7 +3939,13 @@ static void WeakReference_Clear_ReachableThroughWeakProperty(
weak_property.set_key(key);
weak_property.set_value(weak_reference);
}
GCTestHelper::CollectAllGarbage();
if (space == Heap::kNew) {
GCTestHelper::CollectNewSpace();
} else {
GCTestHelper::CollectAllGarbage();
}
const auto& weak_reference =
WeakReference::CheckedHandle(Z, weak_property.value());
EXPECT(weak_reference.target() == Object::null());
@ -3964,7 +3982,13 @@ static void WeakReference_Preserve_ReachableThroughWeakProperty(
weak_property.set_key(key);
weak_property.set_value(weak_reference);
}
GCTestHelper::CollectAllGarbage();
if (space == Heap::kNew) {
GCTestHelper::CollectNewSpace();
} else {
GCTestHelper::CollectAllGarbage();
}
const auto& weak_reference =
WeakReference::CheckedHandle(Z, weak_property.value());
EXPECT(weak_reference.target() != Object::null());