Index: src/arm/full-codegen-arm.cc |
diff --git a/src/arm/full-codegen-arm.cc b/src/arm/full-codegen-arm.cc |
index 50544dea4347669f9857fac8fab5e6d0902122f8..b6267c91e73bdb11c4ee010b5e0c864c73f8b392 100644 |
--- a/src/arm/full-codegen-arm.cc |
+++ b/src/arm/full-codegen-arm.cc |
@@ -3624,7 +3624,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
__ ldr(scratch1, FieldMemOperand(string, HeapObject::kMapOffset)); |
__ ldrb(scratch1, FieldMemOperand(scratch1, Map::kInstanceTypeOffset)); |
__ JumpIfInstanceTypeIsNotSequentialAscii(scratch1, scratch2, &bailout); |
- __ ldr(scratch1, FieldMemOperand(string, SeqAsciiString::kLengthOffset)); |
+ __ ldr(scratch1, FieldMemOperand(string, SeqOneByteString::kLengthOffset)); |
__ add(string_length, string_length, Operand(scratch1), SetCC); |
__ b(vs, &bailout); |
__ cmp(element, elements_end); |
@@ -3653,7 +3653,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
// Add (separator length times array_length) - separator length to the |
// string_length to get the length of the result string. array_length is not |
// smi but the other values are, so the result is a smi |
- __ ldr(scratch1, FieldMemOperand(separator, SeqAsciiString::kLengthOffset)); |
+ __ ldr(scratch1, FieldMemOperand(separator, SeqOneByteString::kLengthOffset)); |
__ sub(string_length, string_length, Operand(scratch1)); |
__ smull(scratch2, ip, array_length, scratch1); |
// Check for smi overflow. No overflow if higher 33 bits of 64-bit result are |
@@ -3691,10 +3691,10 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
array_length = no_reg; |
__ add(result_pos, |
result, |
- Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); |
+ Operand(SeqOneByteString::kHeaderSize - kHeapObjectTag)); |
// Check the length of the separator. |
- __ ldr(scratch1, FieldMemOperand(separator, SeqAsciiString::kLengthOffset)); |
+ __ ldr(scratch1, FieldMemOperand(separator, SeqOneByteString::kLengthOffset)); |
__ cmp(scratch1, Operand(Smi::FromInt(1))); |
__ b(eq, &one_char_separator); |
__ b(gt, &long_separator); |
@@ -3710,7 +3710,9 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
__ ldr(string, MemOperand(element, kPointerSize, PostIndex)); |
__ ldr(string_length, FieldMemOperand(string, String::kLengthOffset)); |
__ SmiUntag(string_length); |
- __ add(string, string, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); |
+ __ add(string, |
+ string, |
+ Operand(SeqOneByteString::kHeaderSize - kHeapObjectTag)); |
__ CopyBytes(string, result_pos, string_length, scratch1); |
__ cmp(element, elements_end); |
__ b(lt, &empty_separator_loop); // End while (element < elements_end). |
@@ -3720,7 +3722,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
// One-character separator case |
__ bind(&one_char_separator); |
// Replace separator with its ASCII character value. |
- __ ldrb(separator, FieldMemOperand(separator, SeqAsciiString::kHeaderSize)); |
+ __ ldrb(separator, FieldMemOperand(separator, SeqOneByteString::kHeaderSize)); |
// Jump into the loop after the code that copies the separator, so the first |
// element is not preceded by a separator |
__ jmp(&one_char_separator_loop_entry); |
@@ -3740,7 +3742,9 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
__ ldr(string, MemOperand(element, kPointerSize, PostIndex)); |
__ ldr(string_length, FieldMemOperand(string, String::kLengthOffset)); |
__ SmiUntag(string_length); |
- __ add(string, string, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); |
+ __ add(string, |
+ string, |
+ Operand(SeqOneByteString::kHeaderSize - kHeapObjectTag)); |
__ CopyBytes(string, result_pos, string_length, scratch1); |
__ cmp(element, elements_end); |
__ b(lt, &one_char_separator_loop); // End while (element < elements_end). |
@@ -3761,14 +3765,16 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) { |
__ SmiUntag(string_length); |
__ add(string, |
separator, |
- Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); |
+ Operand(SeqOneByteString::kHeaderSize - kHeapObjectTag)); |
__ CopyBytes(string, result_pos, string_length, scratch1); |
__ bind(&long_separator); |
__ ldr(string, MemOperand(element, kPointerSize, PostIndex)); |
__ ldr(string_length, FieldMemOperand(string, String::kLengthOffset)); |
__ SmiUntag(string_length); |
- __ add(string, string, Operand(SeqAsciiString::kHeaderSize - kHeapObjectTag)); |
+ __ add(string, |
+ string, |
+ Operand(SeqOneByteString::kHeaderSize - kHeapObjectTag)); |
__ CopyBytes(string, result_pos, string_length, scratch1); |
__ cmp(element, elements_end); |
__ b(lt, &long_separator_loop); // End while (element < elements_end). |