| Index: src/arm/macro-assembler-arm.cc
|
| diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc
|
| index f9d2fddd0b0fc9877691ae35db9b0a8da7c0efcd..92615e1bb59122b8acc4f5e4eef4355cccbf6682 100644
|
| --- a/src/arm/macro-assembler-arm.cc
|
| +++ b/src/arm/macro-assembler-arm.cc
|
| @@ -1990,12 +1990,10 @@ void MacroAssembler::AllocateTwoByteString(Register result,
|
| }
|
|
|
|
|
| -void MacroAssembler::AllocateAsciiString(Register result,
|
| - Register length,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Register scratch3,
|
| - Label* gc_required) {
|
| +void MacroAssembler::AllocateOneByteString(Register result, Register length,
|
| + Register scratch1, Register scratch2,
|
| + Register scratch3,
|
| + Label* gc_required) {
|
| // Calculate the number of bytes needed for the characters in the string while
|
| // observing object alignment.
|
| DCHECK((SeqOneByteString::kHeaderSize & kObjectAlignmentMask) == 0);
|
| @@ -2004,7 +2002,7 @@ void MacroAssembler::AllocateAsciiString(Register result,
|
| Operand(kObjectAlignmentMask + SeqOneByteString::kHeaderSize));
|
| and_(scratch1, scratch1, Operand(~kObjectAlignmentMask));
|
|
|
| - // Allocate ASCII string in new space.
|
| + // Allocate one-byte string in new space.
|
| Allocate(scratch1,
|
| result,
|
| scratch2,
|
| @@ -2013,11 +2011,8 @@ void MacroAssembler::AllocateAsciiString(Register result,
|
| TAG_OBJECT);
|
|
|
| // Set the map, length and hash field.
|
| - InitializeNewString(result,
|
| - length,
|
| - Heap::kAsciiStringMapRootIndex,
|
| - scratch1,
|
| - scratch2);
|
| + InitializeNewString(result, length, Heap::kOneByteStringMapRootIndex,
|
| + scratch1, scratch2);
|
| }
|
|
|
|
|
| @@ -2037,11 +2032,10 @@ void MacroAssembler::AllocateTwoByteConsString(Register result,
|
| }
|
|
|
|
|
| -void MacroAssembler::AllocateAsciiConsString(Register result,
|
| - Register length,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Label* gc_required) {
|
| +void MacroAssembler::AllocateOneByteConsString(Register result, Register length,
|
| + Register scratch1,
|
| + Register scratch2,
|
| + Label* gc_required) {
|
| Allocate(ConsString::kSize,
|
| result,
|
| scratch1,
|
| @@ -2049,11 +2043,8 @@ void MacroAssembler::AllocateAsciiConsString(Register result,
|
| gc_required,
|
| TAG_OBJECT);
|
|
|
| - InitializeNewString(result,
|
| - length,
|
| - Heap::kConsAsciiStringMapRootIndex,
|
| - scratch1,
|
| - scratch2);
|
| + InitializeNewString(result, length, Heap::kConsOneByteStringMapRootIndex,
|
| + scratch1, scratch2);
|
| }
|
|
|
|
|
| @@ -2073,19 +2064,16 @@ void MacroAssembler::AllocateTwoByteSlicedString(Register result,
|
| }
|
|
|
|
|
| -void MacroAssembler::AllocateAsciiSlicedString(Register result,
|
| - Register length,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Label* gc_required) {
|
| +void MacroAssembler::AllocateOneByteSlicedString(Register result,
|
| + Register length,
|
| + Register scratch1,
|
| + Register scratch2,
|
| + Label* gc_required) {
|
| Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
|
| TAG_OBJECT);
|
|
|
| - InitializeNewString(result,
|
| - length,
|
| - Heap::kSlicedAsciiStringMapRootIndex,
|
| - scratch1,
|
| - scratch2);
|
| + InitializeNewString(result, length, Heap::kSlicedOneByteStringMapRootIndex,
|
| + scratch1, scratch2);
|
| }
|
|
|
|
|
| @@ -3184,39 +3172,30 @@ void MacroAssembler::LookupNumberStringCache(Register object,
|
| }
|
|
|
|
|
| -void MacroAssembler::JumpIfNonSmisNotBothSequentialAsciiStrings(
|
| - Register first,
|
| - Register second,
|
| - Register scratch1,
|
| - Register scratch2,
|
| +void MacroAssembler::JumpIfNonSmisNotBothSequentialOneByteStrings(
|
| + Register first, Register second, Register scratch1, Register scratch2,
|
| Label* failure) {
|
| - // Test that both first and second are sequential ASCII strings.
|
| + // Test that both first and second are sequential one-byte strings.
|
| // Assume that they are non-smis.
|
| ldr(scratch1, FieldMemOperand(first, HeapObject::kMapOffset));
|
| ldr(scratch2, FieldMemOperand(second, HeapObject::kMapOffset));
|
| ldrb(scratch1, FieldMemOperand(scratch1, Map::kInstanceTypeOffset));
|
| ldrb(scratch2, FieldMemOperand(scratch2, Map::kInstanceTypeOffset));
|
|
|
| - JumpIfBothInstanceTypesAreNotSequentialAscii(scratch1,
|
| - scratch2,
|
| - scratch1,
|
| - scratch2,
|
| - failure);
|
| + JumpIfBothInstanceTypesAreNotSequentialOneByte(scratch1, scratch2, scratch1,
|
| + scratch2, failure);
|
| }
|
|
|
| -void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register first,
|
| - Register second,
|
| - Register scratch1,
|
| - Register scratch2,
|
| - Label* failure) {
|
| +void MacroAssembler::JumpIfNotBothSequentialOneByteStrings(Register first,
|
| + Register second,
|
| + Register scratch1,
|
| + Register scratch2,
|
| + Label* failure) {
|
| // Check that neither is a smi.
|
| and_(scratch1, first, Operand(second));
|
| JumpIfSmi(scratch1, failure);
|
| - JumpIfNonSmisNotBothSequentialAsciiStrings(first,
|
| - second,
|
| - scratch1,
|
| - scratch2,
|
| - failure);
|
| + JumpIfNonSmisNotBothSequentialOneByteStrings(first, second, scratch1,
|
| + scratch2, failure);
|
| }
|
|
|
|
|
| @@ -3386,34 +3365,31 @@ void MacroAssembler::RestoreFPRegs(Register location, Register scratch) {
|
| }
|
|
|
|
|
| -void MacroAssembler::JumpIfBothInstanceTypesAreNotSequentialAscii(
|
| - Register first,
|
| - Register second,
|
| - Register scratch1,
|
| - Register scratch2,
|
| +void MacroAssembler::JumpIfBothInstanceTypesAreNotSequentialOneByte(
|
| + Register first, Register second, Register scratch1, Register scratch2,
|
| Label* failure) {
|
| - const int kFlatAsciiStringMask =
|
| + const int kFlatOneByteStringMask =
|
| kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
|
| - const int kFlatAsciiStringTag =
|
| + const int kFlatOneByteStringTag =
|
| kStringTag | kOneByteStringTag | kSeqStringTag;
|
| - and_(scratch1, first, Operand(kFlatAsciiStringMask));
|
| - and_(scratch2, second, Operand(kFlatAsciiStringMask));
|
| - cmp(scratch1, Operand(kFlatAsciiStringTag));
|
| + and_(scratch1, first, Operand(kFlatOneByteStringMask));
|
| + and_(scratch2, second, Operand(kFlatOneByteStringMask));
|
| + cmp(scratch1, Operand(kFlatOneByteStringTag));
|
| // Ignore second test if first test failed.
|
| - cmp(scratch2, Operand(kFlatAsciiStringTag), eq);
|
| + cmp(scratch2, Operand(kFlatOneByteStringTag), eq);
|
| b(ne, failure);
|
| }
|
|
|
|
|
| -void MacroAssembler::JumpIfInstanceTypeIsNotSequentialAscii(Register type,
|
| - Register scratch,
|
| - Label* failure) {
|
| - const int kFlatAsciiStringMask =
|
| +void MacroAssembler::JumpIfInstanceTypeIsNotSequentialOneByte(Register type,
|
| + Register scratch,
|
| + Label* failure) {
|
| + const int kFlatOneByteStringMask =
|
| kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
|
| - const int kFlatAsciiStringTag =
|
| + const int kFlatOneByteStringTag =
|
| kStringTag | kOneByteStringTag | kSeqStringTag;
|
| - and_(scratch, type, Operand(kFlatAsciiStringMask));
|
| - cmp(scratch, Operand(kFlatAsciiStringTag));
|
| + and_(scratch, type, Operand(kFlatOneByteStringMask));
|
| + cmp(scratch, Operand(kFlatOneByteStringTag));
|
| b(ne, failure);
|
| }
|
|
|
| @@ -3827,8 +3803,8 @@ void MacroAssembler::EnsureNotWhite(
|
| mov(length, Operand(ExternalString::kSize), LeaveCC, ne);
|
| b(ne, &is_data_object);
|
|
|
| - // Sequential string, either ASCII or UC16.
|
| - // For ASCII (char-size of 1) we shift the smi tag away to get the length.
|
| + // Sequential string, either Latin1 or UC16.
|
| + // For Latin1 (char-size of 1) we shift the smi tag away to get the length.
|
| // For UC16 (char-size of 2) we just leave the smi tag in place, thereby
|
| // getting the length multiplied by 2.
|
| DCHECK(kOneByteStringTag == 4 && kStringEncodingMask == 4);
|
|
|