| Index: src/a64/lithium-codegen-a64.cc
|
| diff --git a/src/a64/lithium-codegen-a64.cc b/src/a64/lithium-codegen-a64.cc
|
| index 4766fa55fd078d3ad2d902732094fec8dc38cc0e..ad0ccfe8153e51afeea0811c688d509214e867a6 100644
|
| --- a/src/a64/lithium-codegen-a64.cc
|
| +++ b/src/a64/lithium-codegen-a64.cc
|
| @@ -4643,8 +4643,7 @@ MemOperand LCodeGen::BuildSeqStringOperand(Register string,
|
| STATIC_ASSERT(kCharSize == 1);
|
| return FieldMemOperand(string, SeqString::kHeaderSize + offset);
|
| }
|
| - ASSERT(!temp.is(string));
|
| - ASSERT(!temp.is(ToRegister(index)));
|
| +
|
| if (encoding == String::ONE_BYTE_ENCODING) {
|
| __ Add(temp, string, Operand(ToRegister32(index), SXTW));
|
| } else {
|
| @@ -4662,15 +4661,21 @@ void LCodeGen::DoSeqStringGetChar(LSeqStringGetChar* instr) {
|
| Register temp = ToRegister(instr->temp());
|
|
|
| if (FLAG_debug_code) {
|
| - __ Ldr(temp, FieldMemOperand(string, HeapObject::kMapOffset));
|
| - __ Ldrb(temp, FieldMemOperand(temp, Map::kInstanceTypeOffset));
|
| + // Even though this lithium instruction comes with a temp register, we
|
| + // can't use it here because we want to use "AtStart" constraints on the
|
| + // inputs and the debug code here needs a scratch register.
|
| + UseScratchRegisterScope temps(masm());
|
| + Register dbg_temp = temps.AcquireX();
|
| +
|
| + __ Ldr(dbg_temp, FieldMemOperand(string, HeapObject::kMapOffset));
|
| + __ Ldrb(dbg_temp, FieldMemOperand(dbg_temp, Map::kInstanceTypeOffset));
|
|
|
| - __ And(temp, temp,
|
| + __ And(dbg_temp, dbg_temp,
|
| Operand(kStringRepresentationMask | kStringEncodingMask));
|
| static const uint32_t one_byte_seq_type = kSeqStringTag | kOneByteStringTag;
|
| static const uint32_t two_byte_seq_type = kSeqStringTag | kTwoByteStringTag;
|
| - __ Cmp(temp, Operand(encoding == String::ONE_BYTE_ENCODING
|
| - ? one_byte_seq_type : two_byte_seq_type));
|
| + __ Cmp(dbg_temp, Operand(encoding == String::ONE_BYTE_ENCODING
|
| + ? one_byte_seq_type : two_byte_seq_type));
|
| __ Check(eq, kUnexpectedStringType);
|
| }
|
|
|
|
|