Index: src/arm/code-stubs-arm.cc |
=================================================================== |
--- src/arm/code-stubs-arm.cc (revision 10035) |
+++ src/arm/code-stubs-arm.cc (working copy) |
@@ -5815,15 +5815,12 @@ |
// r3: from index (untagged smi) |
// r6 (a.k.a. to): to (smi) |
// r7 (a.k.a. from): from offset (smi) |
- Label allocate_slice, sliced_string, seq_string; |
- STATIC_ASSERT(kSeqStringTag == 0); |
- __ tst(r1, Operand(kStringRepresentationMask)); |
- __ b(eq, &seq_string); |
+ 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); |
__ tst(r1, Operand(kIsIndirectStringMask)); |
- // External string. Jump to runtime. |
- __ b(eq, &runtime); |
+ __ b(eq, &seq_or_external_string); |
__ tst(r1, Operand(kSlicedNotConsMask)); |
__ b(ne, &sliced_string); |
@@ -5842,8 +5839,8 @@ |
__ ldr(r5, FieldMemOperand(r0, 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(r5, r0); |
__ bind(&allocate_slice); |