Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index d5013d7582addde1aaf74116551c5396837137d9..cebfb13727d54033e58f8c927aeea3c5f895c2f6 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -2706,17 +2706,15 @@ void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register object1, |
movzx_b(scratch2, FieldOperand(scratch2, Map::kInstanceTypeOffset)); |
// Check that both are flat ASCII strings. |
- const int kFlatAsciiStringMask = kIsNotStringMask | kStringRepresentationMask |
- | kStringEncodingMask | kAsciiDataHintTag; |
+ const int kFlatAsciiStringMask = |
+ kIsNotStringMask | kStringRepresentationMask | kStringEncodingMask; |
const int kFlatAsciiStringTag = ASCII_STRING_TYPE; |
// Interleave bits from both instance types and compare them in one check. |
- ASSERT_EQ(0, kFlatAsciiStringMask & (kFlatAsciiStringMask << 8)); |
- ASSERT_EQ(ASCII_STRING_TYPE, ASCII_STRING_TYPE & kFlatAsciiStringMask); |
+ ASSERT_EQ(0, kFlatAsciiStringMask & (kFlatAsciiStringMask << 3)); |
and_(scratch1, kFlatAsciiStringMask); |
and_(scratch2, kFlatAsciiStringMask); |
- shl(scratch1, 8); |
- or_(scratch1, scratch2); |
- cmp(scratch1, kFlatAsciiStringTag | (kFlatAsciiStringTag << 8)); |
+ lea(scratch1, Operand(scratch1, scratch2, times_8, 0)); |
+ cmp(scratch1, kFlatAsciiStringTag | (kFlatAsciiStringTag << 3)); |
j(not_equal, failure); |
} |