Closed Bug 1697696 Opened 3 years ago Closed 3 years ago

Warp: Fix branch pruning

Categories

(Core :: JavaScript Engine: JIT, task, P1)

task

Tracking

()

RESOLVED FIXED
89 Branch
Tracking Status
firefox89 --- fixed

People

(Reporter: iain, Assigned: iain)

References

Details

Attachments

(5 files)

Branch pruning in Ion was based on code coverage data. We don't track that data in Warp, so branch pruning currently doesn't do anything.

If an IC has never been reached, Warp generates an unconditional MBail (with BailoutKind::FirstExecution). Code after these bailouts is unreachable. We should rewrite branch pruning based on this IC data.

(In reply to Iain Ireland [:iain] from comment #0)

If an IC has never been reached, Warp generates an unconditional MBail (with BailoutKind::FirstExecution). Code after these bailouts is unreachable. We should rewrite branch pruning based on this IC data.

Note, branch pruning had some heuristics about the complexity of the content of blocks. This avoided the removal of tiny blocks which were never reached but still used infrequently, and was critical on some benchmarks.

If a block contains an IC that has never been reached, we generate an unconditional bailout for that IC. Code that can't be reached except by passing through such a bailout will never be executed in this compilation. (Obviously we could bail out and recompile later with more IC data.) My proposed approach doesn't change that; it just updates the CFG to remove code that was already unreachable.

When we bail out, we will reach the IC, so future recompilations will do less pruning. It's possible that there are cases where we could tune this better to reach a steady state faster, but I haven't noticed excessive bailouts as a problem in profiles.

When there's an OSR block, it's possible for branch pruning to create a partition in the CFG, where the main entry can't reach the OSR preheader block. (This mostly happens if some code that dominates the OSR loop ran in the C++ interpreter and doesn't have any IC data.) This causes a variety of problems, so my initial implementation of branch pruning didn't support this case. I spent yesterday trying to add support, didn't find a satisfactory solution, started writing up this comment, and rubber-ducked my way into something that worked. Documenting my process for background.

The first obstacle is that the MIR graph really doesn't want to have loop headers with a back edge but no other entry. (The easiest way to get this with pruning is via nested loops where we OSR into the innermost loop; if the entry block bails out because it has no IC data, the outermost loop header will only be reachable via the backedge.) This triggers the assertion here. If that assertion is disabled, the dominator code explodes messily. I did not investigate the dominator code further.

GVN deals with the same issue. In GVN's case, the fix is implemented in fixupOSROnlyLoop by adding a fake predecessor to loop headers. This solves the big problem at the expense of another problem that seems like it should be easy to fix: how do we fill in the phis in the successor of the fake block?

GVN uses a fake phi in the unreachable block with zero operands, with the comment "it's the least-odd thing we can do without significant complexity." However, GVN has the advantage of running relatively late. Branch pruning is the first optimization post-WarpBuilder. A number of optimizations (especially phi specialization) choke on no-operand phis. I spent a while sprinkling if (block->unreachable()) { continue; } throughout the codebase, but I never got it working and it felt fragile.

If we need definitions in our unreachable block, it seems reasonable to use MUnreachableResult. However, lowering/codegen really don't like seeing non-control instructions in unreachable blocks. (LIRGenerator::visitBlock has assertions that imply we sometimes lower unreachable blocks with no non-control instructions, although when I modified them to crash for any unreachable block, I didn't see any jit-test failures.)

I also tried removing the unreachable blocks after we no longer needed dominators, but before lowering, and ran into problems with block numbering, but as I wrote this comment out I realized I hadn't tried just renumbering them. It turns out that works, so long as we run it late enough that we no longer need dominators.

So the approach I have implemented is to factor out the fake-predecessor creation code from GVN, modify it to use MUnreachableResult instead of bogus phi nodes as its inputs to the loop header's phis, and add a trivial pass after MakeLoopsContiguous to remove the fake blocks.

We don't use code coverage hitcounts for PGO in Warp, so HitState is always NotDefined.

Drive-by: Removing JSScript::incHitCount. Its only caller was removed in part 9 of bug 1682767.

We mark blocks as bailout blocks in WarpBuilder when we add an unconditional bailout. In branch pruning, we remove all the unreachable instructions (everything in a basic block after a bail), and remove any unreachable blocks.

I used a worklist approach to marking blocks instead of ReversePostOrderIterator because it gives us a more precise result for the reachability of a block header in the presence of OSR.

optimized-out-03.js was fragile and depended on compiling at exactly the right time. The new version should be a little more robust.

The TODO about over-marking is addressed in the next patch. The TODO about supporting OSR is addressed in the two patches after that.

Depends on D108894

When we prune unreachable code, we mark the operands of removed instructions to ensure that they can be recovered if we bail out. The previous implementation of branch pruning always eliminated entire blocks. For blocks that always bail out, the new approach will only remove the instructions after the first MBail. We can therefore be a bit more precise about which operands we flag as having removed uses.

Depends on D108895

In OSR compilations, if branch pruning eliminates the path from the entry block to the OSR preheader block, we can end up with loop headers with a backedge but no other predecessors. This breaks our dominator tree implementation. (Specifically, we crash in IntersectDominators with the header as block1 and the OSR entry as block2.)

GVN solves this problem by adding fake unreachable predecessors to loop headers. This patch factors out the GVN code so that the next patch can use it to support branch pruning with OSR.

In the existing implementation, we create zero-input phis to use as inputs for any phis in the loop header. The zero-input phis were a problem for branch pruning, which runs before phi specialization, so I replaced them with MUnreachableResults. To avoid problems during lowering, I added a simple pass that removes the fake blocks after they are no longer needed.

(This removes one of the cases where visitBlock can visit an unreachable block; I verified that the no-GVN case is still possible and updated the assertions.)

Depends on D108896

The change in guessPhiType is necessary because after pruning the path from the entry block to the OSR preheader, phis in the preheader only have one operand and can be simplified by phi elimination, making it possible for a phi elsewhere in the CFG to have two distinct OsrValues as its operands.

The alternative to this patch and the previous one is to add code in PruneUnreachableBlocks to bail out of pruning if the non-OSR predecessor of the OSR preheader is unreachable. This lets us do branch pruning in a subset of OSR compilations. (Top-level scripts are the most likely to be unprunable.)

Depends on D108897

Blocks: 1699851
Pushed by iireland@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/677484243897
Remove dead branch-pruning code r=nbp
https://hg.mozilla.org/integration/autoland/rev/f390ba6ff610
Prune branches based on unconditional bailouts r=nbp
https://hg.mozilla.org/integration/autoland/rev/0d61913db431
Refactor FlagAllOperandsAsHavingRemovedUses r=nbp
https://hg.mozilla.org/integration/autoland/rev/cf4b946a34e8
Add MBasicBlock::NewFakeLoopPredecessor r=nbp
https://hg.mozilla.org/integration/autoland/rev/c63cb20621ed
Support pruning with OSR r=nbp

Backed out 5 changesets (bug 1697696) for assertion failure at Lowering-shared.cpp.

Push with failures: https://treeherder.mozilla.org/jobs?repo=autoland&group_state=expanded&fromchange=ab1644a7b0eecbba9cad87f48821dc6c82bb8eab&tochange=7173a93ca1022af179e244127da51f7d6a85477b&searchStr=Linux%2C18.04%2Cx64%2Cdebug%2CMochitests%2Ctest-linux1804-64%2Fdebug-mochitest-browser-chrome-e10s%2Cbc7&selectedTaskRun=VCZBE2q6StiQcOHZmt1rRw.0

Backout link: https://hg.mozilla.org/integration/autoland/rev/dae744f8f64a7959c5d1be5658c27cbf6715337c

Failure log: https://treeherder.mozilla.org/logviewer?job_id=334061265&repo=autoland&lineNumber=11431

[task 2021-03-22T22:26:53.825Z] 22:26:53     INFO - TEST-START | toolkit/mozapps/extensions/test/browser/browser_html_pending_updates.js
[task 2021-03-22T22:26:53.832Z] 22:26:53     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7fc494c03800 == 0 [pid = 3433] [id = 95] [url = about:blank]
[task 2021-03-22T22:26:53.833Z] 22:26:53     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 2 (7fc494c08000) [pid = 3433] [serial = 193] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:53.951Z] 22:26:53     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: Need BrowserChild to get the nativeWindow from!: file /builds/worker/checkouts/gecko/widget/PuppetWidget.cpp:1026
[task 2021-03-22T22:26:53.952Z] 22:26:53     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f62caa56000 == 9 [pid = 3339] [id = 32]
[task 2021-03-22T22:26:53.953Z] 22:26:53     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 31 (7f62cb672040) [pid = 3339] [serial = 84] [outer = 0]
[task 2021-03-22T22:26:53.953Z] 22:26:53     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 32 (7f62caa57800) [pid = 3339] [serial = 85] [outer = 7f62cb672040]
[task 2021-03-22T22:26:53.968Z] 22:26:53     INFO - GECKO(3264) | [Child 3339, Main Thread] WARNING: Fallback to BasicLayerManager: file /builds/worker/checkouts/gecko/dom/ipc/BrowserChild.cpp:2694
[task 2021-03-22T22:26:53.984Z] 22:26:53     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 33 (7f62caa5bc00) [pid = 3339] [serial = 86] [outer = 7f62cb672040]
[task 2021-03-22T22:26:54.044Z] 22:26:54     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fc494c03400 == 1 [pid = 3433] [id = 96]
[task 2021-03-22T22:26:54.045Z] 22:26:54     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 3 (7fc49521a200) [pid = 3433] [serial = 196] [outer = 0]
[task 2021-03-22T22:26:54.046Z] 22:26:54     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 4 (7fc494c06400) [pid = 3433] [serial = 197] [outer = 7fc49521a200]
[task 2021-03-22T22:26:54.102Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fba31db5000 == 87 [pid = 3264] [id = 195]
[task 2021-03-22T22:26:54.102Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 183 (7fba31d4b900) [pid = 3264] [serial = 549] [outer = 0]
[task 2021-03-22T22:26:54.102Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 184 (7fba31dbf800) [pid = 3264] [serial = 550] [outer = 7fba31d4b900]
[task 2021-03-22T22:26:54.158Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 185 (7fba34532800) [pid = 3264] [serial = 551] [outer = 7fba31d4b900]
[task 2021-03-22T22:26:54.174Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: Failed to retarget HTML data delivery to the parser thread.: file /builds/worker/checkouts/gecko/parser/html/nsHtml5StreamParser.cpp:1299
[task 2021-03-22T22:26:54.174Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: 'aOwner->IsDiscarded()', file /builds/worker/workspace/obj-build/dist/include/mozilla/dom/SyncedContextInlines.h:92
[task 2021-03-22T22:26:54.339Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/base/nsContentUtils.cpp:3897
[task 2021-03-22T22:26:54.497Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.497Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.553Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.554Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.594Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.594Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.615Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.615Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.655Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.655Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.696Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.697Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.739Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.739Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.795Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.796Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.825Z] 22:26:54     INFO - GECKO(3264) | [Child 3339, Main Thread] WARNING: '!CanSend() || !mManager || !mManager->CanSend()', file /builds/worker/checkouts/gecko/dom/ipc/jsactor/JSWindowActorChild.cpp:40
[task 2021-03-22T22:26:54.825Z] 22:26:54     INFO - GECKO(3264) | [Child 3339, Main Thread] WARNING: '!CanSend() || !mManager || !mManager->CanSend()', file /builds/worker/checkouts/gecko/dom/ipc/jsactor/JSWindowActorChild.cpp:40
[task 2021-03-22T22:26:54.887Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.888Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.908Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:54.908Z] 22:26:54     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:55.005Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(uri) failed: file /builds/worker/checkouts/gecko/caps/BasePrincipal.cpp:1327
[task 2021-03-22T22:26:55.005Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/jsactor/JSWindowActorProtocol.cpp:181
[task 2021-03-22T22:26:55.012Z] 22:26:55     INFO - GECKO(3264) | Manager window unload handler
[task 2021-03-22T22:26:55.033Z] 22:26:55     INFO - GECKO(3264) | JavaScript error: resource://gre/actors/BrowserElementParent.jsm, line 24: TypeError: can't access property "ownerGlobal", browser is null
[task 2021-03-22T22:26:55.296Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: Need BrowserChild to get the nativeWindow from!: file /builds/worker/checkouts/gecko/widget/PuppetWidget.cpp:1026
[task 2021-03-22T22:26:55.297Z] 22:26:55     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7f62caa58400 == 10 [pid = 3339] [id = 33]
[task 2021-03-22T22:26:55.298Z] 22:26:55     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 34 (7f62cb672200) [pid = 3339] [serial = 87] [outer = 0]
[task 2021-03-22T22:26:55.301Z] 22:26:55     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 35 (7f62caa59400) [pid = 3339] [serial = 88] [outer = 7f62cb672200]
[task 2021-03-22T22:26:55.317Z] 22:26:55     INFO - GECKO(3264) | [Child 3339, Main Thread] WARNING: Fallback to BasicLayerManager: file /builds/worker/checkouts/gecko/dom/ipc/BrowserChild.cpp:2694
[task 2021-03-22T22:26:55.337Z] 22:26:55     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 36 (7f62caa5fc00) [pid = 3339] [serial = 89] [outer = 7f62cb672200]
[task 2021-03-22T22:26:55.394Z] 22:26:55     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fc494c03800 == 2 [pid = 3433] [id = 97]
[task 2021-03-22T22:26:55.394Z] 22:26:55     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 5 (7fc49521a580) [pid = 3433] [serial = 198] [outer = 0]
[task 2021-03-22T22:26:55.395Z] 22:26:55     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 6 (7fc494c09800) [pid = 3433] [serial = 199] [outer = 7fc49521a580]
[task 2021-03-22T22:26:55.470Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fba13e38800 == 88 [pid = 3264] [id = 196]
[task 2021-03-22T22:26:55.471Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 186 (7fba35748ac0) [pid = 3264] [serial = 552] [outer = 0]
[task 2021-03-22T22:26:55.473Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 187 (7fba27eea800) [pid = 3264] [serial = 553] [outer = 7fba35748ac0]
[task 2021-03-22T22:26:55.511Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 188 (7fba2f4a3400) [pid = 3264] [serial = 554] [outer = 7fba35748ac0]
[task 2021-03-22T22:26:55.538Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: Failed to retarget HTML data delivery to the parser thread.: file /builds/worker/checkouts/gecko/parser/html/nsHtml5StreamParser.cpp:1299
[task 2021-03-22T22:26:55.539Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: 'aOwner->IsDiscarded()', file /builds/worker/workspace/obj-build/dist/include/mozilla/dom/SyncedContextInlines.h:92
[task 2021-03-22T22:26:55.788Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/base/nsContentUtils.cpp:3897
[task 2021-03-22T22:26:55.932Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:55.932Z] 22:26:55     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:56.155Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f62d349bc00 == 9 [pid = 3339] [id = 31] [url = moz-extension://dad536cd-34d5-4143-841f-f578dc40297e/options.html]
[task 2021-03-22T22:26:56.156Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 35 (7f62cc639000) [pid = 3339] [serial = 57] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.156Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 34 (7f62cc884800) [pid = 3339] [serial = 62] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.157Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 33 (7f62cc63c000) [pid = 3339] [serial = 59] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.158Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f62caa56000 == 8 [pid = 3339] [id = 32] [url = moz-extension://44868322-febc-4bb3-bb1f-521a8e2af7fe/_generated_background_page.html]
[task 2021-03-22T22:26:56.158Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 32 (7f62cc890000) [pid = 3339] [serial = 64] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.159Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 31 (7f62d3492400) [pid = 3339] [serial = 65] [outer = 0] [url = moz-extension://7ffa1030-7db3-4fb8-9df4-ce9c70d55c38/options.html]
[task 2021-03-22T22:26:56.160Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 30 (7f62d3507800) [pid = 3339] [serial = 70] [outer = 0] [url = moz-extension://7ffa1030-7db3-4fb8-9df4-ce9c70d55c38/options.html]
[task 2021-03-22T22:26:56.161Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 29 (7f62cc88d000) [pid = 3339] [serial = 60] [outer = 0] [url = moz-extension://7ffa1030-7db3-4fb8-9df4-ce9c70d55c38/_generated_background_page.html]
[task 2021-03-22T22:26:56.161Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 28 (7f62d3496800) [pid = 3339] [serial = 69] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.162Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 27 (7f62cd3ba800) [pid = 3339] [serial = 67] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.163Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f62cd3bd000 == 7 [pid = 3339] [id = 28] [url = about:blank]
[task 2021-03-22T22:26:56.166Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f62d349b800 == 6 [pid = 3339] [id = 30] [url = about:blank]
[task 2021-03-22T22:26:56.167Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f62cc887000 == 5 [pid = 3339] [id = 29] [url = moz-extension://dad536cd-34d5-4143-841f-f578dc40297e/options.html]
[task 2021-03-22T22:26:56.325Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 26 (7f62e9c63900) [pid = 3339] [serial = 74] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.326Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 25 (7f62cc6ab040) [pid = 3339] [serial = 79] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.327Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 24 (7f62e9c63ac0) [pid = 3339] [serial = 76] [outer = 0] [url = moz-extension://dad536cd-34d5-4143-841f-f578dc40297e/options.html]
[task 2021-03-22T22:26:56.327Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 23 (7f62cb672040) [pid = 3339] [serial = 84] [outer = 0] [url = moz-extension://44868322-febc-4bb3-bb1f-521a8e2af7fe/_generated_background_page.html]
[task 2021-03-22T22:26:56.328Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 22 (7f62cc6ab200) [pid = 3339] [serial = 81] [outer = 0] [url = moz-extension://dad536cd-34d5-4143-841f-f578dc40297e/options.html]
[task 2021-03-22T22:26:56.329Z] 22:26:56     INFO - GECKO(3264) | [Child 3339: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 21 (7f62cb6723c0) [pid = 3339] [serial = 71] [outer = 0] [url = moz-extension://dad536cd-34d5-4143-841f-f578dc40297e/_generated_background_page.html]
[task 2021-03-22T22:26:56.646Z] 22:26:56     INFO - GECKO(3264) | [Child 3321: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 4 (7f4520775c00) [pid = 3321] [serial = 161] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:56.648Z] 22:26:56     INFO - GECKO(3264) | [Child 3321: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7f4520775000 == 1 [pid = 3321] [id = 74] [url = about:blank]
[task 2021-03-22T22:26:56.690Z] 22:26:56     INFO - GECKO(3264) | [Child 3321: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 3 (7f4520d133c0) [pid = 3321] [serial = 162] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:57.704Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.706Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.803Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.804Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.839Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.839Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.856Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.856Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.912Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.912Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.928Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.928Z] 22:26:57     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:57.984Z] 22:26:57     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7fc494c03400 == 1 [pid = 3433] [id = 96] [url = about:blank]
[task 2021-03-22T22:26:57.984Z] 22:26:57     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOCSHELL 7fc494c03800 == 0 [pid = 3433] [id = 97] [url = about:blank]
[task 2021-03-22T22:26:58.060Z] 22:26:58     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 5 (7fc49521a3c0) [pid = 3433] [serial = 194] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:58.060Z] 22:26:58     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 4 (7fc49521a200) [pid = 3433] [serial = 196] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:58.060Z] 22:26:58     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 3 (7fc49521a580) [pid = 3433] [serial = 198] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:58.081Z] 22:26:58     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:58.081Z] 22:26:58     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.113Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.114Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.202Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.203Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.246Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(uri) failed: file /builds/worker/checkouts/gecko/caps/BasePrincipal.cpp:1327
[task 2021-03-22T22:26:59.254Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: '!inner', file /builds/worker/checkouts/gecko/dom/ipc/jsactor/JSWindowActorProtocol.cpp:181
[task 2021-03-22T22:26:59.258Z] 22:26:59     INFO - GECKO(3264) | Manager window unload handler
[task 2021-03-22T22:26:59.273Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fc494c03000 == 1 [pid = 3433] [id = 98]
[task 2021-03-22T22:26:59.274Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 4 (7fc49521a200) [pid = 3433] [serial = 200] [outer = 0]
[task 2021-03-22T22:26:59.275Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 5 (7fc494c08000) [pid = 3433] [serial = 201] [outer = 7fc49521a200]
[task 2021-03-22T22:26:59.332Z] 22:26:59     INFO - GECKO(3264) | JavaScript error: resource://gre/actors/BrowserElementParent.jsm, line 24: TypeError: can't access property "ownerGlobal", browser is null
[task 2021-03-22T22:26:59.393Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 4 (7fc494c06400) [pid = 3433] [serial = 197] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:59.394Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 3 (7fc494c0ac00) [pid = 3433] [serial = 195] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:59.394Z] 22:26:59     INFO - GECKO(3264) | [Child 3433: Main Thread]: I/DocShellAndDOMWindowLeak --DOMWINDOW == 2 (7fc494c09800) [pid = 3433] [serial = 199] [outer = 0] [url = about:blank]
[task 2021-03-22T22:26:59.476Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOCSHELL 7fba13ba6c00 == 89 [pid = 3264] [id = 197]
[task 2021-03-22T22:26:59.477Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 189 (7fba3e881200) [pid = 3264] [serial = 555] [outer = 0]
[task 2021-03-22T22:26:59.477Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 190 (7fba31987800) [pid = 3264] [serial = 556] [outer = 7fba3e881200]
[task 2021-03-22T22:26:59.500Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264: Main Thread]: I/DocShellAndDOMWindowLeak ++DOMWINDOW == 191 (7fba3346f400) [pid = 3264] [serial = 557] [outer = 7fba3e881200]
[task 2021-03-22T22:26:59.520Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: Failed to retarget HTML data delivery to the parser thread.: file /builds/worker/checkouts/gecko/parser/html/nsHtml5StreamParser.cpp:1299
[task 2021-03-22T22:26:59.520Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: 'aOwner->IsDiscarded()', file /builds/worker/workspace/obj-build/dist/include/mozilla/dom/SyncedContextInlines.h:92
[task 2021-03-22T22:26:59.699Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005 (NS_ERROR_FAILURE): file /builds/worker/checkouts/gecko/dom/base/nsContentUtils.cpp:3897
[task 2021-03-22T22:26:59.861Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.862Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.970Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:26:59.971Z] 22:26:59     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:27:00.076Z] 22:27:00     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:27:00.076Z] 22:27:00     INFO - GECKO(3264) | [Parent 3264, Main Thread] WARNING: NS_ENSURE_TRUE(GetOwner() && !mCanceled) failed: file /builds/worker/checkouts/gecko/image/imgRequestProxy.cpp:909
[task 2021-03-22T22:27:00.147Z] 22:27:00     INFO - GECKO(3264) | Assertion failure: kind != BailoutKind::Unknown, at /builds/worker/checkouts/gecko/js/src/jit/shared/Lowering-shared.cpp:275
[task 2021-03-22T22:27:00.155Z] 22:27:00     INFO - GECKO(3264) | ExceptionHandler::GenerateDump cloned child 3638
[task 2021-03-22T22:27:00.155Z] 22:27:00     INFO - GECKO(3264) | ExceptionHandler::SendContinueSignalToChild sent continue signal to child
[task 2021-03-22T22:27:00.156Z] 22:27:00     INFO - GECKO(3264) | ExceptionHandler::WaitForContinueSignal waiting for continue signal...
[task 2021-03-22T22:27:00.320Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.321Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.323Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.330Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.331Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.331Z] 22:27:00     INFO - GECKO(3264) | Exiting due to channel error.
[task 2021-03-22T22:27:00.369Z] 22:27:00     INFO - TEST-INFO | Main app process: exit 11
[task 2021-03-22T22:27:00.370Z] 22:27:00    ERROR - TEST-UNEXPECTED-FAIL | ShutdownLeaks | process() called before end of test suite
[task 2021-03-22T22:27:00.370Z] 22:27:00     INFO - TEST-INFO | Confirming we saw 419 DOCSHELL created and 322 destroyed log strings.
[task 2021-03-22T22:27:00.370Z] 22:27:00     INFO - TEST-INFO | Confirming we saw 1040 DOMWINDOW created and 821 destroyed log strings.
[task 2021-03-22T22:27:00.371Z] 22:27:00     INFO - Buffered messages logged at 22:26:53
[task 2021-03-22T22:27:00.371Z] 22:27:00     INFO - Entering test bound setup
[task 2021-03-22T22:27:00.371Z] 22:27:00     INFO - Registering mock add-on provider
[task 2021-03-22T22:27:00.372Z] 22:27:00     INFO - Leaving test bound setup
...
...
...
Flags: needinfo?(iireland)

There was a bug in the last patch ("Support pruning with OSR"). In guessPhiType, we were checking whether an operand was a phi (and potentially continueing) before checking whether we should set the hasNonOSRInputs flag, so if a phi had only unspecialized phi inputs of unknown type, we would assume that all inputs were OsrValues and incorrectly return MIRType::Value. Normally this would only be a performance concern, but in this case the phi was used as the input to a TruncateToInt32 with BailoutKind::Unknown, and we asserted when trying to create a snapshot when truncating the value.

The fix is to change the order of the checks in guessPhiType.

Flags: needinfo?(iireland)
Pushed by iireland@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/50b32f28a14f
Remove dead branch-pruning code r=nbp
https://hg.mozilla.org/integration/autoland/rev/be2b98a1aa27
Prune branches based on unconditional bailouts r=nbp
https://hg.mozilla.org/integration/autoland/rev/35ca4a4cf919
Refactor FlagAllOperandsAsHavingRemovedUses r=nbp
https://hg.mozilla.org/integration/autoland/rev/bbf7a6fa7e6c
Add MBasicBlock::NewFakeLoopPredecessor r=nbp
https://hg.mozilla.org/integration/autoland/rev/e44a1e9ce9de
Support pruning with OSR r=nbp
Status: RESOLVED → REOPENED
Flags: needinfo?(iireland)
Resolution: FIXED → ---
Target Milestone: 89 Branch → ---

Fuzz testcase in bug 1700616.

Flags: needinfo?(iireland)
Pushed by iireland@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/084ceb68d16d
Remove dead branch-pruning code r=nbp
https://hg.mozilla.org/integration/autoland/rev/a36bee113e48
Prune branches based on unconditional bailouts r=nbp
https://hg.mozilla.org/integration/autoland/rev/b289d69e6843
Refactor FlagAllOperandsAsHavingRemovedUses r=nbp
https://hg.mozilla.org/integration/autoland/rev/ac9daf52a238
Add MBasicBlock::NewFakeLoopPredecessor r=nbp
https://hg.mozilla.org/integration/autoland/rev/99e240ed41c1
Support pruning with OSR r=nbp
Regressions: 1700616
Regressions: 1701208
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: