Fix spread array inside array literal
authoradamk <adamk@chromium.org>
Wed, 15 Jul 2015 15:16:09 +0000 (08:16 -0700)
committerCommit bot <commit-bot@chromium.org>
Wed, 15 Jul 2015 15:16:13 +0000 (15:16 +0000)
commit24e982816f75cb91b96b6c3aafbc6ab741afd118
tree8bf8438b86b7dfe9ccddcca8562bcfe560f74bd5
parent9c8f78e26fceae20f0088353b810484cf4d5c8be
Fix spread array inside array literal

During parsing, we now keep track of the first spread seen in an array
literal (if any), and make use of that information when creating the
FixedArray backing store representing the constant elements for array
literal materialization.

The old code tried to do this by setting the generated JSArray's length
in ArrayLiteral::BuildConstantElements(), but that Array length is never
read by the rest of the literal materialization code (it always uses
the length of the FixedArray backing store).

BUG=v8:4298
LOG=n

Review URL: https://codereview.chromium.org/1225223004

Cr-Commit-Position: refs/heads/master@{#29684}
src/ast.cc
src/ast.h
src/preparser.h
test/mjsunit/harmony/regress/regress-4298.js [new file with mode: 0644]