Index: src/arm/codegen-arm.cc |
=================================================================== |
--- src/arm/codegen-arm.cc (revision 4200) |
+++ src/arm/codegen-arm.cc (working copy) |
@@ -7159,11 +7159,14 @@ |
int CompareStub::MinorKey() { |
- // Encode the three parameters in a unique 16 bit value. |
- ASSERT((static_cast<unsigned>(cc_) >> 26) < (1 << 16)); |
- int nnn_value = (never_nan_nan_ ? 2 : 0); |
- if (cc_ != eq) nnn_value = 0; // Avoid duplicate stubs. |
- return (static_cast<unsigned>(cc_) >> 26) | nnn_value | (strict_ ? 1 : 0); |
+ // Encode the three parameters in a unique 16 bit value. To avoid duplicate |
+ // stubs the never NaN NaN condition is only taken into account if the |
+ // condition is equals. |
+ ASSERT((static_cast<unsigned>(cc_) >> 28) < (1 << 14)); |
+ return ConditionField::encode(static_cast<unsigned>(cc_) >> 28) |
+ | StrictField::encode(strict_) |
+ | NeverNanNanField::encode(cc_ == eq ? never_nan_nan_ : false); |
+ |
} |