e16e8d8b98
* Move fixed temporary allocation before arbitrary input allocation, so that fixed temporaries don't accidentally clobber the arbitrary input register. Now the input allocation will pick a different register. * For the above, make temporary allocation 'block' the register with a sentinel value, rather than marking it free, so that the subsequent input allocation knows not to use those registers (including spilling into them). * Similarly, move arbitrary input allocation after phi resolution when allocating control nodes, since phis may have fixed requirements. * Allow deopts to spill their inputs if they are not in registers and not yet loadable. This is done during the equivalent of input allocation for deopts. * Allow there to be multiple targets for a single source during gap move collection / cycle detection. There can still only be a single source per target, therefore there can only be one cycle for each connected component -- this is DCHECKed. * Make register validation more complete -- also walk the entire graph, and check whether value nodes' result register states match the current register allocator state. * Add much more printing to --trace-maglev-regalloc because these bugs ain't easy to debug. Bug: v8:7700 Change-Id: Id98259c2920d772ce168bf27497162e78b136f9f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3714235 Auto-Submit: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#81252} |
||
---|---|---|
.github | ||
bazel | ||
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.bazelrc | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.flake8 | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
.mailmap | ||
.style.yapf | ||
.vpython | ||
.vpython3 | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.bazel | ||
BUILD.gn | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
COMMON_OWNERS | ||
DEPS | ||
DIR_METADATA | ||
ENG_REVIEW_OWNERS | ||
INFRA_OWNERS | ||
INTL_OWNERS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LOONG_OWNERS | ||
MIPS_OWNERS | ||
OWNERS | ||
PPC_OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
RISCV_OWNERS | ||
S390_OWNERS | ||
WATCHLISTS | ||
WORKSPACE |
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.