Go to file
Shu-yu Guo 95b79bf04b Revert "[heap][test] Fix weakrefs tests for conservative stack scanning"
This reverts commit 20a954f4bc.

Reason for revert: Alas, GC stress failures:
https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20GC%20Stress%20-%20custom%20snapshot/45646/overview

Original change's description:
> [heap][test] Fix weakrefs tests for conservative stack scanning
>
> 31 out of the 36 JS tests in test/mjsunit/harmony/weakrefs/ rely on
> precise GC with the following general pattern: they allocate some
> objects, clear all references to them, invoke a GC, then perform
> some test that assumes that the GC has reclaimed the objects.
> When conservative stack scanning is used, this may fail.
>
> This CL fixes the tests, ensuring that a precise GC will be invoked
> when necessary, without scanning the stack. To achieve this, the GC
> has to be invoked in asynchronous execution mode, which ensures that
> it will be invoked from the event loop without a stack. In some
> cases, this change requires a non-trivial change in the tests.
>
> In 5 tests, part of the test's objective was to verify that a weak
> reference is not cleared before the end of the turn. In those, it
> was not possible to invoke GC asynchronously, as this would
> immediately start a new turn. These tests still use synchronous GC
> and they have been modified, if necessary, to allow for CSS (i.e.,
> to not test that all possible garbage is reclaimed after a
> sequential GC). Because of CSS, these tests may not always test
> everything that they were intended to.
>
> Tests with trivial fix:
>
> - cleanup-from-different-realm
> - cleanup
> - cleanup-proxy-from-different-realm
> - cleanupsome-2
> - cleanupsome-after-unregister
> - cleanupsome
> - finalizationregistry-keeps-holdings-alive
> - multiple-dirty-finalization-groups
> - stress-finalizationregistry-dirty-enqueue
> - undefined-holdings
> - unregister-after-cleanup
> - unregister-before-cleanup
> - unregister-called-twice
> - unregister-inside-cleanup2
> - unregister-inside-cleanup3
> - unregister-inside-cleanup
> - unregister-many
> - unregister-when-cleanup-already-scheduled
> - weak-cell-basics
>
> Tests with non-trivial fixes; same logic but very restructured:
>
> - cleanup-is-not-a-microtask:
> - cleanup-on-detached-realm
> - finalizationregistry-scheduled-for-cleanup-multiple-times
> - finalizationregistry-independent-lifetime
> - finalizationregistry-independent-lifetime-multiple
> - reentrant-gc-from-cleanup
> - symbol-in-finalizationregistry
>   (was 2nd part of former symbol-as-weakref-target-gc)
> - weak-unregistertoken
>
> Tests with non-trivial fixes; same logic, restructured, using
> synchronous GC:
>
> - finalizationregistry-and-weakref
> - symbol-as-weakref-target-gc
>   (was 1st part of former symbol-as-weakref-target-gc)
> - two-weakrefs
> - weakref-creation-keeps-alive
> - weakref-deref-keeps-alive
>
> Bug: v8:13257
> Bug: v8:13662
> Change-Id: I53586bd16cdb98fa976e1fa798ef498bdf286238
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4191774
> Reviewed-by: Marja Hölttä <marja@chromium.org>
> Reviewed-by: Shu-yu Guo <syg@chromium.org>
> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#85477}

Bug: v8:13257
Bug: v8:13662
Change-Id: Icc7a907928ccac058f8acdf320c21b2df04c1b78
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4192256
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#85479}
2023-01-25 18:53:06 +00:00
.github
bazel [turbofan] Add the v8_enable_turbofan build option 2023-01-11 10:57:54 +00:00
build_overrides
custom_deps
docs
gni Disable TF in lite mode 2023-01-12 09:54:54 +00:00
include [compile hints] Collect compile hints data in v8 2023-01-24 16:14:23 +00:00
infra [gcmole] Run gcmole on bots with matching architecture 2023-01-17 13:56:18 +00:00
samples [sandbox] Initialize sandbox during V8::Initialize 2022-07-15 09:29:32 +00:00
src [turboshaft] Fix a crash in BranchEliminationReducer 2023-01-25 17:43:40 +00:00
test Revert "[heap][test] Fix weakrefs tests for conservative stack scanning" 2023-01-25 18:53:06 +00:00
testing
third_party [reland] adds the ability for v8 to use sin/cos from libm 2022-12-02 21:59:04 +00:00
tools [js-fuzzer] Update skipped files 2023-01-25 13:02:02 +00:00
.bazelrc
.clang-format
.clang-tidy
.editorconfig
.flake8
.git-blame-ignore-revs [git blame] Add a few old refactors to .git-blame-ignore-revs 2023-01-04 15:43:38 +00:00
.gitattributes
.gitignore Adds sin/cos from glibc 2022-11-30 09:20:05 +00:00
.gn [fuchsia] Add API target level default value 2022-08-29 14:46:45 +00:00
.mailmap Add .mailmap entries for jgruber 2022-08-04 08:53:02 +00:00
.style.yapf
.vpython3 Reland "[resultdb] Add ResultDB indicator" 2022-10-14 11:05:59 +00:00
.ycm_extra_conf.py [ycm] Fix YouCompleteMe config 2022-11-02 15:59:48 +00:00
AUTHORS Revert "[turbofan] Optimize access to the length property of functions" 2023-01-23 08:58:42 +00:00
BUILD.bazel [heap] Fix saving the callee-saved registers on stack 2023-01-19 12:29:05 +00:00
BUILD.gn [maglev] MaglevAssembler Scratch Register Scope 2023-01-19 13:07:47 +00:00
CODE_OF_CONDUCT.md
codereview.settings
COMMON_OWNERS [owners] Add mliedtke to COMMON_OWNERS 2022-09-16 14:12:27 +00:00
DEPS Update V8 DEPS (trusted) 2023-01-25 04:03:53 +00:00
DIR_METADATA
ENG_REVIEW_OWNERS Add mlippautz@ to ENG_REVIEW_OWNERS. 2022-10-06 18:48:33 +00:00
INFRA_OWNERS [infra] Add alexschulze@ as infra owner 2022-07-18 09:08:54 +00:00
INTL_OWNERS
LICENSE [mips32] Delete mips32 from v8 2022-09-13 07:54:54 +00:00
LICENSE.fdlibm
LICENSE.strongtalk
LICENSE.v8
LOONG_OWNERS
MIPS_OWNERS
OWNERS Make .ycm_extra_conf owned by COMMON_OWNERS 2022-11-07 09:51:53 +00:00
PPC_OWNERS PPC/S390: cleanup owner files 2023-01-23 17:07:21 +00:00
PRESUBMIT.py [presubmit] Handle Windows path for header guard check 2022-12-13 17:30:02 +00:00
README.md
RISCV_OWNERS
S390_OWNERS PPC/S390: cleanup owner files 2023-01-23 17:07:21 +00:00
WATCHLISTS Add a WATCHLIST entry for trap-handler 2023-01-18 09:00:37 +00:00
WORKSPACE [bazel] Remove zlib dependency 2022-08-17 15:30:25 +00:00

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.