Index: src/deoptimizer.cc |
diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc |
index c698459fd0396c4f4a50ec008f0430b053bb7fd5..857c1208012f6697292dc0d85167e3d35db5412f 100644 |
--- a/src/deoptimizer.cc |
+++ b/src/deoptimizer.cc |
@@ -3685,11 +3685,15 @@ Handle<Object> TranslatedState::MaterializeAt(int frame_index, |
return object; |
} |
case JS_OBJECT_TYPE: { |
- Handle<JSObject> object = |
- isolate_->factory()->NewJSObjectFromMap(map, NOT_TENURED); |
+ Handle<JSObject> object = isolate_->factory()->NewJSObjectFromMap( |
+ map->has_sloppy_arguments_elements() |
+ ? isolate()->sloppy_arguments_map() |
+ : map, |
+ NOT_TENURED); |
slot->value_ = object; |
Handle<Object> properties = MaterializeAt(frame_index, value_index); |
Handle<Object> elements = MaterializeAt(frame_index, value_index); |
+ object->set_map(*map); // Correct elements kind for sloppy arguments. |
object->set_properties(FixedArray::cast(*properties)); |
object->set_elements(FixedArrayBase::cast(*elements)); |
for (int i = 0; i < length - 3; ++i) { |