Index: src/ia32/macro-assembler-ia32.cc |
diff --git a/src/ia32/macro-assembler-ia32.cc b/src/ia32/macro-assembler-ia32.cc |
index 989b83eadf9f64a0d4813c52ebde07a6f6801c04..98f18b27b91ddbd66d72384d1698a1a2e8af1460 100644 |
--- a/src/ia32/macro-assembler-ia32.cc |
+++ b/src/ia32/macro-assembler-ia32.cc |
@@ -2812,11 +2812,14 @@ void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register object1, |
void MacroAssembler::JumpIfNotUniqueName(Operand operand, |
Label* not_unique_name, |
Label::Distance distance) { |
- STATIC_ASSERT(((SYMBOL_TYPE - 1) & kIsInternalizedMask) == kInternalizedTag); |
- cmp(operand, Immediate(kInternalizedTag)); |
- j(less, not_unique_name, distance); |
- cmp(operand, Immediate(SYMBOL_TYPE)); |
- j(greater, not_unique_name, distance); |
+ STATIC_ASSERT(kInternalizedTag == 0 && kStringTag == 0); |
+ Label succeed; |
+ test(operand, Immediate(kIsNotStringMask | kIsNotInternalizedMask)); |
+ j(zero, &succeed); |
+ cmpb(operand, static_cast<uint8_t>(SYMBOL_TYPE)); |
+ j(not_equal, not_unique_name, distance); |
+ |
+ bind(&succeed); |
} |