0403003beb
In the existing code, whenever unreachable control instructions needed values from the stack which were not available, values of type kWasmVar were put on the stack. When these values were type-checked the first time, the expected type was assigned to them for later validation. This behavior has several draw-backs: * In an unobservable way, this implementation does not match the requirements of the spec. With the anyref proposal, this difference becomes observable. * Type checking functions were not read-only anymore, because if unreachable code was validated, the stack got manipulated in these functions. With the refactoring, I pulled out the handling of unreachable code out of the type checking functions. These checking functions can be validation-only functions. For type checking unreachable code, I start by popping values of the expected types off the stack. Thereby all available values on the stack get type-checked. Afterwards, I push all values again on the stack with the expected type if needed. This allows to continue the expected type checking for later instructions. R=clemensh@chromium.org Bug: v8:7581 Change-Id: Ib98e70a44bf9780626d4aa8a3e5fe8c2f230b787 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1645328 Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#62203} |
||
---|---|---|
benchmarks | ||
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
.vpython | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
COMMON_OWNERS | ||
DEPS | ||
ENG_REVIEW_OWNERS | ||
INFRA_OWNERS | ||
INTL_OWNERS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
MIPS_OWNERS | ||
OWNERS | ||
PPC_OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
S390_OWNERS | ||
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://v8.dev/docs
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 at v8.dev/docs/contribute.