Bug 1359049 - Improve gray marking assertions to cover object private GC pointers r=sfink

This commit is contained in:
Jon Coppeard 2017-04-26 14:15:32 +01:00
Родитель 0bef963eb6
Коммит 6f85e884cd
2 изменённых файлов: 4 добавлений и 1 удалений

Просмотреть файл

@ -657,7 +657,8 @@ CheckGrayMarkingTracer::checkCell(Cell* cell)
tenuredCell->isMarked(GRAY))
{
failures++;
fprintf(stderr, "Found black to gray edge %p\n", cell);
fprintf(stderr, "Found black to gray edge to %s %p\n",
GCTraceKindToAscii(cell->getTraceKind()), cell);
dumpCellPath();
}
}

Просмотреть файл

@ -1225,6 +1225,8 @@ class NativeObject : public ShapedObject
}
void setPrivateGCThing(gc::Cell* cell) {
MOZ_ASSERT_IF(IsMarkedBlack(this),
!JS::GCThingIsMarkedGray(JS::GCCellPtr(cell, cell->getTraceKind())));
void** pprivate = &privateRef(numFixedSlots());
privateWriteBarrierPre(pprivate);
*pprivate = reinterpret_cast<void*>(cell);