#438: revert M1371908 for startup assertions and crashes

This commit is contained in:
Cameron Kaiser 2017-12-16 11:04:54 -08:00
parent 96e1bd02f4
commit 956fd74ca6
4 changed files with 5 additions and 37 deletions

View File

@ -1,6 +0,0 @@
if (helperThreadCount() === 0)
quit();
offThreadCompileScript("");
startgc(0);
runOffThreadScript();

View File

@ -1,21 +0,0 @@
if (!("setGCCallback" in this &&
"schedulegc" in this &&
"gcslice" in this &&
"newGlobal" in this &&
"helperThreadCount" in this))
{
quit();
}
if (helperThreadCount() == 0)
quit();
setGCCallback({
action: "majorGC",
});
schedulegc(this)
gcslice(3)
var lfGlobal = newGlobal();
lfGlobal.offThreadCompileScript("");
lfGlobal.runOffThreadScript();

View File

@ -6845,11 +6845,7 @@ gc::MergeCompartments(JSCompartment* source, JSCompartment* target)
JSRuntime* rt = source->runtimeFromMainThread();
MOZ_ASSERT(!source->zone()->wasGCStarted());
MOZ_ASSERT(!target->zone()->wasGCStarted());
JS::AutoAssertOnGC nogc(rt);
AutoTraceSession session(rt);
AutoPrepareForTracing prepare(rt, SkipAtoms);
// Cleanup tables and other state in the source compartment that will be
// meaningless after merging into the target compartment.

View File

@ -1103,13 +1103,12 @@ GlobalHelperThreadState::mergeParseTaskCompartment(JSRuntime* rt, ParseTask* par
Handle<GlobalObject*> global,
JSCompartment* dest)
{
// Finish any ongoing incremental GC that may affect the destination zone.
if (JS::IsIncrementalGCInProgress(rt) && dest->zone()->wasGCStarted())
JS::FinishIncrementalGC(rt, JS::gcreason::API);
// After we call LeaveParseTaskZone() it's not safe to GC until we have
// finished merging the contents of the parse task's compartment into the
// destination compartment.
// destination compartment. Finish any ongoing incremental GC first and
// assert that no allocation can occur. (Bug 1371908 changes this, but
// generates assertion failures.)
gc::AutoFinishGC finishGC(rt);
JS::AutoAssertNoAlloc noAlloc(rt);
LeaveParseTaskZone(rt, parseTask);