ParameterInitializerRewriter 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 Review-Url: https://codereview.chromium.org/1784893003 Cr-Commit-Position: refs/heads/master@{#36150}
Showing
Please
register
or
sign in
to comment