| 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..b08ee92b1bf556a6a4d6d295f2443ab5d6d1ff3e 100644
|
| --- a/src/ia32/macro-assembler-ia32.cc
|
| +++ b/src/ia32/macro-assembler-ia32.cc
|
| @@ -2798,7 +2798,8 @@ void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register object1,
|
| // Check that both are flat ASCII strings.
|
| const int kFlatAsciiStringMask =
|
| kIsNotStringMask | kStringRepresentationMask | kStringEncodingMask;
|
| - const int kFlatAsciiStringTag = ASCII_STRING_TYPE;
|
| + const int kFlatAsciiStringTag =
|
| + kStringTag | kOneByteStringTag | kSeqStringTag;
|
| // Interleave bits from both instance types and compare them in one check.
|
| ASSERT_EQ(0, kFlatAsciiStringMask & (kFlatAsciiStringMask << 3));
|
| and_(scratch1, kFlatAsciiStringMask);
|
| @@ -2812,11 +2813,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);
|
| }
|
|
|
|
|
| @@ -3163,10 +3167,10 @@ void MacroAssembler::CheckEnumCache(Label* call_runtime) {
|
| }
|
|
|
|
|
| -void MacroAssembler::TestJSArrayForAllocationSiteInfo(
|
| +void MacroAssembler::TestJSArrayForAllocationMemento(
|
| Register receiver_reg,
|
| Register scratch_reg) {
|
| - Label no_info_available;
|
| + Label no_memento_available;
|
|
|
| ExternalReference new_space_start =
|
| ExternalReference::new_space_start(isolate());
|
| @@ -3174,14 +3178,14 @@ void MacroAssembler::TestJSArrayForAllocationSiteInfo(
|
| ExternalReference::new_space_allocation_top_address(isolate());
|
|
|
| lea(scratch_reg, Operand(receiver_reg,
|
| - JSArray::kSize + AllocationSiteInfo::kSize - kHeapObjectTag));
|
| + JSArray::kSize + AllocationMemento::kSize - kHeapObjectTag));
|
| cmp(scratch_reg, Immediate(new_space_start));
|
| - j(less, &no_info_available);
|
| + j(less, &no_memento_available);
|
| cmp(scratch_reg, Operand::StaticVariable(new_space_allocation_top));
|
| - j(greater, &no_info_available);
|
| - cmp(MemOperand(scratch_reg, -AllocationSiteInfo::kSize),
|
| - Immediate(Handle<Map>(isolate()->heap()->allocation_site_info_map())));
|
| - bind(&no_info_available);
|
| + j(greater, &no_memento_available);
|
| + cmp(MemOperand(scratch_reg, -AllocationMemento::kSize),
|
| + Immediate(Handle<Map>(isolate()->heap()->allocation_memento_map())));
|
| + bind(&no_memento_available);
|
| }
|
|
|
|
|
|
|