| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index d214aeae354393267182aecefd23f478d6c45313..c56cccd12cc9cc30744d3575d186ea837e708f82 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -3486,6 +3486,37 @@ Handle<Object> TranslatedState::MaterializeAt(int frame_index,
|
| object->set_length(*length);
|
| return object;
|
| }
|
| + case FIXED_ARRAY_TYPE: {
|
| + Handle<Object> lengthObject = MaterializeAt(frame_index, value_index);
|
| + int32_t length = 0;
|
| + CHECK(lengthObject->ToInt32(&length));
|
| + Handle<FixedArray> object =
|
| + isolate_->factory()->NewFixedArray(length);
|
| + slot->value_ = object;
|
| + for (int i = 0; i < length; ++i) {
|
| + Handle<Object> value = MaterializeAt(frame_index, value_index);
|
| + object->set(i, *value);
|
| + }
|
| + return object;
|
| + }
|
| + case FIXED_DOUBLE_ARRAY_TYPE: {
|
| + Handle<Object> lengthObject = MaterializeAt(frame_index, value_index);
|
| + int32_t length = 0;
|
| + CHECK(lengthObject->ToInt32(&length));
|
| + Handle<FixedArrayBase> object =
|
| + isolate_->factory()->NewFixedDoubleArray(length);
|
| + slot->value_ = object;
|
| + if (length > 0) {
|
| + Handle<FixedDoubleArray> double_array =
|
| + Handle<FixedDoubleArray>::cast(object);
|
| + for (int i = 0; i < length; ++i) {
|
| + Handle<Object> value = MaterializeAt(frame_index, value_index);
|
| + CHECK(value->IsNumber());
|
| + double_array->set(i, value->Number());
|
| + }
|
| + }
|
| + return object;
|
| + }
|
| default:
|
| PrintF(stderr, "[couldn't handle instance type %d]\n",
|
| map->instance_type());
|
|
|