| Index: src/x64/code-stubs-x64.cc
|
| diff --git a/src/x64/code-stubs-x64.cc b/src/x64/code-stubs-x64.cc
|
| index b04e1ff59834cbe2261e260dbbe279a6a958d256..3fc4e15e0560bd972527b731670e77e0a126fe81 100644
|
| --- a/src/x64/code-stubs-x64.cc
|
| +++ b/src/x64/code-stubs-x64.cc
|
| @@ -4084,22 +4084,22 @@ void StringCharCodeAtGenerator::GenerateFast(MacroAssembler* masm) {
|
| Heap::kEmptyStringRootIndex);
|
| __ j(not_equal, &call_runtime_);
|
| // Get the first of the two strings and load its instance type.
|
| - __ movq(object_, FieldOperand(object_, ConsString::kFirstOffset));
|
| + __ movq(kScratchRegister, FieldOperand(object_, ConsString::kFirstOffset));
|
| __ jmp(&assure_seq_string, Label::kNear);
|
|
|
| // SlicedString, unpack and add offset.
|
| __ bind(&sliced_string);
|
| __ addq(scratch_, FieldOperand(object_, SlicedString::kOffsetOffset));
|
| - __ movq(object_, FieldOperand(object_, SlicedString::kParentOffset));
|
| + __ movq(kScratchRegister, FieldOperand(object_, SlicedString::kParentOffset));
|
|
|
| __ bind(&assure_seq_string);
|
| - __ movq(result_, FieldOperand(object_, HeapObject::kMapOffset));
|
| + __ movq(result_, FieldOperand(kScratchRegister, HeapObject::kMapOffset));
|
| __ movzxbl(result_, FieldOperand(result_, Map::kInstanceTypeOffset));
|
| // If the first cons component is also non-flat, then go to runtime.
|
| STATIC_ASSERT(kSeqStringTag == 0);
|
| __ testb(result_, Immediate(kStringRepresentationMask));
|
| __ j(not_zero, &call_runtime_);
|
| - __ jmp(&flat_string);
|
| + __ movq(object_, kScratchRegister);
|
|
|
| // Check for 1-byte or 2-byte string.
|
| __ bind(&flat_string);
|
|
|