Index: src/interpreter/bytecode-generator.cc |
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc |
index 3820f4fb5a55a1fc9f6f3415858dee7ba181458a..330e638750bb156d609f16a21819d63b5853493f 100644 |
--- a/src/interpreter/bytecode-generator.cc |
+++ b/src/interpreter/bytecode-generator.cc |
@@ -1876,8 +1876,14 @@ void BytecodeGenerator::VisitObjectLiteral(ObjectLiteral* expr) { |
void BytecodeGenerator::VisitArrayLiteral(ArrayLiteral* expr) { |
// Deep-copy the literal boilerplate. |
+ int runtime_flags = expr->ComputeFlags(); |
+ bool use_fast_shallow_clone = |
+ (runtime_flags & ArrayLiteral::kShallowElements) != 0 && |
+ expr->values()->length() <= JSArray::kInitialMaxFastElementArray; |
+ uint8_t flags = |
+ CreateArrayLiteralFlags::Encode(use_fast_shallow_clone, runtime_flags); |
builder()->CreateArrayLiteral(expr->constant_elements(), |
- expr->literal_index(), expr->ComputeFlags()); |
+ expr->literal_index(), flags); |
Register index, literal; |
// Evaluate all the non-constant subexpressions and store them into the |