| 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).
 | 
| 
 |