ca5055625f
Since the new space is always empty after a full GC, the old-to-new remembered set is also always empty after a full GC. This means we can get rid of the sweeping_slot_set_. This slot set was used to allow the main thread to insert into the old-to-new remembered set non-atomically. The sweeping slot set was owned by the sweeper, which deletes slots in free memory from it. The main thread would start with an empty old-to-new remembered set. After sweeping both slot sets are merged again. The sweeper now needs to behave differently during a GC. When sweeping a page during full GC, the sweeper needs to delete old-to-new-slots in free memory. Outside of the GC the sweeper isn't allowed to remove from the old-to-new slots anymore. This would race with the main thread that adds slots to that remembered set while the sweeper is running. However, there should be no recorded slots in free memory. DCHECKing this is tricky though, because we would need to synchronize with the main thread right-trimming objects and at least String::MakeThin only deletes slots after the map release-store. Bug: v8:12760 Change-Id: Ic0301851a714e894c3040595f456ab93b5875c81 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3560638 Reviewed-by: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#79713} |
||
---|---|---|
.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.