• Dominik Inführ's avatar
    [heap] Add and remove allocation observers without using safepoints · d79e0c4f
    Dominik Inführ authored
    Safepoints were used in Heap::AddAllocationObserversToAllSpaces and
    Heap::RemoveAllocationObserversFromAllSpaces as a poor man's approach
    to synchronization. This CL removes the safepoint and protects the
    potential race on the free list with a mutex in
    PagedSpace::DecreaseLimit.
    
    The motivation for this CL is that SafepointScope might possibly park
    the main thread in the future. However parking is only allowed if GCs
    are also allowed. GCs are not allowed when running allocation observers,
    so an allocation observer would not be able to add or remove additional
    observers as is currently done in StressConcurrentAllocationObserver.
    
    Also adding additional checks to the safepoint to ensure that we are
    on the main thread.
    
    Bug: v8:11708
    Change-Id: I4e65a83ac4015d30b15d8c4eeaed4ea759b7c982
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3160523
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#76867}
    d79e0c4f
Name
Last commit
Last update
..
api Loading commit data...
asmjs Loading commit data...
ast Loading commit data...
base Loading commit data...
baseline Loading commit data...
bigint Loading commit data...
builtins Loading commit data...
codegen Loading commit data...
common Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
d8 Loading commit data...
date Loading commit data...
debug Loading commit data...
deoptimizer Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
extensions Loading commit data...
flags Loading commit data...
handles Loading commit data...
heap Loading commit data...
ic Loading commit data...
init Loading commit data...
inspector Loading commit data...
interpreter Loading commit data...
json Loading commit data...
libplatform Loading commit data...
libsampler Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parsing Loading commit data...
profiler Loading commit data...
protobuf Loading commit data...
regexp Loading commit data...
roots Loading commit data...
runtime Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
third_party Loading commit data...
torque Loading commit data...
tracing Loading commit data...
trap-handler Loading commit data...
utils Loading commit data...
wasm Loading commit data...
web-snapshot Loading commit data...
zone Loading commit data...
DEPS Loading commit data...
DIR_METADATA Loading commit data...
OWNERS Loading commit data...