mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1246229 - Enable DCE to remove OSR guards if their values are optimized-out. r=h4writer
This commit is contained in:
parent
55b85aaf23
commit
56d3c8e8f0
22
js/src/jit-test/tests/ion/osr-with-optimized-out.js
Normal file
22
js/src/jit-test/tests/ion/osr-with-optimized-out.js
Normal file
@ -0,0 +1,22 @@
|
||||
// |jit-test| --ion-offthread-compile=off;
|
||||
|
||||
// We disable any off-main thread compilation, and set a definite trigger for
|
||||
// Ion compilation, such that we can garantee that we would OSR into the inner
|
||||
// loop before we reach the end of the loop.
|
||||
setJitCompilerOption("ion.warmup.trigger", 30);
|
||||
|
||||
function f (n) {
|
||||
while (!inIon()) {
|
||||
var inner = 0;
|
||||
let x = {};
|
||||
for (var i = 0; i < n; i++) {
|
||||
inner += inIon() == true ? 1 : 0;
|
||||
if (inner <= 1)
|
||||
bailout();
|
||||
}
|
||||
assertEq(inner != 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Iterate enough to ensure that we OSR in this inner loop.
|
||||
f(300);
|
@ -950,7 +950,9 @@ jit::EliminateDeadResumePointOperands(MIRGenerator* mir, MIRGraph& graph)
|
||||
bool
|
||||
js::jit::DeadIfUnused(const MDefinition* def)
|
||||
{
|
||||
return !def->isEffectful() && !def->isGuard() && !def->isGuardRangeBailouts() &&
|
||||
return !def->isEffectful() &&
|
||||
(!def->isGuard() || def->block() == def->block()->graph().osrBlock()) &&
|
||||
!def->isGuardRangeBailouts() &&
|
||||
!def->isControlInstruction() &&
|
||||
(!def->isInstruction() || !def->toInstruction()->resumePoint());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user