• Michael Lippautz's avatar
    cppgc: Add HeapObjectHeader · 0a64a52b
    Michael Lippautz authored
    This adds HeapObjectHeader, a meta object that is put in front of
    every managed object. HeapObjectHeader provides accessors for:
    1. GCInfoIndex
    2. In construction bit
    3. size
    4. Mark bit
    
    Meta info is distributed among two uint16_t fields as (1.,2.) and
    (3.,4.). This is convenient as the non-bit accessors (size,
    GCInfoIndex) are constant during marking.
    
    Object layout see heap-object-header.h.
    
    Note: The current implementation does not bypass ASAN poisoning and
    assumes an unpoisoned header whenever performing an access.
    
    Bug: chromium:1056170
    Change-Id: I753f15467ed5c2b22b47e64d3aa5a3c1baddf8e1
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2116031
    Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
    Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
    Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
    Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#66861}
    0a64a52b
atomic-utils.h 6.9 KB