| Index: src/ia32/ic-ia32.cc
|
| diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
|
| index f5ff341f434b402581cd4ab4de8c5e0f519a34fc..fdcaa65172cfa8fc907fa116a98a932155cae664 100644
|
| --- a/src/ia32/ic-ia32.cc
|
| +++ b/src/ia32/ic-ia32.cc
|
| @@ -72,8 +72,7 @@ static void GenerateStringDictionaryReceiverCheck(MacroAssembler* masm,
|
| // r1: used to hold receivers map.
|
|
|
| // Check that the receiver isn't a smi.
|
| - __ test(receiver, Immediate(kSmiTagMask));
|
| - __ j(zero, miss);
|
| + __ JumpIfSmi(receiver, miss);
|
|
|
| // Check that the receiver is a valid JS object.
|
| __ mov(r1, FieldOperand(receiver, HeapObject::kMapOffset));
|
| @@ -373,8 +372,7 @@ static void GenerateKeyedLoadReceiverCheck(MacroAssembler* masm,
|
| // map - used to hold the map of the receiver.
|
|
|
| // Check that the object isn't a smi.
|
| - __ test(receiver, Immediate(kSmiTagMask));
|
| - __ j(zero, slow);
|
| + __ JumpIfSmi(receiver, slow);
|
|
|
| // Get the map of the receiver.
|
| __ mov(map, FieldOperand(receiver, HeapObject::kMapOffset));
|
| @@ -475,8 +473,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| Label probe_dictionary, check_number_dictionary;
|
|
|
| // Check that the key is a smi.
|
| - __ test(eax, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &check_string);
|
| + __ JumpIfNotSmi(eax, &check_string);
|
| __ bind(&index_smi);
|
| // Now the key is known to be a smi. This place is also jumped to from
|
| // where a numeric string is converted to a smi.
|
| @@ -665,8 +662,7 @@ void KeyedLoadIC::GenerateIndexedInterceptor(MacroAssembler* masm) {
|
| Label slow;
|
|
|
| // Check that the receiver isn't a smi.
|
| - __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(zero, &slow);
|
| + __ JumpIfSmi(edx, &slow);
|
|
|
| // Check that the key is an array index, that is Uint32.
|
| __ test(eax, Immediate(kSmiTagMask | kSmiSignMask));
|
| @@ -710,8 +706,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| Label slow, fast, array, extra;
|
|
|
| // Check that the object isn't a smi.
|
| - __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(zero, &slow);
|
| + __ JumpIfSmi(edx, &slow);
|
| // Get the map from the receiver.
|
| __ mov(edi, FieldOperand(edx, HeapObject::kMapOffset));
|
| // Check that the receiver does not require access checks. We need
|
| @@ -720,8 +715,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| 1 << Map::kIsAccessCheckNeeded);
|
| __ j(not_zero, &slow);
|
| // Check that the key is a smi.
|
| - __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &slow);
|
| + __ JumpIfNotSmi(ecx, &slow);
|
| __ CmpInstanceType(edi, JS_ARRAY_TYPE);
|
| __ j(equal, &array);
|
| // Check that the object is some kind of JSObject.
|
| @@ -821,8 +815,7 @@ static void GenerateMonomorphicCacheProbe(MacroAssembler* masm,
|
| // to probe.
|
| //
|
| // Check for number.
|
| - __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(zero, &number);
|
| + __ JumpIfSmi(edx, &number);
|
| __ CmpObjectType(edx, HEAP_NUMBER_TYPE, ebx);
|
| __ j(not_equal, &non_number);
|
| __ bind(&number);
|
| @@ -869,8 +862,7 @@ static void GenerateFunctionTailCall(MacroAssembler* masm,
|
| // -----------------------------------
|
|
|
| // Check that the result is not a smi.
|
| - __ test(edi, Immediate(kSmiTagMask));
|
| - __ j(zero, miss);
|
| + __ JumpIfSmi(edi, miss);
|
|
|
| // Check that the value is a JavaScript function, fetching its map into eax.
|
| __ CmpObjectType(edi, JS_FUNCTION_TYPE, eax);
|
| @@ -951,8 +943,7 @@ static void GenerateCallMiss(MacroAssembler* masm,
|
| if (id == IC::kCallIC_Miss) {
|
| Label invoke, global;
|
| __ mov(edx, Operand(esp, (argc + 1) * kPointerSize)); // receiver
|
| - __ test(edx, Immediate(kSmiTagMask));
|
| - __ j(zero, &invoke, Label::kNear);
|
| + __ JumpIfSmi(edx, &invoke, Label::kNear);
|
| __ mov(ebx, FieldOperand(edx, HeapObject::kMapOffset));
|
| __ movzx_b(ebx, FieldOperand(ebx, Map::kInstanceTypeOffset));
|
| __ cmp(ebx, JS_GLOBAL_OBJECT_TYPE);
|
| @@ -1045,8 +1036,7 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| Label index_smi, index_string;
|
|
|
| // Check that the key is a smi.
|
| - __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &check_string);
|
| + __ JumpIfNotSmi(ecx, &check_string);
|
|
|
| __ bind(&index_smi);
|
| // Now the key is known to be a smi. This place is also jumped to from
|
| @@ -1157,8 +1147,7 @@ void KeyedCallIC::GenerateNormal(MacroAssembler* masm, int argc) {
|
|
|
| // Check if the name is a string.
|
| Label miss;
|
| - __ test(ecx, Immediate(kSmiTagMask));
|
| - __ j(zero, &miss);
|
| + __ JumpIfSmi(ecx, &miss);
|
| Condition cond = masm->IsObjectStringType(ecx, eax, eax);
|
| __ j(NegateCondition(cond), &miss);
|
| GenerateCallNormal(masm, argc);
|
| @@ -1343,8 +1332,7 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
|
| Register scratch = ebx;
|
|
|
| // Check that the receiver isn't a smi.
|
| - __ test(receiver, Immediate(kSmiTagMask));
|
| - __ j(zero, &miss);
|
| + __ JumpIfSmi(receiver, &miss);
|
|
|
| // Check that the object is a JS array.
|
| __ CmpObjectType(receiver, JS_ARRAY_TYPE, scratch);
|
| @@ -1358,8 +1346,7 @@ void StoreIC::GenerateArrayLength(MacroAssembler* masm) {
|
| __ j(not_equal, &miss);
|
|
|
| // Check that value is a smi.
|
| - __ test(value, Immediate(kSmiTagMask));
|
| - __ j(not_zero, &miss);
|
| + __ JumpIfNotSmi(value, &miss);
|
|
|
| // Prepare tail call to StoreIC_ArrayLength.
|
| __ pop(scratch);
|
|
|