Index: src/ic-arm.cc |
=================================================================== |
--- src/ic-arm.cc (revision 605) |
+++ src/ic-arm.cc (working copy) |
@@ -174,12 +174,13 @@ |
// Check that the object is a string. |
__ ldr(r1, FieldMemOperand(r0, HeapObject::kMapOffset)); |
__ ldrb(r1, FieldMemOperand(r1, Map::kInstanceTypeOffset)); |
+ __ mov(r3, Operand(r1)); |
__ and_(r1, r1, Operand(kIsNotStringMask)); |
// The cast is to resolve the overload for the argument of 0x0. |
__ cmp(r1, Operand(static_cast<int32_t>(kStringTag))); |
__ b(ne, &miss); |
- __ and_(r1, r1, Operand(kStringSizeMask)); |
+ __ and_(r1, r3, Operand(kStringSizeMask)); |
__ add(r1, r1, Operand(String::kHashShift)); |
// Load length directly from the string. |
__ ldr(r0, FieldMemOperand(r0, String::kLengthOffset)); |