• Omer Katz's avatar
    cppgc: Handle non-gced traceable ephemeron values · 75131637
    Omer Katz authored
    On-heap hash maps in blink are limited to Member types and non-traceable
    types. The only exception to that is TraceWrapperV8Reference. Thus
    ephemerons can have non-gced traceable values. This values should not be
    pushed to the marking worklist since we expect everything in the
    worklist to be marked and not in construction (but these values don't
    have an object header).
    Instead, when getting a non-gced value we should immediately trace it.
    
    This is only relevant to ephemerons. Any other case would go through
    Trace(const T&) that dispatches to the TraceTrait.
    
    Blink has 1 use case of HeahHashMap from WeakMember<ScriptWrappable> to
    TraceWrapperV8Reference.
    
    Bug: chromium:1056170
    Change-Id: Ia8f341d6bb1fc8fd3655b2be66b7814896549d1e
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2696648Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
    Commit-Queue: Omer Katz <omerkatz@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#72763}
    75131637
unified-heap-marking-visitor.h 3.23 KB