Index: src/mips/stub-cache-mips.cc |
diff --git a/src/mips/stub-cache-mips.cc b/src/mips/stub-cache-mips.cc |
index f8cf9704b1049d4efe812cc8f4036c016d3e366b..18a5f5f7e11d4f9efd696484ef9f54c96ad42a86 100644 |
--- a/src/mips/stub-cache-mips.cc |
+++ b/src/mips/stub-cache-mips.cc |
@@ -1585,29 +1585,16 @@ Handle<Code> CallStubCompiler::CompileArrayPushCall( |
__ jmp(&fast_object); |
// In case of fast smi-only, convert to fast object, otherwise bail out. |
__ bind(¬_fast_object); |
- __ CheckFastSmiElements(a3, t3, &call_builtin); |
+ __ CheckFastSmiOnlyElements(a3, t3, &call_builtin); |
// edx: receiver |
// r3: map |
- Label try_holey_map; |
- __ LoadTransitionedArrayMapConditional(FAST_SMI_ELEMENTS, |
+ __ LoadTransitionedArrayMapConditional(FAST_SMI_ONLY_ELEMENTS, |
FAST_ELEMENTS, |
a3, |
t3, |
- &try_holey_map); |
- __ mov(a2, receiver); |
- ElementsTransitionGenerator:: |
- GenerateMapChangeElementsTransition(masm()); |
- __ jmp(&fast_object); |
- |
- __ bind(&try_holey_map); |
- __ LoadTransitionedArrayMapConditional(FAST_HOLEY_SMI_ELEMENTS, |
- FAST_HOLEY_ELEMENTS, |
- a3, |
- t3, |
&call_builtin); |
__ mov(a2, receiver); |
- ElementsTransitionGenerator:: |
- GenerateMapChangeElementsTransition(masm()); |
+ ElementsTransitionGenerator::GenerateSmiOnlyToObject(masm()); |
__ bind(&fast_object); |
} else { |
__ CheckFastObjectElements(a3, a3, &call_builtin); |
@@ -3385,12 +3372,9 @@ static bool IsElementTypeSigned(ElementsKind elements_kind) { |
case EXTERNAL_FLOAT_ELEMENTS: |
case EXTERNAL_DOUBLE_ELEMENTS: |
- case FAST_SMI_ELEMENTS: |
+ case FAST_SMI_ONLY_ELEMENTS: |
case FAST_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
- case FAST_HOLEY_SMI_ELEMENTS: |
- case FAST_HOLEY_ELEMENTS: |
- case FAST_HOLEY_DOUBLE_ELEMENTS: |
case DICTIONARY_ELEMENTS: |
case NON_STRICT_ARGUMENTS_ELEMENTS: |
UNREACHABLE(); |
@@ -3524,11 +3508,8 @@ void KeyedLoadStubCompiler::GenerateLoadExternalArray( |
} |
break; |
case FAST_ELEMENTS: |
- case FAST_SMI_ELEMENTS: |
+ case FAST_SMI_ONLY_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
- case FAST_HOLEY_ELEMENTS: |
- case FAST_HOLEY_SMI_ELEMENTS: |
- case FAST_HOLEY_DOUBLE_ELEMENTS: |
case DICTIONARY_ELEMENTS: |
case NON_STRICT_ARGUMENTS_ELEMENTS: |
UNREACHABLE(); |
@@ -3888,11 +3869,8 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( |
} |
break; |
case FAST_ELEMENTS: |
- case FAST_SMI_ELEMENTS: |
+ case FAST_SMI_ONLY_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
- case FAST_HOLEY_ELEMENTS: |
- case FAST_HOLEY_SMI_ELEMENTS: |
- case FAST_HOLEY_DOUBLE_ELEMENTS: |
case DICTIONARY_ELEMENTS: |
case NON_STRICT_ARGUMENTS_ELEMENTS: |
UNREACHABLE(); |
@@ -3956,11 +3934,8 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( |
case EXTERNAL_FLOAT_ELEMENTS: |
case EXTERNAL_DOUBLE_ELEMENTS: |
case FAST_ELEMENTS: |
- case FAST_SMI_ELEMENTS: |
+ case FAST_SMI_ONLY_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
- case FAST_HOLEY_ELEMENTS: |
- case FAST_HOLEY_SMI_ELEMENTS: |
- case FAST_HOLEY_DOUBLE_ELEMENTS: |
case DICTIONARY_ELEMENTS: |
case NON_STRICT_ARGUMENTS_ELEMENTS: |
UNREACHABLE(); |
@@ -4131,11 +4106,8 @@ void KeyedStoreStubCompiler::GenerateStoreExternalArray( |
case EXTERNAL_FLOAT_ELEMENTS: |
case EXTERNAL_DOUBLE_ELEMENTS: |
case FAST_ELEMENTS: |
- case FAST_SMI_ELEMENTS: |
+ case FAST_SMI_ONLY_ELEMENTS: |
case FAST_DOUBLE_ELEMENTS: |
- case FAST_HOLEY_ELEMENTS: |
- case FAST_HOLEY_SMI_ELEMENTS: |
- case FAST_HOLEY_DOUBLE_ELEMENTS: |
case DICTIONARY_ELEMENTS: |
case NON_STRICT_ARGUMENTS_ELEMENTS: |
UNREACHABLE(); |
@@ -4314,7 +4286,7 @@ void KeyedStoreStubCompiler::GenerateStoreFastElement( |
// Check that the key is a smi or a heap number convertible to a smi. |
GenerateSmiKeyCheck(masm, key_reg, t0, t1, f2, &miss_force_generic); |
- if (IsFastSmiElementsKind(elements_kind)) { |
+ if (elements_kind == FAST_SMI_ONLY_ELEMENTS) { |
__ JumpIfNotSmi(value_reg, &transition_elements_kind); |
} |
@@ -4342,7 +4314,7 @@ void KeyedStoreStubCompiler::GenerateStoreFastElement( |
__ bind(&finish_store); |
- if (IsFastSmiElementsKind(elements_kind)) { |
+ if (elements_kind == FAST_SMI_ONLY_ELEMENTS) { |
__ Addu(scratch, |
elements_reg, |
Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
@@ -4351,7 +4323,7 @@ void KeyedStoreStubCompiler::GenerateStoreFastElement( |
__ Addu(scratch, scratch, scratch2); |
__ sw(value_reg, MemOperand(scratch)); |
} else { |
- ASSERT(IsFastObjectElementsKind(elements_kind)); |
+ ASSERT(elements_kind == FAST_ELEMENTS); |
__ Addu(scratch, |
elements_reg, |
Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
@@ -4360,6 +4332,7 @@ void KeyedStoreStubCompiler::GenerateStoreFastElement( |
__ Addu(scratch, scratch, scratch2); |
__ sw(value_reg, MemOperand(scratch)); |
__ mov(receiver_reg, value_reg); |
+ ASSERT(elements_kind == FAST_ELEMENTS); |
__ RecordWrite(elements_reg, // Object. |
scratch, // Address. |
receiver_reg, // Value. |