3c3ce1bca8
The problem manifests itself when parsing manages to return something meaningful in the presence of a stack overflow. This happens because calling ParserBase::Next() will still return one valid token on stack overflow, before starting to return invalid tokens. Take the following input as example: a.map(v => v + 1); | | already next token parsed (which will be an invalid token (identifier) because of a stack overflow) The "v" may have been already parsed into a VariableProxy, then if a stack overflow occurs, next token will be an invalid token (instead of Token::ARROW), but the parser will return the VariableProxy. This always happens when lazy-parsing arrow functions, so the position in the input stream where the the arrow function code ends is known. This fix adds a check that ensures that parsing ended at the end position of the arrow function. BUG=465671 LOG=N Review URL: https://codereview.chromium.org/1023483003 Cr-Commit-Position: refs/heads/master@{#27325} |
||
---|---|---|
benchmarks | ||
build | ||
include | ||
samples | ||
src | ||
test | ||
testing | ||
third_party/binutils | ||
tools | ||
.clang-format | ||
.gitignore | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
codereview.settings | ||
DEPS | ||
LICENSE | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
Makefile | ||
Makefile.android | ||
Makefile.nacl | ||
OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
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://code.google.com/p/v8/
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/*