Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 1d1fe83c2fee9ae565381c5ccb206e5b78e7811e..5603de2ef3c6177afc8fdece0c6f1089fbf492ef 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -4647,12 +4647,7 @@ static void GenerateRecordCallTarget(MacroAssembler* masm) { |
// Special handling of the Array() function, which caches not only the |
// monomorphic Array function but the initial ElementsKind with special |
// sentinels |
- Handle<Object> terminal_kind_sentinel = |
- TypeFeedbackCells::MonomorphicArraySentinel(masm->isolate(), |
- LAST_FAST_ELEMENTS_KIND); |
__ JumpIfNotSmi(r3, &miss); |
- __ cmp(r3, Operand(terminal_kind_sentinel)); |
- __ b(gt, &miss); |
// Make sure the function is the Array() function |
__ LoadArrayFunction(r3); |
__ cmp(r1, r3); |
@@ -7192,6 +7187,10 @@ static void CreateArrayDispatchOneArgument(MacroAssembler* masm) { |
__ cmp(r2, Operand(undefined_sentinel)); |
__ b(eq, &normal_sequence); |
+ // The type cell may have gone megamorphic, don't overwrite if so |
+ __ ldr(r5, FieldMemOperand(r2, kPointerSize)); |
+ __ JumpIfNotSmi(r5, &normal_sequence); |
+ |
// Save the resulting elements kind in type info |
__ SmiTag(r3); |
__ str(r3, FieldMemOperand(r2, kPointerSize)); |