| Index: src/x64/full-codegen-x64.cc
|
| diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc
|
| index a1f3f4ec2a226572f145feb4ebfc7c236d44310f..a62462bec4dd3aeb7ecfa1a9d4261c8374d70259 100644
|
| --- a/src/x64/full-codegen-x64.cc
|
| +++ b/src/x64/full-codegen-x64.cc
|
| @@ -3558,7 +3558,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ cmpb(scratch, Immediate(kStringTag | kOneByteStringTag | kSeqStringTag));
|
| __ j(not_equal, &bailout);
|
| __ AddSmiField(string_length,
|
| - FieldOperand(string, SeqAsciiString::kLengthOffset));
|
| + FieldOperand(string, SeqOneByteString::kLengthOffset));
|
| __ j(overflow, &bailout);
|
| __ incl(index);
|
| __ cmpl(index, array_length);
|
| @@ -3605,7 +3605,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
|
|
| // Add (separator length times (array_length - 1)) to string_length.
|
| __ SmiToInteger32(scratch,
|
| - FieldOperand(string, SeqAsciiString::kLengthOffset));
|
| + FieldOperand(string, SeqOneByteString::kLengthOffset));
|
| __ decl(index);
|
| __ imull(scratch, index);
|
| __ j(overflow, &bailout);
|
| @@ -3618,10 +3618,10 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ AllocateAsciiString(result_pos, string_length, scratch,
|
| index, string, &bailout);
|
| __ movq(result_operand, result_pos);
|
| - __ lea(result_pos, FieldOperand(result_pos, SeqAsciiString::kHeaderSize));
|
| + __ lea(result_pos, FieldOperand(result_pos, SeqOneByteString::kHeaderSize));
|
|
|
| __ movq(string, separator_operand);
|
| - __ SmiCompare(FieldOperand(string, SeqAsciiString::kLengthOffset),
|
| + __ SmiCompare(FieldOperand(string, SeqOneByteString::kLengthOffset),
|
| Smi::FromInt(1));
|
| __ j(equal, &one_char_separator);
|
| __ j(greater, &long_separator);
|
| @@ -3647,7 +3647,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ SmiToInteger32(string_length,
|
| FieldOperand(string, String::kLengthOffset));
|
| __ lea(string,
|
| - FieldOperand(string, SeqAsciiString::kHeaderSize));
|
| + FieldOperand(string, SeqOneByteString::kHeaderSize));
|
| __ CopyBytes(result_pos, string, string_length);
|
| __ incl(index);
|
| __ bind(&loop_1_condition);
|
| @@ -3665,7 +3665,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ bind(&one_char_separator);
|
| // Get the separator ASCII character value.
|
| // Register "string" holds the separator.
|
| - __ movzxbl(scratch, FieldOperand(string, SeqAsciiString::kHeaderSize));
|
| + __ movzxbl(scratch, FieldOperand(string, SeqOneByteString::kHeaderSize));
|
| __ Set(index, 0);
|
| // Jump into the loop after the code that copies the separator, so the first
|
| // element is not preceded by a separator
|
| @@ -3691,7 +3691,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ SmiToInteger32(string_length,
|
| FieldOperand(string, String::kLengthOffset));
|
| __ lea(string,
|
| - FieldOperand(string, SeqAsciiString::kHeaderSize));
|
| + FieldOperand(string, SeqOneByteString::kHeaderSize));
|
| __ CopyBytes(result_pos, string, string_length);
|
| __ incl(index);
|
| __ cmpl(index, array_length_operand);
|
| @@ -3716,7 +3716,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ SmiToInteger32(scratch,
|
| FieldOperand(string, String::kLengthOffset));
|
| __ lea(string,
|
| - FieldOperand(string, SeqAsciiString::kHeaderSize));
|
| + FieldOperand(string, SeqOneByteString::kHeaderSize));
|
| __ movq(separator_operand, string);
|
|
|
| // Jump into the loop after the code that copies the separator, so the first
|
| @@ -3742,7 +3742,7 @@ void FullCodeGenerator::EmitFastAsciiArrayJoin(CallRuntime* expr) {
|
| __ SmiToInteger32(string_length,
|
| FieldOperand(string, String::kLengthOffset));
|
| __ lea(string,
|
| - FieldOperand(string, SeqAsciiString::kHeaderSize));
|
| + FieldOperand(string, SeqOneByteString::kHeaderSize));
|
| __ CopyBytes(result_pos, string, string_length);
|
| __ incq(index);
|
| __ j(not_equal, &loop_3); // Loop while (index < 0).
|
|
|