5a70a5ea0a
Previously we used a FixedArray for the FeedbackMetadata, packing bits of information into Smi fields. On 64-bit platforms, we waste at least half of the available memory by using the Smi representation. Given that this is just raw data (no pointers), we can just use a new type that uses the existing packing scheme to store the data in int32 format instead. This CL changes FeedbackMetadata to a new subclass of HeapObject. This is to reduce the API surface exposed, in comparison to extending/using a more general purpose data structure like ByteArray, which is also just raw data. FeedbackMetadata only exposes general purpose methods for accessing slots, but hides the implementation detail of packing bits into int32 fields. This CL also introduces a sentinal EmptyFeedbackMetadata, because there are ~750 empty FeedbackMetadata objects when running an empty program in V8. These are probably for builtins. Bug: v8:7500 Change-Id: Ic85563153abbd71a22854cee8519260c32b1e9ab Reviewed-on: https://chromium-review.googlesource.com/945730 Commit-Queue: Peter Marshall <petermarshall@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#51842} |
||
---|---|---|
benchmarks | ||
build_overrides | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitignore | ||
.gn | ||
.vpython | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
DEPS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
snapshot_toolchain.gni | ||
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://github.com/v8/v8/wiki
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 on the V8 wiki.