mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 09:18:42 +09:00
SpiderMonkey optimizations
This commit is contained in:
parent
8046f8b4aa
commit
966fe69c7d
5 changed files with 451 additions and 65 deletions
|
|
@ -17,6 +17,7 @@
|
|||
#include "jit/LIR.h"
|
||||
#include "jit/Lowering.h"
|
||||
#include "jit/MIRGraph.h"
|
||||
#include "jit/RangeAnalysis.h"
|
||||
#include "vm/RegExpObject.h"
|
||||
#include "vm/SelfHosting.h"
|
||||
|
||||
|
|
@ -2955,9 +2956,19 @@ jit::ExtractLinearInequality(MTest* test, BranchDirection direction,
|
|||
MDefinition* lhs = compare->getOperand(0);
|
||||
MDefinition* rhs = compare->getOperand(1);
|
||||
|
||||
// TODO: optimize Compare_UInt32
|
||||
if (!compare->isInt32Comparison())
|
||||
return false;
|
||||
if (!compare->isInt32Comparison()) {
|
||||
if (compare->compareType() != MCompare::Compare_UInt32)
|
||||
return false;
|
||||
|
||||
Range* lhsRange = lhs->range();
|
||||
Range* rhsRange = rhs->range();
|
||||
if (!lhsRange || !rhsRange ||
|
||||
!lhsRange->isFiniteNonNegative() ||
|
||||
!rhsRange->isFiniteNonNegative())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
MOZ_ASSERT(lhs->type() == MIRType::Int32);
|
||||
MOZ_ASSERT(rhs->type() == MIRType::Int32);
|
||||
|
|
|
|||
|
|
@ -174,12 +174,20 @@ RangeAnalysis::addBetaNodes()
|
|||
if (!compare->isNumericComparison())
|
||||
continue;
|
||||
|
||||
// TODO: support unsigned comparisons
|
||||
if (compare->compareType() == MCompare::Compare_UInt32)
|
||||
continue;
|
||||
|
||||
MDefinition* left = compare->getOperand(0);
|
||||
MDefinition* right = compare->getOperand(1);
|
||||
|
||||
if (compare->compareType() == MCompare::Compare_UInt32) {
|
||||
Range* leftRange = left->range();
|
||||
Range* rightRange = right->range();
|
||||
if (!leftRange || !rightRange ||
|
||||
!leftRange->isFiniteNonNegative() ||
|
||||
!rightRange->isFiniteNonNegative())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
double bound;
|
||||
double conservativeLower = NegativeInfinity<double>();
|
||||
double conservativeUpper = PositiveInfinity<double>();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue