• Dominik Inführ's avatar
    Reland "[heap] Replace usages of CollectionRequested with SafepointRequested" · 0bbddafd
    Dominik Inführ authored
    This is a reland of 5ef4e14f
    
    The previous CL caused flaky test failures with some concurrent
    allocation tests. The reason for this was that the main thread's state
    and collection_requested_ can't be updated in an atomic operation
    anymore.
    
    Any thread will now invoke RequestGC() first. Then it will wait in
    AwaitCollectionBackground() when the main thread was running. Both
    methods can and will be invoked more than once.
    
    The new flag block_for_collection_ is used to decide whether a thread
    needs wait for the GC. collection_requested_ can't be used for that
    purpose because that flag is also true when the main thread is parked.
    
    Original change's description:
    > [heap] Replace usages of CollectionRequested with SafepointRequested
    >
    > CollectionRequested was used exclusively on the main thread when a
    > background thread requested a GC. The main thread never used
    > SafepointRequested at any time. Now with the shared GC we might need to
    > stop multiple isolates in a safepoint in the future. In such a situation
    > we would need to use SafepointRequested also on the main thread.
    >
    > This CL prepares V8 for this situation by using SafepointRequested
    > instead of CollectionRequested and friends on the main thread. The slow
    > path of Safepoint(), Park() and Unpark() will check in the future
    > whether the main thread needs to halt for a shared GC or needs to
    > perform a local GC. At the moment, simply performing the local GC is
    > still enough.
    >
    > Bug: v8:11708
    > Change-Id: I819b6f7db8251074a4adf8b554e0a1393c76f7da
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2891834
    > Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#74673}
    
    Bug: v8:11708
    Change-Id: Ibe245cd1822310123b3af2026872fd9927ee410e
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2912576
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#74739}
    0bbddafd
Name
Last commit
Last update
.github Loading commit data...
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
RISCV_OWNERS Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...