DescriptionParameterInitializerRewriter must maintain temporary variable order
When the rewriter moves a temporary variable between scopes, it must
be sure to maintain the order, so that the rewritten order is the
same as it would have been without rewriting.
To expose the difference in behavior, this patch removes the superfluous
visitation of ForOfStatement::each() from AstExpressionVisitor, which
happened to be the only thing keeping all the temporaries in order
in mjsunit/harmony/regress/regress-crbug-578038.js. Without the proper
order, this test would fail under --stress-opt, because the ".for"
variable (behind the "each" proxy) would get two different positions
in the scope, one on first parse (with rewriting) and the other on
second parse (lazy parsing for optimization).
A follow-up patch will remove each() and iterable() from ForOfStatement
altogether, but I wanted to keep this patch small to highlight exactly
the bit of code needed to make the test pass when not visiting each().
BUG=v8:4791
LOG=n
Committed: https://crrev.com/2d090ee46ad88272653873eec8b1bd465ce37b50
Cr-Commit-Position: refs/heads/master@{#36150}
Patch Set 1 #
Total comments: 1
Patch Set 2 : Rebased #Patch Set 3 : Leave nulls in temps_, indices are now unique #
Total comments: 4
Patch Set 4 : Nikolaos comments #
Messages
Total messages: 16 (6 generated)
|