Index: src/arm/stub-cache-arm.cc |
diff --git a/src/arm/stub-cache-arm.cc b/src/arm/stub-cache-arm.cc |
index 7b652d30f58fbde0da9b53b37f7822031923f184..d060b774a6bd9c6fea7fc6c4064c403e8342efef 100644 |
--- a/src/arm/stub-cache-arm.cc |
+++ b/src/arm/stub-cache-arm.cc |
@@ -189,8 +189,7 @@ void StubCache::GenerateProbe(MacroAssembler* masm, |
ASSERT(!extra2.is(no_reg)); |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(receiver, &miss); |
// Get the map of the receiver and compute the hash. |
__ ldr(scratch, FieldMemOperand(name, String::kHashFieldOffset)); |
@@ -282,8 +281,7 @@ void StubCompiler::GenerateLoadArrayLength(MacroAssembler* masm, |
Register scratch, |
Label* miss_label) { |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, miss_label); |
+ __ JumpIfSmi(receiver, miss_label); |
// Check that the object is a JS array. |
__ CompareObjectType(receiver, scratch, scratch, JS_ARRAY_TYPE); |
@@ -305,8 +303,7 @@ static void GenerateStringCheck(MacroAssembler* masm, |
Label* smi, |
Label* non_string_object) { |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, smi); |
+ __ JumpIfSmi(receiver, smi); |
// Check that the object is a string. |
__ ldr(scratch1, FieldMemOperand(receiver, HeapObject::kMapOffset)); |
@@ -381,8 +378,7 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
Label exit; |
// Check that the receiver isn't a smi. |
- __ tst(receiver_reg, Operand(kSmiTagMask)); |
- __ b(eq, miss_label); |
+ __ JumpIfSmi(receiver_reg, miss_label); |
// Check that the map of the receiver hasn't changed. |
__ ldr(scratch, FieldMemOperand(receiver_reg, HeapObject::kMapOffset)); |
@@ -431,8 +427,7 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
__ str(r0, FieldMemOperand(receiver_reg, offset)); |
// Skip updating write barrier if storing a smi. |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, &exit); |
+ __ JumpIfSmi(r0, &exit); |
// Update the write barrier for the array address. |
// Pass the now unused name_reg as a scratch register. |
@@ -445,8 +440,7 @@ void StubCompiler::GenerateStoreField(MacroAssembler* masm, |
__ str(r0, FieldMemOperand(scratch, offset)); |
// Skip updating write barrier if storing a smi. |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, &exit); |
+ __ JumpIfSmi(r0, &exit); |
// Update the write barrier for the array address. |
// Ok to clobber receiver_reg and name_reg, since we return. |
@@ -1165,8 +1159,7 @@ void StubCompiler::GenerateLoadField(JSObject* object, |
String* name, |
Label* miss) { |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, miss); |
+ __ JumpIfSmi(receiver, miss); |
// Check that the maps haven't changed. |
Register reg = |
@@ -1187,8 +1180,7 @@ void StubCompiler::GenerateLoadConstant(JSObject* object, |
String* name, |
Label* miss) { |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, miss); |
+ __ JumpIfSmi(receiver, miss); |
// Check that the maps haven't changed. |
Register reg = |
@@ -1212,8 +1204,7 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object, |
String* name, |
Label* miss) { |
// Check that the receiver isn't a smi. |
- __ tst(receiver, Operand(kSmiTagMask)); |
- __ b(eq, miss); |
+ __ JumpIfSmi(receiver, miss); |
// Check that the maps haven't changed. |
Register reg = |
@@ -1426,8 +1417,7 @@ void CallStubCompiler::GenerateGlobalReceiverCheck(JSObject* object, |
// object which can only happen for contextual calls. In this case, |
// the receiver cannot be a smi. |
if (object != holder) { |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, miss); |
+ __ JumpIfSmi(r0, miss); |
} |
// Check that the maps haven't changed. |
@@ -1449,8 +1439,7 @@ void CallStubCompiler::GenerateLoadFunctionFromCell(JSGlobalPropertyCell* cell, |
// the nice side effect that multiple closures based on the same |
// function can all use this call IC. Before we load through the |
// function, we have to verify that it still is a function. |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, miss); |
+ __ JumpIfSmi(r1, miss); |
__ CompareObjectType(r1, r3, r3, JS_FUNCTION_TYPE); |
__ b(ne, miss); |
@@ -1495,8 +1484,7 @@ MaybeObject* CallStubCompiler::CompileCallField(JSObject* object, |
// Get the receiver of the function from the stack into r0. |
__ ldr(r0, MemOperand(sp, argc * kPointerSize)); |
// Check that the receiver isn't a smi. |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r0, &miss); |
// Do the right check and compute the holder register. |
Register reg = CheckPrototypes(object, r0, holder, r1, r3, r4, name, &miss); |
@@ -1967,8 +1955,7 @@ MaybeObject* CallStubCompiler::CompileStringFromCharCodeCall( |
__ ldr(r1, MemOperand(sp, 1 * kPointerSize)); |
STATIC_ASSERT(kSmiTag == 0); |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r1, &miss); |
CheckPrototypes(JSObject::cast(object), r1, holder, r0, r3, r4, name, |
&miss); |
@@ -1985,8 +1972,7 @@ MaybeObject* CallStubCompiler::CompileStringFromCharCodeCall( |
// Check the code is a smi. |
Label slow; |
STATIC_ASSERT(kSmiTag == 0); |
- __ tst(code, Operand(kSmiTagMask)); |
- __ b(ne, &slow); |
+ __ JumpIfNotSmi(code, &slow); |
// Convert the smi code to uint16. |
__ and_(code, code, Operand(Smi::FromInt(0xffff))); |
@@ -2188,8 +2174,7 @@ MaybeObject* CallStubCompiler::CompileMathAbsCall(Object* object, |
__ ldr(r1, MemOperand(sp, 1 * kPointerSize)); |
STATIC_ASSERT(kSmiTag == 0); |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r1, &miss); |
CheckPrototypes(JSObject::cast(object), r1, holder, r0, r3, r4, name, |
&miss); |
@@ -2292,8 +2277,7 @@ MaybeObject* CallStubCompiler::CompileFastApiCall( |
__ ldr(r1, MemOperand(sp, argc * kPointerSize)); |
// Check that the receiver isn't a smi. |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss_before_stack_reserved); |
+ __ JumpIfSmi(r1, &miss_before_stack_reserved); |
__ IncrementCounter(counters->call_const(), 1, r0, r3); |
__ IncrementCounter(counters->call_const_fast_api(), 1, r0, r3); |
@@ -2347,8 +2331,7 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, |
// Check that the receiver isn't a smi. |
if (check != NUMBER_CHECK) { |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r1, &miss); |
} |
// Make sure that it's okay not to patch the on stack receiver |
@@ -2398,8 +2381,7 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, |
} else { |
Label fast; |
// Check that the object is a smi or a heap number. |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &fast); |
+ __ JumpIfSmi(r1, &fast); |
__ CompareObjectType(r1, r0, r0, HEAP_NUMBER_TYPE); |
__ b(ne, &miss); |
__ bind(&fast); |
@@ -2619,8 +2601,7 @@ MaybeObject* StoreStubCompiler::CompileStoreCallback(JSObject* object, |
Label miss; |
// Check that the object isn't a smi. |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r1, &miss); |
// Check that the map of the object hasn't changed. |
__ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset)); |
@@ -2667,8 +2648,7 @@ MaybeObject* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver, |
Label miss; |
// Check that the object isn't a smi. |
- __ tst(r1, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r1, &miss); |
// Check that the map of the object hasn't changed. |
__ ldr(r3, FieldMemOperand(r1, HeapObject::kMapOffset)); |
@@ -2759,8 +2739,7 @@ MaybeObject* LoadStubCompiler::CompileLoadNonexistent(String* name, |
Label miss; |
// Check that receiver is not a smi. |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r0, &miss); |
// Check the maps of the full prototype chain. |
CheckPrototypes(object, r0, last, r3, r1, r4, name, &miss); |
@@ -2904,8 +2883,7 @@ MaybeObject* LoadStubCompiler::CompileLoadGlobal(JSObject* object, |
// object which can only happen for contextual calls. In this case, |
// the receiver cannot be a smi. |
if (object != holder) { |
- __ tst(r0, Operand(kSmiTagMask)); |
- __ b(eq, &miss); |
+ __ JumpIfSmi(r0, &miss); |
} |
// Check that the map of the global has not changed. |
@@ -3289,8 +3267,7 @@ MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |
// r1: constructor function |
// r7: undefined |
__ ldr(r2, FieldMemOperand(r1, JSFunction::kPrototypeOrInitialMapOffset)); |
- __ tst(r2, Operand(kSmiTagMask)); |
- __ b(eq, &generic_stub_call); |
+ __ JumpIfSmi(r2, &generic_stub_call); |
__ CompareObjectType(r2, r3, r4, MAP_TYPE); |
__ b(ne, &generic_stub_call); |