2d090ee46a
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} |
||
---|---|---|
benchmarks | ||
build_overrides | ||
docs | ||
gypfiles | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party/binutils | ||
tools | ||
.clang-format | ||
.gitignore | ||
.gn | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
DEPS | ||
LICENSE | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
Makefile | ||
Makefile.android | ||
Makefile.nacl | ||
OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
snapshot_toolchain.gni | ||
WATCHLISTS |
V8 JavaScript Engine
V8 is Google's open source JavaScript engine.
V8 implements ECMAScript as specified in ECMA-262.
V8 is written in C++ and is used in Google Chrome, the open source browser from Google.
V8 can run standalone, or can be embedded into any C++ application.
V8 Project page: https://github.com/v8/v8/wiki
Getting the Code
Checkout depot tools, and run
fetch v8
This will checkout V8 into the directory v8
and fetch all of its dependencies.
To stay up to date, run
git pull origin
gclient sync
For fetching all branches, add the following into your remote
configuration in .git/config
:
fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
fetch = +refs/tags/*:refs/tags/*
Contributing
Please follow the instructions mentioned on the V8 wiki.