Index: src/x64/codegen-x64.cc |
=================================================================== |
--- src/x64/codegen-x64.cc (revision 4200) |
+++ src/x64/codegen-x64.cc (working copy) |
@@ -9105,11 +9105,13 @@ |
int CompareStub::MinorKey() { |
- // Encode the three parameters in a unique 16 bit value. |
+ // 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_) < (1 << 14)); |
- int nnn_value = (never_nan_nan_ ? 2 : 0); |
- if (cc_ != equal) nnn_value = 0; // Avoid duplicate stubs. |
- return (static_cast<unsigned>(cc_) << 2) | nnn_value | (strict_ ? 1 : 0); |
+ return ConditionField::encode(static_cast<unsigned>(cc_)) |
+ | StrictField::encode(strict_) |
+ | NeverNanNanField::encode(cc_ == equal ? never_nan_nan_ : false); |
} |