| Index: runtime/vm/intrinsifier_mips.cc
|
| ===================================================================
|
| --- runtime/vm/intrinsifier_mips.cc (revision 42554)
|
| +++ runtime/vm/intrinsifier_mips.cc (working copy)
|
| @@ -685,12 +685,12 @@
|
| }
|
|
|
|
|
| -static void CompareIntegers(Assembler* assembler, Condition true_condition) {
|
| +static void CompareIntegers(Assembler* assembler, RelationOperator rel_op) {
|
| Label try_mint_smi, is_true, is_false, drop_two_fall_through, fall_through;
|
| TestBothArgumentsSmis(assembler, &try_mint_smi);
|
| // T0 contains the right argument. T1 contains left argument
|
|
|
| - switch (true_condition) {
|
| + switch (rel_op) {
|
| case LT: __ BranchSignedLess(T1, T0, &is_true); break;
|
| case LE: __ BranchSignedLessEqual(T1, T0, &is_true); break;
|
| case GT: __ BranchSignedGreater(T1, T0, &is_true); break;
|
| @@ -718,8 +718,7 @@
|
| // T4: right low.
|
|
|
| // 64-bit comparison
|
| - // Condition hi_true_cond, hi_false_cond, lo_false_cond;
|
| - switch (true_condition) {
|
| + switch (rel_op) {
|
| case LT:
|
| case LE: {
|
| // Compare left hi, right high.
|
| @@ -726,7 +725,7 @@
|
| __ BranchSignedGreater(T3, T5, &is_false);
|
| __ BranchSignedLess(T3, T5, &is_true);
|
| // Compare left lo, right lo.
|
| - if (true_condition == LT) {
|
| + if (rel_op == LT) {
|
| __ BranchUnsignedGreaterEqual(T2, T4, &is_false);
|
| } else {
|
| __ BranchUnsignedGreater(T2, T4, &is_false);
|
| @@ -739,7 +738,7 @@
|
| __ BranchSignedLess(T3, T5, &is_false);
|
| __ BranchSignedGreater(T3, T5, &is_true);
|
| // Compare left lo, right lo.
|
| - if (true_condition == GT) {
|
| + if (rel_op == GT) {
|
| __ BranchUnsignedLessEqual(T2, T4, &is_false);
|
| } else {
|
| __ BranchUnsignedLess(T2, T4, &is_false);
|
| @@ -763,7 +762,7 @@
|
|
|
|
|
| void Intrinsifier::Integer_lessThan(Assembler* assembler) {
|
| - Integer_greaterThanFromInt(assembler);
|
| + CompareIntegers(assembler, LT);
|
| }
|
|
|
|
|
| @@ -1344,7 +1343,7 @@
|
| // type. Return true or false object in the register V0. Any NaN argument
|
| // returns false. Any non-double arg1 causes control flow to fall through to the
|
| // slow case (compiled method body).
|
| -static void CompareDoubles(Assembler* assembler, Condition true_condition) {
|
| +static void CompareDoubles(Assembler* assembler, RelationOperator rel_op) {
|
| Label is_smi, double_op, no_NaN, fall_through;
|
| __ Comment("CompareDoubles Intrinsic");
|
|
|
| @@ -1362,7 +1361,7 @@
|
| __ Ret();
|
| __ Bind(&no_NaN);
|
|
|
| - switch (true_condition) {
|
| + switch (rel_op) {
|
| case EQ: __ ceqd(D0, D1); break;
|
| case LT: __ coltd(D0, D1); break;
|
| case LE: __ coled(D0, D1); break;
|
|
|