Index: src/interpreter/bytecode-generator.cc |
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc |
index c35d77c907681f7e760233073b50a4e6df3d5b74..a999b9b157be2ce0c947eecf5036cffda36cb9c9 100644 |
--- a/src/interpreter/bytecode-generator.cc |
+++ b/src/interpreter/bytecode-generator.cc |
@@ -1624,6 +1624,7 @@ void BytecodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
RegisterAllocationScope inner_register_scope(this); |
Literal* key = property->key()->AsLiteral(); |
switch (property->kind()) { |
+ case ObjectLiteral::Property::SPREAD: |
case ObjectLiteral::Property::CONSTANT: |
UNREACHABLE(); |
case ObjectLiteral::Property::MATERIALIZED_LITERAL: |
@@ -1767,6 +1768,13 @@ void BytecodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
builder()->CallRuntime(function_id, args); |
break; |
} |
+ case ObjectLiteral::Property::SPREAD: { |
+ RegisterList args = register_allocator()->NewRegisterList(2); |
+ builder()->MoveRegister(literal, args[0]); |
+ VisitForRegisterValue(property->value(), args[1]); |
+ builder()->CallRuntime(Runtime::kCopyDataProperties, args); |
+ break; |
+ } |
case ObjectLiteral::Property::PROTOTYPE: |
UNREACHABLE(); // Handled specially above. |
break; |