Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 9e6f7596e7fc60131cdaf956d07567854514e74b..a3dac34a4dbdfebcebae93404cd56f864dd0025c 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -4575,10 +4575,15 @@ void RegExpExecStub::Generate(MacroAssembler* masm) { |
Label cons_string, check_encoding; |
STATIC_ASSERT(kConsStringTag < kExternalStringTag); |
STATIC_ASSERT(kSlicedStringTag > kExternalStringTag); |
+ STATIC_ASSERT(kIsNotStringMask > kExternalStringTag); |
__ cmp(r1, Operand(kExternalStringTag)); |
__ b(lt, &cons_string); |
__ b(eq, &runtime); |
+ // Catch non-string subject (should already have been guarded against). |
+ __ tst(ebx, Immediate(kIsNotStringMask)); |
Lasse Reichstein
2011/11/24 09:31:57
If it should have been guarded against, then make
|
+ __ b(eq, &runtime); |
+ |
// String is sliced. |
__ ldr(r9, FieldMemOperand(subject, SlicedString::kOffsetOffset)); |
__ mov(r9, Operand(r9, ASR, kSmiTagSize)); |