| Index: src/ia32/ic-ia32.cc
|
| diff --git a/src/ia32/ic-ia32.cc b/src/ia32/ic-ia32.cc
|
| index fa41349198dac0346b5effe25d2445429c6e714a..bde3b7e1a199486a6bdd04159e2215c69fe2bfb4 100644
|
| --- a/src/ia32/ic-ia32.cc
|
| +++ b/src/ia32/ic-ia32.cc
|
| @@ -93,7 +93,7 @@ static void GenerateStringDictionaryReceiverCheck(MacroAssembler* masm,
|
| __ j(not_zero, miss);
|
|
|
| __ mov(r0, FieldOperand(receiver, JSObject::kPropertiesOffset));
|
| - __ CheckMap(r0, FACTORY->hash_table_map(), miss, true);
|
| + __ CheckMap(r0, FACTORY->hash_table_map(), miss, DONT_DO_SMI_CHECK);
|
| }
|
|
|
|
|
| @@ -414,7 +414,10 @@ static void GenerateFastArrayLoad(MacroAssembler* masm,
|
| __ mov(scratch, FieldOperand(receiver, JSObject::kElementsOffset));
|
| if (not_fast_array != NULL) {
|
| // Check that the object is in fast mode and writable.
|
| - __ CheckMap(scratch, FACTORY->fixed_array_map(), not_fast_array, true);
|
| + __ CheckMap(scratch,
|
| + FACTORY->fixed_array_map(),
|
| + not_fast_array,
|
| + DONT_DO_SMI_CHECK);
|
| } else {
|
| __ AssertFastElements(scratch);
|
| }
|
| @@ -509,7 +512,10 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| // ebx: untagged index
|
| // eax: key
|
| // ecx: elements
|
| - __ CheckMap(ecx, isolate->factory()->hash_table_map(), &slow, true);
|
| + __ CheckMap(ecx,
|
| + isolate->factory()->hash_table_map(),
|
| + &slow,
|
| + DONT_DO_SMI_CHECK);
|
| Label slow_pop_receiver;
|
| // Push receiver on the stack to free up a register for the dictionary
|
| // probing.
|
| @@ -731,7 +737,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| // ecx: key (a smi)
|
| __ mov(edi, FieldOperand(edx, JSObject::kElementsOffset));
|
| // Check that the object is in fast mode and writable.
|
| - __ CheckMap(edi, FACTORY->fixed_array_map(), &slow, true);
|
| + __ CheckMap(edi, FACTORY->fixed_array_map(), &slow, DONT_DO_SMI_CHECK);
|
| __ cmp(ecx, FieldOperand(edi, FixedArray::kLengthOffset));
|
| __ j(below, &fast);
|
|
|
| @@ -765,7 +771,7 @@ void KeyedStoreIC::GenerateGeneric(MacroAssembler* masm,
|
| // edx: receiver, a JSArray
|
| // ecx: key, a smi.
|
| __ mov(edi, FieldOperand(edx, JSObject::kElementsOffset));
|
| - __ CheckMap(edi, FACTORY->fixed_array_map(), &slow, true);
|
| + __ CheckMap(edi, FACTORY->fixed_array_map(), &slow, DONT_DO_SMI_CHECK);
|
|
|
| // Check the key against the length in the array, compute the
|
| // address to store into and fall through to fast case.
|
| @@ -1049,7 +1055,10 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| // eax: elements
|
| // ecx: smi key
|
| // Check whether the elements is a number dictionary.
|
| - __ CheckMap(eax, isolate->factory()->hash_table_map(), &slow_load, true);
|
| + __ CheckMap(eax,
|
| + isolate->factory()->hash_table_map(),
|
| + &slow_load,
|
| + DONT_DO_SMI_CHECK);
|
| __ mov(ebx, ecx);
|
| __ SmiUntag(ebx);
|
| // ebx: untagged index
|
| @@ -1090,7 +1099,7 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| __ CheckMap(ebx,
|
| isolate->factory()->hash_table_map(),
|
| &lookup_monomorphic_cache,
|
| - true);
|
| + DONT_DO_SMI_CHECK);
|
|
|
| GenerateDictionaryLoad(masm, &slow_load, ebx, ecx, eax, edi, edi);
|
| __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1);
|
|
|