• Santiago Aboy Solanes's avatar
    [compiler] Perform Map::bit_field_3 non-release/acquire if possible · f2b4272d
    Santiago Aboy Solanes authored
    We have to have special rules for bit_fields since we multiple accesors
    touch the same field. I used:
     * If the accessor is set at map initalization time only and:
       * only the main thread accesses it: non-atomic write/read
       * bg accesses it too: non-atomic write, relaxed read (read has to be
         relaxed due to the whole bit_field being modified concurrently via
         other bit_field3 accessors)
     * If the accessor is set after map initialization:
       * but it is not necessary for synchronization: relaxed write/read
       * If the accessor is needed for synchronization: release/acquire
    
    As a note, Map::NumberOfOwnDescriptors are the bits accessed by the
    concurrent marker. For concurrent marker reasons it can be relaxed, but
    we would like it to be release/acquire for the compiler since that's
    where we synchronize Maps with adding descriptors to the descriptor
    array.
    
    Bug: v8:7790, chromium:1150811
    Change-Id: I0ba7d2f8cb81d65a487970b4ea0bfa2a4cb3a975
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2773286Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Commit-Queue: Santiago Aboy Solanes <solanes@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#73911}
    f2b4272d
map-inl.h 28.9 KB