| 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.
|
|
|