• Patrick Thier's avatar
    Reland "[turbofan] Improve StoreStoreElimination" · e926da45
    Patrick Thier authored
    This is a reland of 863bc2b8
    
    Diff to original:
    - Don't eliminate GC observable stores that were temporarily
      unobservable during traversal.
    - Skip the previously added test for single-generation
    - Add new test
    
    Original change's description:
    > [turbofan] Improve StoreStoreElimination
    >
    > Previously, StoreStoreElimination handled allocations as
    > "can observe anything". This is pretty conservative and prohibits
    > elimination of repeated double stores to the same field.
    > With this CL allocations are changed to "observes initializing or
    > transitioning stores".
    > This way it is guaranteed that initializing stores to a freshly created
    > object or stores that are part of a map transition are not eliminated
    > before allocations (that can trigger GC), but allows elimination of
    > non-initializing, non-transitioning, unobservable stores in the
    > presence of allocations.
    >
    > Bug: v8:12200
    > Change-Id: Ie1419696b9c8cb7c39aecf38d9f08102177b2c0f
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3295449
    > Commit-Queue: Patrick Thier <pthier@chromium.org>
    > Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
    > Reviewed-by: Maya Lekova <mslekova@chromium.org>
    > Cr-Commit-Position: refs/heads/main@{#78230}
    
    Bug: v8:12200, chromium:1276923, v8:12477
    Change-Id: Ied45ee28ac12b370f7b232d2d338f93e10fea6b4
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3320460Reviewed-by: 's avatarMaya Lekova <mslekova@chromium.org>
    Commit-Queue: Patrick Thier <pthier@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78349}
    e926da45
store-store-elimination.cc 20.9 KB