3ebbb651e2
.. and replace it by base::Optional<Code>. It's no longer needed, now that Code and InstructionStream cases are merged. This was trickier than it sounds at first, because: - CodeLookupResult (CLR) was used during the MARK_COMPACT GC phase and thus had to observe subtle semantics in the presence of forwarding pointers. - CLR implicitly contained a Code object for off_heap_trampolines and an InstructionStream object for everything else. These implicit behaviors threaded through elsewhere, e.g. in the inner-pointer-to-code cache which relies on the fact that the underlying object pointer does not move until GC completes and the cache is flushed. - Semantics of the dual-object {Code,InstructionStream} are generally very subtle during GC. This CL attempts to make all this more explicit by introducing a GcSafeCode wrapper type which must be used in code that is affected by semantics described above. The GcSafeCode type exposes only methods that are safe to call during MARK_COMPACT. Drive-by: - Rename the Heap::GcSafeFoo function family s.t. a 'GcSafe' prefix means that the function can be used during GC and returns GcSafeCode objects; and 'TryFind' vs. 'Find' returns a base::Optional<Foo> vs. just Foo. Bug: v8:13654 Change-Id: I410b5539ea1b584b823bce2dafd8d1328eedc039 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4203385 Auto-Submit: Jakob Linke <jgruber@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Commit-Queue: Jakob Linke <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#85562} |
||
---|---|---|
.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.