• Dan Elphick's avatar
    Reland "[heap] Mark RO_SPACE as read-only after deserialization" · 60064133
    Dan Elphick authored
    This is a reland of 40f1aaf3
    
    Put back padding clearing into the SerializeObject method but only when
    the String is not in RO_SPACE. For RO_SPACE strings, if required
    iterate over the space before serialization clearing the strings.
    
    Original change's description:
    > [heap] Mark RO_SPACE as read-only after deserialization
    >
    > 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: Hannes Payer <hpayer@chromium.org>
    > Reviewed-by: Yang Guo <yangguo@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#52943}
    
    Bug: v8:7464
    Change-Id: Ia8386c4ff5f5df3207f584caf7a9b1ff1e405f25
    Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
    Reviewed-on: https://chromium-review.googlesource.com/1042145Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Dan Elphick <delphick@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#53087}
    60064133
api.cc 386 KB