Index: src/code-stubs-hydrogen.cc |
diff --git a/src/code-stubs-hydrogen.cc b/src/code-stubs-hydrogen.cc |
index 16f4ac019ec47d456fdb81ec7dd2d013354c8cfb..9ea87abb54641383d35fc7df8d2b7fe1f1a01af9 100644 |
--- a/src/code-stubs-hydrogen.cc |
+++ b/src/code-stubs-hydrogen.cc |
@@ -541,21 +541,23 @@ HValue* CodeStubGraphBuilder<TransitionElementsKindStub>::BuildCodeStub() { |
Add<HTrapAllocationMemento>(js_array); |
} |
- HInstruction* array_length = |
- AddLoad(js_array, HObjectAccess::ForArrayLength()); |
- array_length->set_type(HType::Smi()); |
+ HInstruction* elements = AddLoadElements(js_array); |
+ |
+ HInstruction* empty_fixed_array = Add<HConstant>( |
+ isolate()->factory()->empty_fixed_array(), Representation::Tagged()); |
IfBuilder if_builder(this); |
- if_builder.IfNot<HCompareNumericAndBranch>(array_length, |
- graph()->GetConstant0(), |
- Token::EQ); |
- if_builder.Then(); |
+ if_builder.IfNot<HCompareObjectEqAndBranch>(elements, empty_fixed_array); |
- HInstruction* elements = AddLoadElements(js_array); |
+ if_builder.Then(); |
HInstruction* elements_length = AddLoadFixedArrayLength(elements); |
+ HInstruction* array_length = AddLoad( |
+ js_array, HObjectAccess::ForArrayLength(), NULL, Representation::Smi()); |
+ array_length->set_type(HType::Smi()); |
+ |
BuildGrowElementsCapacity(js_array, elements, from_kind, to_kind, |
array_length, elements_length); |