Index: src/interpreter/bytecode-generator.cc |
diff --git a/src/interpreter/bytecode-generator.cc b/src/interpreter/bytecode-generator.cc |
index 53a216ea4c9b66a142f9e34b7c7f447d0bace5a7..2e922530f192746b8d8daf2bf0c1bd970ff496a4 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 must_use_runtime = |
+ (runtime_flags & ArrayLiteral::kShallowElements) == 0 || |
+ expr->values()->length() > JSArray::kInitialMaxFastElementArray; |
+ uint8_t flags = |
+ CreateArrayLiteralFlags::Encode(must_use_runtime, 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 |