[K/N] Remove marker check from mark phase ^KT-54163

Markers can't appear in object fields.

Merge-request: KT-MR-7201
Merged-by: Alexander Shabalin <Alexander.Shabalin@jetbrains.com>
This commit is contained in:
Alexander Shabalin
2022-09-27 09:08:29 +00:00
committed by Space
parent 64c9a9f137
commit 822e341d76
2 changed files with 8 additions and 9 deletions
@@ -52,14 +52,13 @@ MarkStats Mark(typename Traits::MarkQueue& markQueue) noexcept {
stats.aliveHeapSetBytes += mm::GetAllocatedHeapSize(top);
traverseReferredObjects(top, [&](ObjHeader* field) noexcept {
if (!isNullOrMarker(field) && field->heap()) {
if (field->heap()) {
Traits::enqueue(markQueue, field);
}
});
if (auto* extraObjectData = mm::ExtraObjectData::Get(top)) {
auto weakCounter = extraObjectData->GetWeakReferenceCounter();
if (!isNullOrMarker(weakCounter)) {
if (auto weakCounter = extraObjectData->GetWeakReferenceCounter()) {
RuntimeAssert(
weakCounter->heap(), "Weak counter must be a heap object. object=%p counter=%p permanent=%d local=%d", top,
weakCounter, weakCounter->permanent(), weakCounter->local());
@@ -133,7 +132,7 @@ void collectRootSetForThread(typename Traits::MarkQueue& markQueue, mm::ThreadDa
} else {
traverseReferredObjects(object, [&](ObjHeader* field) noexcept {
// Each permanent and stack object has own entry in the root set.
if (field->heap() && !isNullOrMarker(field)) {
if (field->heap()) {
Traits::enqueue(markQueue, field);
}
});
@@ -165,7 +164,7 @@ void collectRootSetGlobals(typename Traits::MarkQueue& markQueue) noexcept {
} else {
traverseReferredObjects(object, [&](ObjHeader* field) noexcept {
// Each permanent and stack object has own entry in the root set.
if (field->heap() && !isNullOrMarker(field)) {
if (field->heap()) {
Traits::enqueue(markQueue, field);
}
});
@@ -227,7 +227,7 @@ TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleCharArray) {
TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectWithInvalidFields) {
Object object;
object->field1 = kInitializingSingleton;
object->field1 = nullptr;
auto stats = Mark({object});
@@ -236,7 +236,7 @@ TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectWithInvalidFields) {
TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectArrayWithInvalidFields) {
ObjectArray array;
array.elements()[0] = kInitializingSingleton;
array.elements()[0] = nullptr;
auto stats = Mark({array});
@@ -317,7 +317,7 @@ TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleCharArrayWithWeakCounter) {
TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectWithInvalidFieldsWithWeakCounter) {
Object weakCounter;
Object object;
object->field1 = kInitializingSingleton;
object->field1 = nullptr;
weakCounter->field1 = object.header();
object.InstallWeakCounter(weakCounter);
@@ -329,7 +329,7 @@ TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectWithInvalidFieldsWithWeakCount
TEST_F(MarkAndSweepUtilsMarkTest, MarkSingleObjectArrayWithInvalidFieldsWithWeakCounter) {
Object weakCounter;
ObjectArray array;
array.elements()[0] = kInitializingSingleton;
array.elements()[0] = nullptr;
weakCounter->field1 = array.header();
array.InstallWeakCounter(weakCounter);