| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index 423a2e9eaf0be92f9a8da169c2156f3a2b850e8d..dd1af02cdad20036b410df2e4b23536c9f531fcd 100644
|
| --- a/src/mips/code-stubs-mips.cc
|
| +++ b/src/mips/code-stubs-mips.cc
|
| @@ -6026,15 +6026,13 @@ void SubStringStub::Generate(MacroAssembler* masm) {
|
| // a3: from index (untagged smi)
|
| // t2 (a.k.a. to): to (smi)
|
| // t3 (a.k.a. from): from offset (smi)
|
| - Label allocate_slice, sliced_string, seq_string;
|
| - STATIC_ASSERT(kSeqStringTag == 0);
|
| - __ And(t4, a1, Operand(kStringRepresentationMask));
|
| - __ Branch(&seq_string, eq, t4, Operand(zero_reg));
|
| + Label allocate_slice, sliced_string, seq_or_external_string;
|
| + // If the string is not indirect, it can only be sequential or external.
|
| STATIC_ASSERT(kIsIndirectStringMask == (kSlicedStringTag & kConsStringTag));
|
| STATIC_ASSERT(kIsIndirectStringMask != 0);
|
| __ And(t4, a1, Operand(kIsIndirectStringMask));
|
| // External string. Jump to runtime.
|
| - __ Branch(&sub_string_runtime, eq, t4, Operand(zero_reg));
|
| + __ Branch(&seq_or_external_string, eq, t4, Operand(zero_reg));
|
|
|
| __ And(t4, a1, Operand(kSlicedNotConsMask));
|
| __ Branch(&sliced_string, ne, t4, Operand(zero_reg));
|
| @@ -6052,8 +6050,8 @@ void SubStringStub::Generate(MacroAssembler* masm) {
|
| __ lw(t1, FieldMemOperand(v0, SlicedString::kParentOffset));
|
| __ jmp(&allocate_slice);
|
|
|
| - __ bind(&seq_string);
|
| - // Sequential string. Just move string to the right register.
|
| + __ bind(&seq_or_external_string);
|
| + // Sequential or external string. Just move string to the correct register.
|
| __ mov(t1, v0);
|
|
|
| __ bind(&allocate_slice);
|
|
|