Bug 1129977 - Fix bogus MarkOffThreadNurseryObjects assert when post-barrier verifier is used. r=terrence

This commit is contained in:
Jan de Mooij 2015-03-05 15:47:11 +01:00
Родитель 74009a525c
Коммит fc6c5d2e40
2 изменённых файлов: 16 добавлений и 2 удалений

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

@ -0,0 +1,10 @@
gczeal(11);
function C(a, b) {
this.b=b;
}
evaluate('\
Object.defineProperty(Object.prototype, "b", {set: function() {}});\
var f = C.bind(0x2004, 2);\
');
for (var i=1; i<5000; ++i)
new f;

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

@ -1732,8 +1732,12 @@ MarkOffThreadNurseryObjects::mark(JSTracer *trc)
{
JSRuntime *rt = trc->runtime();
MOZ_ASSERT(rt->jitRuntime()->hasIonNurseryObjects());
rt->jitRuntime()->setHasIonNurseryObjects(false);
if (trc->runtime()->isHeapMinorCollecting()) {
// Only reset hasIonNurseryObjects if we're doing an actual minor GC,
// not if we're, for instance, verifying post barriers.
MOZ_ASSERT(rt->jitRuntime()->hasIonNurseryObjects());
rt->jitRuntime()->setHasIonNurseryObjects(false);
}
AutoLockHelperThreadState lock;
if (!HelperThreadState().threads)