Go to file
Olivier Flückiger 161ff8c112 Reland "[static-roots] Use static map range checks instead of instance types"
This is a reland of commit 77d08fcde5

Original change's description:
> [static-roots] Use static map range checks instead of instance types
>
> Some instance types, or type ranges, corresponds to a range of pointers
> in the static read only roots table. Instead of loading the instance
> type of a map it can therefore be beneficial to compare the map itself
> against this range.
>
> This CL adds:
>
> * Add infrastructure to compute and output a mapping of
>   `(instance_type_first, instance_type_last) ->
>      (map_ptr_first, map_ptr_last)` for interesting ranges.
> * Extend InstanceTypeChecker to use these ranges.
>
> For single instance types that map onto a range of maps it is not
> obvious which check is faster. Checking the map range saves a load,
> whereas checking the instance type saves an additional jump.
>
> Bug: v8:13466
> Change-Id: I670fc10fad9920645c0ce0d976ae7e7a13a86e60
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4188379
> Reviewed-by: Jakob Linke <jgruber@chromium.org>
> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
> Commit-Queue: Olivier Flückiger <olivf@chromium.org>
> Auto-Submit: Olivier Flückiger <olivf@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85599}

Bug: v8:13466
Change-Id: I0317a7b88e391e0a7502cc056a2fe691d294fba1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4217131
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
Auto-Submit: Olivier Flückiger <olivf@chromium.org>
Reviewed-by: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85614}
2023-02-02 10:43:34 +00:00
.github [github] Close PRs created on the V8 GitHub mirror automatically 2021-01-12 08:39:59 +00:00
bazel [bazel] Fix the icu build and buildifier warnings 2023-02-01 15:00:23 +00:00
build_overrides [build] Remove obsolete gn flag 2021-01-11 15:50:59 +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 [ios] Enable ability to run V8 in jitless mode on iOS device 2023-01-31 18:41:43 +00:00
include [wasm] Remove deprecated CPU timings in metrics 2023-02-01 14:29:41 +00:00
infra Configure PGO builders 2023-01-27 13:54:32 +00:00
samples [sandbox] Initialize sandbox during V8::Initialize 2022-07-15 09:29:32 +00:00
src Reland "[static-roots] Use static map range checks instead of instance types" 2023-02-02 10:43:34 +00:00
test [codegen] Merge Turbo and Macro assemblers 2023-02-02 09:27:45 +00:00
testing [test] Migrate cctest/test-api-accessors.cc to unittests/ 2022-05-17 08:27:55 +00:00
third_party [reland] adds the ability for v8 to use sin/cos from libm 2022-12-02 21:59:04 +00:00
tools Reland "[static-roots] Use static map range checks instead of instance types" 2023-02-02 10:43:34 +00:00
.bazelrc [bazel] Use v8_enable_handle_zapping only in debug builds. 2022-01-11 11:32:39 +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 remove swarming_client 2021-08-24 10:39:33 +00:00
.git-blame-ignore-revs [git blame] Add a few old refactors to .git-blame-ignore-revs 2023-01-04 15:43:38 +00:00
.gitattributes .gitattributes: Mark minified emscripten js files as -diff 2018-09-19 16:27:10 +00:00
.gitignore [tools] Improve run_perf.py 2023-01-31 10:24:16 +00:00
.gn [fuchsia] Add API target level default value 2022-08-29 14:46:45 +00:00
.mailmap Add .mailmap entries for jgruber 2022-08-04 08:53:02 +00:00
.style.yapf [tools] Add basic pointer compression to grokdump 2022-02-04 14:35:26 +00:00
.vpython3 Reland "[resultdb] Add ResultDB indicator" 2022-10-14 11:05:59 +00:00
.ycm_extra_conf.py [ycm] Fix YouCompleteMe config 2022-11-02 15:59:48 +00:00
AUTHORS Revert "[turbofan] Optimize access to the length property of functions" 2023-01-23 08:58:42 +00:00
BUILD.bazel [codegen] Merge Turbo and Macro assemblers 2023-02-02 09:27:45 +00:00
BUILD.gn [codegen] Merge Turbo and Macro assemblers 2023-02-02 09:27:45 +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 mliedtke to COMMON_OWNERS 2022-09-16 14:12:27 +00:00
DEPS Update V8 DEPS (trusted) 2023-02-02 03:49:40 +00:00
DIR_METADATA Add DIR_METADATA files to v8. 2020-10-20 22:12:28 +00:00
ENG_REVIEW_OWNERS Add mlippautz@ to ENG_REVIEW_OWNERS. 2022-10-06 18:48:33 +00:00
INFRA_OWNERS [infra] Add alexschulze@ as infra owner 2022-07-18 09:08:54 +00:00
INTL_OWNERS add ftang as owner 2020-04-24 19:19:36 +00:00
LICENSE [mips32] Delete mips32 from v8 2022-09-13 07:54:54 +00:00
LICENSE.fdlibm
LICENSE.strongtalk
LICENSE.v8
LOONG_OWNERS [LOONG64] Add LoongArch64 backend 2021-08-16 13:05:19 +00:00
MIPS_OWNERS [mips] Add LiuYu to MIPS_OWNERS 2021-09-08 01:38:52 +00:00
OWNERS Make .ycm_extra_conf owned by COMMON_OWNERS 2022-11-07 09:51:53 +00:00
PPC_OWNERS PPC/S390: cleanup owner files 2023-01-23 17:07:21 +00:00
PRESUBMIT.py [presubmit] Handle Windows path for header guard check 2022-12-13 17:30:02 +00:00
README.md [docs] Change links from old wiki to v8.dev 2019-03-07 12:13:30 +00:00
RISCV_OWNERS Add Lu Yahan to RISC-V owners list 2021-09-13 16:35:00 +00:00
S390_OWNERS PPC/S390: cleanup owner files 2023-01-23 17:07:21 +00:00
WATCHLISTS Add a WATCHLIST entry for trap-handler 2023-01-18 09:00:37 +00:00
WORKSPACE [bazel] Remove zlib dependency 2022-08-17 15:30:25 +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.