833647b476
Prior to this CL the function prologue took roughly the first 340 bytes of any generated ML code object (release mode, x64). The prologue handles deoptimization, optimization, stack (and interrupt) checks, and stack frame setup including reserving and initializing space for stack locals. All this is now extracted to the MaglevOutOfLinePrologue builtin. Costs: - The extra unconditional builtin call at the start of ML code. - Only dynamic knowledge of # stack slots (so we can't unroll initialization loops as well as with static knowledge). - Some extra complexity due to frame and return address juggling. Benefits: - 340 bytes saved per code object (memory). - 340 bytes saved per code object (codegen time). - The prologue contains 5 reloc entries, with an ool prologue we don't have to iterate these at runtime. The ool prologue can be enabled/disabled with --maglev-ool-prologue (on by default). One option for the future is to move stack slot initialization back inline since it doesn't emit much code and benefits from static knowledge of stack layout. Bug: v8:7700 Change-Id: I182a9591e62d205de0223036ba8cb25e9c6a6347 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3934842 Commit-Queue: Jakob Linke <jgruber@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#83533} |
||
---|---|---|
.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 | ||
.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.