6b158455f4
Rather than letting a recursive macro expansion cause a stack overflow and crash the compiler, this change updates Torque to emit an error as soon as the recursion is detected. Eventually it would be nice to make Cast macros a little more magical so they don't require so much human effort to maintain, but at least this way Torque displays some information about what went wrong. An example error message (manually wrapped to 72 character width) follows. src/builtins/cast.tq:157:10: Torque Error: Recursive macro call to callable Cast<(class Context | Undefined | Zero)>(implicit class Context)(Object): (class Context | Undefined | Zero) src/builtins/cast.tq:758:3: Torque Error: Note: in specialization Cast<(class Context | Undefined | Zero)> requested here src/builtins/cast.tq:764:10: Torque Error: Note: in specialization Is<(class Context | Undefined | Zero), Object> requested here src/builtins/torque-internal.tq:64:3: Torque Error: Note: in specialization UnsafeCast<(class Context | Undefined | Zero)> requested here src/objects/contexts.tq:75:10: Torque Error: Note: in specialization ReferenceCast<(class Context | Undefined | Zero), Object> requested here src/builtins/iterator.tq:142:16: Torque Error: Note: in specialization ContextSlot<class Context, class Context, (class Context | Undefined | Zero)> requested here Bug: v8:11727 Change-Id: I7b5b1852dee16a6860f593f27783f6b2d9366146 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2965032 Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#75184} |
||
---|---|---|
.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 | ||
.vpython | ||
.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 | ||
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.