d5416b9918
TimeToSafepoint is the time needed for all background threads to enter a safepoint after the GC was started on the main thread. This CL improves that metric during concurrent compilation to bytecode by doing: 1) Park the LocalIsolate during InterpreterCompilationJob::ExecuteJobImpl. There are no concurrent heap accesses happening while generating bytecode for now. So instead of manually placing Safepoint() invocations in the code, simply park the local isolate. 2) Destroy the LocalIsolate before the ReleaseParser operation. I've seen this take around 2ms, which regressed TimeToSafepoint a lot. 3) Add explicit safepoints to concurrent allocations. This covers the rest of the code and from what I've seen so far this is good enough to keep TimeToSafepoint around a few microseconds. I've still seen TimeToSafepoint events with 20-80 microseconds but those were quite rare and always seemed to be related to Turbofan. AsLocalIsolate() is necessary in generic code to convert both Isolate and LocalIsolate to LocalIsolate. Bug: v8:10315 Change-Id: Idaf9f04ffdf850d0ab0081ec372cc384a9fe7ef9 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2663159 Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/master@{#72618} |
||
---|---|---|
.github | ||
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.flake8 | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
.vpython | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
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 | ||
MIPS_OWNERS | ||
OWNERS | ||
PPC_OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
RISCV_OWNERS | ||
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.