diff options
author | Moonchild <moonchild@palemoon.org> | 2020-07-29 14:30:24 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2020-07-29 14:30:24 +0000 |
commit | a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57 (patch) | |
tree | 9df45decf2d7d940ff19641adea50fe7122805f7 /js | |
parent | 86b184b957ea2ce31e5ffc376e90cbc537963367 (diff) | |
parent | 2ee2ca7dfb0913eef79708dc4100f87b9557e128 (diff) | |
download | UXP-a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57.tar UXP-a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57.tar.gz UXP-a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57.tar.lz UXP-a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57.tar.xz UXP-a1ca8ca9bd1f4442dcbe613efa04f37a2c7b9f57.zip |
Merge branch 'redwood' into release
Diffstat (limited to 'js')
-rw-r--r-- | js/src/jit/IonBuilder.cpp | 8 | ||||
-rw-r--r-- | js/src/jit/Sink.cpp | 6 |
2 files changed, 9 insertions, 5 deletions
diff --git a/js/src/jit/IonBuilder.cpp b/js/src/jit/IonBuilder.cpp index f08baf865..3d0b73f04 100644 --- a/js/src/jit/IonBuilder.cpp +++ b/js/src/jit/IonBuilder.cpp @@ -3823,7 +3823,7 @@ IonBuilder::improveTypesAtTypeOfCompare(MCompare* ins, bool trueBranch, MTest* t tmp.addType(TypeSet::PrimitiveType(ValueTypeFromMIRType(subject->type())), alloc_->lifoAlloc()); } - if (inputTypes->unknown()) + if (inputTypes->unknown() || inputTypes->hasType(TypeSet::MagicArgType())) return true; // Note: we cannot remove the AnyObject type in the false branch, @@ -3905,7 +3905,7 @@ IonBuilder::improveTypesAtNullOrUndefinedCompare(MCompare* ins, bool trueBranch, tmp.addType(TypeSet::PrimitiveType(ValueTypeFromMIRType(subject->type())), alloc_->lifoAlloc()); } - if (inputTypes->unknown()) + if (inputTypes->unknown() || inputTypes->hasType(TypeSet::MagicArgType())) return true; TemporaryTypeSet* type; @@ -3969,7 +3969,7 @@ IonBuilder::improveTypesAtTest(MDefinition* ins, bool trueBranch, MTest* test) tmp.addType(TypeSet::PrimitiveType(ValueTypeFromMIRType(subject->type())), alloc_->lifoAlloc()); } - if (oldType->unknown()) + if (oldType->unknown() || oldType->hasType(TypeSet::MagicArgType())) return true; TemporaryTypeSet* type = nullptr; @@ -4049,7 +4049,7 @@ IonBuilder::improveTypesAtTest(MDefinition* ins, bool trueBranch, MTest* test) } // If ins does not have a typeset we return as we cannot optimize. - if (oldType->unknown()) + if (oldType->unknown() || oldType->hasType(TypeSet::MagicArgType())) return true; // Decide either to set or remove. diff --git a/js/src/jit/Sink.cpp b/js/src/jit/Sink.cpp index b2c36fae5..2764fc1cb 100644 --- a/js/src/jit/Sink.cpp +++ b/js/src/jit/Sink.cpp @@ -71,8 +71,12 @@ Sink(MIRGenerator* mir, MIRGraph& graph) for (MUseIterator i(ins->usesBegin()), e(ins->usesEnd()); i != e; i++) { hasUses = true; MNode* consumerNode = (*i)->consumer(); - if (consumerNode->isResumePoint()) + if (consumerNode->isResumePoint()) { + if (!consumerNode->toResumePoint()->isRecoverableOperand(*i)) { + hasLiveUses = true; + } continue; + } MDefinition* consumer = consumerNode->toDefinition(); if (consumer->isRecoveredOnBailout()) |