ef0e835997
This fixes an old bug uncovered by https://chromium-review.googlesource.com/591651 The bug is a race between the concurrent sweeper clearing slots and the mutator adding slots and trimming fixed array: 1) The sweeper starts sweeping a page with an existing fixed array. 2) The sweeper pre-caches the slots clearing mode by checking if the slot set pointer on the page is null or not. (This is the bug). 3) The mutator updates the fixed array such that new slots are added. 4) The mutator trims the fixed array such that the added slots are now in free space. 5) The sweeper adds the trimmed part of the fixed array to free list, but does not clear slots there because of the cached flag. 6) A new object is allocated from the free list entry and it has a bogus slot entry recorded. Bug: chromium:752750 TBR: mlippautz@chromium.org Change-Id: I4f70514fa05b692a27d992954cb4c314ef4cac07 Reviewed-on: https://chromium-review.googlesource.com/608047 Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Ulan Degenbaev <ulan@chromium.org> Cr-Commit-Position: refs/heads/master@{#47242} |
||
---|---|---|
benchmarks | ||
build_overrides | ||
docs | ||
gni | ||
gypfiles | ||
include | ||
infra | ||
samples | ||
src | ||
test | ||
testing | ||
third_party | ||
tools | ||
.clang-format | ||
.editorconfig | ||
.gitignore | ||
.gn | ||
.ycm_extra_conf.py | ||
AUTHORS | ||
BUILD.gn | ||
ChangeLog | ||
CODE_OF_CONDUCT.md | ||
codereview.settings | ||
DEPS | ||
LICENSE | ||
LICENSE.fdlibm | ||
LICENSE.strongtalk | ||
LICENSE.v8 | ||
LICENSE.valgrind | ||
Makefile | ||
Makefile.android | ||
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.