Index: src/deoptimizer.cc |
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc |
index dc9ffc51186be1c5535297c6adf77f9efbf922b1..253815a94362f6d89bf8d90471e64637e8409891 100644 |
--- a/src/deoptimizer.cc |
+++ b/src/deoptimizer.cc |
@@ -1696,13 +1696,25 @@ Handle<Object> Deoptimizer::MaterializeNextHeapObject() { |
Handle<Object> properties = MaterializeNextValue(); |
Handle<Object> elements = MaterializeNextValue(); |
object->set_properties(FixedArray::cast(*properties)); |
- object->set_elements(FixedArray::cast(*elements)); |
+ object->set_elements(FixedArrayBase::cast(*elements)); |
for (int i = 0; i < length - 3; ++i) { |
Handle<Object> value = MaterializeNextValue(); |
object->FastPropertyAtPut(i, *value); |
} |
break; |
} |
+ case JS_ARRAY_TYPE: { |
+ Handle<JSArray> object = |
+ isolate_->factory()->NewJSArray(0, map->elements_kind()); |
+ materialized_objects_->Add(object); |
+ Handle<Object> properties = MaterializeNextValue(); |
+ Handle<Object> elements = MaterializeNextValue(); |
+ Handle<Object> length = MaterializeNextValue(); |
+ object->set_properties(FixedArray::cast(*properties)); |
+ object->set_elements(FixedArrayBase::cast(*elements)); |
+ object->set_length(*length); |
+ break; |
+ } |
default: |
PrintF("[couldn't handle instance type %d]\n", map->instance_type()); |
UNREACHABLE(); |