Go to file
Jakob Gruber 95e26e4916 Reland "[compiler] Track the maximal unoptimized frame size"
This is a reland of 1e472c423b

No change, this was a speculative revert to unblock the roll.

TBR=jgruber

Original change's description:
> [compiler] Track the maximal unoptimized frame size
>
> This is another step towards considering the unoptimized frame size in
> stack checks within optimized code.
>
> With the changes in this CL, we now keep track of the maximal
> unoptimized frame size of the function that is currently being
> compiled. An optimized function may inline multiple unoptimized
> functions, so a single optimized frame can deopt to multiple
> frames. The real frame size thus differs in different parts of the
> optimized function.
>
> We only care about the maximal frame size, which we calculate
> conservatively as an over-approximation, and track in
> InstructionSelector::max_unoptimized_frame_height_ for now. In future
> work, this value will be passed on to codegen, where it will be
> applied as an offset to the stack pointer during the stack check.
>
> (The motivation behind this is to avoid stack overflows through deopts,
> caused by size differences between optimized and unoptimized frames.)
>
> Note that this offset only ensure that the topmost optimized frame can
> deopt without overflowing the stack limit. That's fine, because we only
> deopt optimized frames one at a time. Other (non-topmost) frames are
> only deoptimized once they are returned to.
>
> Drive-by: Print variable and total frame height in --trace-deopt.
>
> Bug: v8:9534
> Change-Id: I821684a9da93bff59c20c8ab226105e7e12d93eb
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1762024
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Auto-Submit: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#63330}

Bug: v8:9534
Change-Id: I686f200e7be1f419e23e50789e11607a0b2886d9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1766645
Commit-Queue: Bill Budge <bbudge@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#63356}
2019-08-22 23:12:28 +00:00
benchmarks Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
build_overrides Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
custom_deps Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
docs Add OWNERS for docs/ 2019-05-15 12:06:15 +00:00
gni Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
include [api] Fix overflow in AdjustAmountOfExternalAllocatedMemory 2019-08-22 16:35:44 +00:00
infra [infra] add mozilla shards for {V8 Linux - arm - sim - debug} 2019-08-20 06:55:52 +00:00
samples [cleanup] Drop some occurrences of Isolate::Current 2019-06-26 19:39:21 +00:00
src Reland "[compiler] Track the maximal unoptimized frame size" 2019-08-22 23:12:28 +00:00
test [wasm-simd] Implement F64x2 min max for arm64 2019-08-22 21:01:26 +00:00
testing Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
third_party [DevTools] Roll inspector_protocol 2019-08-22 07:01:05 +00:00
tools [tools][torque]Improve postmortem API behavior on strings 2019-08-22 18:40:05 +00:00
.clang-format [clang-format] Don't derive pointer alignment 2017-01-17 09:28:19 +00:00
.clang-tidy [tool] Remove unfixed clang-tidy warnings to ease use. 2018-10-26 07:40:32 +00:00
.editorconfig Add .editorconfig 2017-07-28 13:39:24 +00:00
.flake8 Add .flake8 to allow for python style checking. 2019-07-19 21:44:03 +00:00
.git-blame-ignore-revs Add recent code rewrite to .git-blame-ignore-revs 2019-05-23 10:38:45 +00:00
.gitattributes .gitattributes: Mark minified emscripten js files as -diff 2018-09-19 16:27:10 +00:00
.gitignore [wasm-c-api] Un-.gitignore third_party/wasm-api/ 2019-06-17 08:52:37 +00:00
.gn [build] Dynamically decide if to use system xcode 2019-07-29 08:20:24 +00:00
.vpython [tools] Implement confidence-based number of runs 2019-05-09 09:42:28 +00:00
.ycm_extra_conf.py [ycm] Switch from gnu++11 to gnu++14 2017-11-27 07:48:21 +00:00
AUTHORS [wasm][anyref] fix decoding of table index immediates 2019-08-20 14:54:59 +00:00
BUILD.gn [builtins] Port RegExp SourceGetter to Torque 2019-08-21 18:17:20 +00:00
ChangeLog [release] Merge ChangeLog back to master 2018-12-07 15:41:59 +00:00
CODE_OF_CONDUCT.md
codereview.settings Make Gerrit the default code review for V8 2017-06-30 17:37:37 +00:00
COMMON_OWNERS [OWNERS] Add solanes@ to COMMON_OWNERS 2019-05-22 13:50:51 +00:00
DEPS Update V8 DEPS. 2019-08-22 21:44:18 +00:00
ENG_REVIEW_OWNERS Add eng review owners as escalation path 2019-05-15 19:12:10 +00:00
INFRA_OWNERS Clean up infra owners 2019-05-15 11:18:43 +00:00
INTL_OWNERS Add missing owners files 2019-05-31 07:21:01 +00:00
LICENSE [wasm] Draft version of C/C++ Wasm API 2019-04-17 16:00:26 +00:00
LICENSE.fdlibm Add LICENSE.fdlibm for all the fdlibm imported sources. 2016-06-09 07:17:03 +00:00
LICENSE.strongtalk
LICENSE.v8
LICENSE.valgrind
MIPS_OWNERS Move architecture dependent files 2019-05-28 14:02:15 +00:00
OWNERS Use relative paths to OWNERS files 2019-08-12 13:52:52 +00:00
PPC_OWNERS Move architecture dependent files 2019-05-28 14:02:15 +00:00
PRESUBMIT.py Reland "Move logging and diagnostics related source files" 2019-05-20 09:54:57 +00:00
README.md [docs] Change links from old wiki to v8.dev 2019-03-07 12:13:30 +00:00
S390_OWNERS Move architecture dependent files 2019-05-28 14:02:15 +00:00
WATCHLISTS Move remaining files in src/ 2019-05-24 18:24:36 +00:00

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.