Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 0f8d79406739ac5d45479c398a24cfc06f78df3e..568ada8a1165e3c1d2989263cb6ba03cf8df1288 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -5560,16 +5560,17 @@ RUNTIME_FUNCTION(Runtime_StoreArrayLiteralElement) { |
HeapNumber* number = HeapNumber::cast(*value); |
double_array->set(store_index, number->Number()); |
} else { |
- ASSERT(IsFastSmiElementsKind(elements_kind) || |
- IsFastDoubleElementsKind(elements_kind)); |
- ElementsKind transitioned_kind = IsFastHoleyElementsKind(elements_kind) |
- ? FAST_HOLEY_ELEMENTS |
- : FAST_ELEMENTS; |
- JSObject::TransitionElementsKind(object, transitioned_kind); |
- if (IsMoreGeneralElementsKindTransition( |
- boilerplate_object->GetElementsKind(), |
- transitioned_kind)) { |
- JSObject::TransitionElementsKind(boilerplate_object, transitioned_kind); |
+ if (!IsFastObjectElementsKind(elements_kind)) { |
+ ElementsKind transitioned_kind = IsFastHoleyElementsKind(elements_kind) |
+ ? FAST_HOLEY_ELEMENTS |
+ : FAST_ELEMENTS; |
+ JSObject::TransitionElementsKind(object, transitioned_kind); |
+ ElementsKind boilerplate_elements_kind = |
+ boilerplate_object->GetElementsKind(); |
+ if (IsMoreGeneralElementsKindTransition(boilerplate_elements_kind, |
+ transitioned_kind)) { |
+ JSObject::TransitionElementsKind(boilerplate_object, transitioned_kind); |
+ } |
} |
FixedArray* object_array = FixedArray::cast(object->elements()); |
object_array->set(store_index, *value); |