• Dominik Inführ's avatar
    [heap] Track unprotected chunks in LocalHeap · a537be46
    Dominik Inführ authored
    CodePageCollectionMemoryModificationScope now increases a per-thread
    counter and inserts unprotected code chunks into a thread-local set
    of chunks. This information is moved from Heap into LocalHeap.
    
    We can't use kMaxWriteUnprotectCounter on the unprotect counter on the
    MemoryChunk anymore, since e.g. for concurrent Sparkplug N threads might
    now allocate a code object on the same page and since
    CodePageCollectionMemoryModificationScope doesn't know about the
    other threads anymore, each thread has to increase that counter by 1.
    We DCHECK that nesting depth now in the scope's constructor instead.
    
    We still need to remove chunks from `unprotected_memory_chunks_` when
    freeing an executable MemoryChunk during GC. Fortunately we can still do
    this, since all threads are in a safepoint during GC and we can remove
    the chunk from each thread-local set without any synchronization.
    
    Bug: chromium:1330887
    Change-Id: Icefc61b8d8de113d8dcfb1cf64122d12dd9798c4
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3688516Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#81047}
    a537be46
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...
maglev 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...
sandbox Loading commit data...
sanitizer Loading commit data...
snapshot Loading commit data...
strings Loading commit data...
tasks Loading commit data...
temporal 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...