Skip to content

Commit

Permalink
Bug 1129977 - Fix bogus MarkOffThreadNurseryObjects assert when post-…
Browse files Browse the repository at this point in the history
…barrier verifier is used.
  • Loading branch information
rmottola committed May 4, 2019
1 parent d5e4d1a commit 4d204fb
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 2 deletions.
10 changes: 10 additions & 0 deletions js/src/jit-test/tests/ion/bug1129977.js
Original file line number Diff line number Diff line change
@@ -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;
8 changes: 6 additions & 2 deletions js/src/jit/Ion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1737,8 +1737,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)
Expand Down

0 comments on commit 4d204fb

Please sign in to comment.