Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index ef90c10df0d1a2b414d630c724f8e14646a4ed00..5165e1fc6c4c1ddbc32039d4ac8d6d41f1984954 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -2798,7 +2798,11 @@ void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register object1, |
// Check that both are flat ASCII strings. |
const int kFlatAsciiStringMask = |
kIsNotStringMask | kStringRepresentationMask | kStringEncodingMask; |
- const int kFlatAsciiStringTag = ASCII_STRING_TYPE; |
+ // Use ASCII_INTERNALIZED_STRING_TYPE because it's internalized bit is zero. |
+ // Since we don't include that bit in the mask above, the test below will |
+ // succeed for ASCII_STRING_TYPE and ASCII_INTERNALIZED_STRING_TYPE. |
+ STATIC_ASSERT(kInternalizedTag == 0); |
+ const int kFlatAsciiStringTag = ASCII_INTERNALIZED_STRING_TYPE; |
// Interleave bits from both instance types and compare them in one check. |
ASSERT_EQ(0, kFlatAsciiStringMask & (kFlatAsciiStringMask << 3)); |
and_(scratch1, kFlatAsciiStringMask); |