5cfe053e45
The two cases we are fixing here are Construct and LoadCallerFrameSlot, which are closely related. Construct is called during PrepareCall, where we build up LiftoffStackSlots when we need to move an arg from caller's stack frame into callee's stack frame. LoadCallerFrameSlot is the parallel to this, called in ProcessParameter during decoding of the callee's function body. In most cases, Construct needs a new case to handle kWasmS128, and calls the relevant assembler to push a s128 onto the stack. ARM64 requires 16-byte alignment of sp, so we need to Claim the right number of kXRegSize slots first, which requires us traversing the list of slots to figure out how many s128 values there are. This is a straightforward way to fix this, if efficiency is a problem, we can change LiftOffStackSlots::Add to sum up the slot sizes. On IA32, pushing s128 values will require 4 calls to push. Instead, we use a sub and two movdqu, which will generate less code in most cases. On x64, there is no 128-bit push, so we call push twice. Bug: v8:9909 Change-Id: I3af35b8462ea9c3b9b2d90800c37d11b5e95be59 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2015945 Commit-Queue: Zhi An Ng <zhin@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/master@{#65956} |
||
---|---|---|
build_overrides | ||
custom_deps | ||
docs | ||
gni | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.clang-tidy | ||
.editorconfig | ||
.flake8 | ||
.git-blame-ignore-revs | ||
.gitattributes | ||
.gitignore | ||
.gn | ||
.vpython | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
COMMON_OWNERS | ||
DEPS | ||
ENG_REVIEW_OWNERS | ||
INFRA_OWNERS | ||
INTL_OWNERS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
MIPS_OWNERS | ||
OWNERS | ||
PPC_OWNERS | ||
PRESUBMIT.py | ||
README.md | ||
S390_OWNERS | ||
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.