• Dominik Inführ's avatar
    [heap, objects] Check object layout changes happen on main thread · da62220f
    Dominik Inführ authored
    Verification code in HeapObject::set_map() is supposed to run on the
    main thread since object layout change is only supported on the main
    thread. There are some users of set_map() on background threads though,
    which resulted in crashes. Since those users all perform a safe map
    transition, we introduce a separate method for this purpose:
    HeapObject::set_map_safe_transition(). This method behaves just like
    set_map() but verifies that this is a safe map transition and not an
    object layout change and therefore can be used on background threads
    as well.
    
    This CL also adds a DCHECK to HeapObject::set_map() to ensure we run
    this method only on the main thread.
    
    Bug: chromium:1293484
    Change-Id: I25de6fda08de21b8b7a3645cf0ea5b1334e8a2f6
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3439905Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
    Commit-Queue: Dominik Inführ <dinfuehr@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#78978}
    da62220f
heap.h 107 KB