275402260c
We have to create WasmExportedFunction objects for any WebAssembly function which may escape a WebAssembly instance. Up until now we created these WasmExportedFunction objects eagerly during instantiation time: for any exported function, and any element in an exported table we create such an object. With the anyref proposal, the table.get instruction can allow any function in a table to escape its instance. Therefore we would have to create a WasmExportedFunction object for any function which is put into a table. With this CL we create WasmExportedFunctions for table entries lazily. We initialize tables with placeholders consisting of the instance and the function index. If we encounter a placeholder in table.get, we create the WasmExportedFunction for the expected function to return it. R=mstarzinger@chromium.org CC=titzer@chromium.org Bug: v8:7581 Change-Id: I4f32bd7433285d0b04a22c0fb70b736bac55b3f1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1505575 Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ben Titzer <titzer@chromium.org> Commit-Queue: Andreas Haas <ahaas@chromium.org> Cr-Commit-Position: refs/heads/master@{#60115} |
||
---|---|---|
benchmarks | ||
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.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://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.