• Dan Elphick's avatar
    [heap] Mark RO_SPACE as read-only after deserialization · 40f1aaf3
    Dan Elphick authored
    Adds MarkAsReadOnly and MarkAsReadWrite to ReadOnlySpace. The latter
    is only usable with ReadOnlySpace::WritableScope to avoid the space
    being left writable). MarkAsReadOnly updates the high water mark and
    makes several previously mutating methods into no-ops.
    
    Moves some writes to immutable objects out of the bootstrapper to
    setup-heap-internal so they don't write to a read-only page.
    
    Also avoid writing hashes to strings that already have the value set as
    that invariably means writing to the "0" and "1" constant strings in
    RO_SPACE.
    
    Before serialization, it makes RO_SPACE writable again so that any
    padding can be cleared before writing it.
    
    Bug: v8:7464
    Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
    Change-Id: I22edc20dba7dde8943991a8fcaf87244af4490a3
    Reviewed-on: https://chromium-review.googlesource.com/1014128
    Commit-Queue: Dan Elphick <delphick@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#52943}
    40f1aaf3
setup-heap-internal.cc 35.3 KB