[heap] Track unprotected chunks in LocalHeap
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: Michael Lippautz <mlippautz@chromium.org> Commit-Queue: Dominik Inführ <dinfuehr@chromium.org> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#81047}
Showing
Please
register
or
sign in
to comment