• Leszek Swirski's avatar
    [maglev] Remove LiveNodeInfo, store its data directly on ValueNode · 3fd2428c
    Leszek Swirski authored
    LiveNodeInfo was stored in a Node->LiveNodeInfo map, which was never
    copied or merged alongside control flow. Lookups in this map were a bit
    part of register allocation time, and it was mostly duplicating data
    that was already in the ValueNode.
    
    So, instead of a separate LiveNodeInfo, store the current register
    allocation state directly on the ValueNode. This involves a bit of
    clobbering of state (in particular, we have to clobber the next_use id),
    but that doesn't matter since regalloc is a forward pass and with this
    change, it's less memory and zero map lookups.
    
    Measuring on a (very large) function, this reduces compile time from
    300ms to 200ms.
    
    Bug: v8:7700
    Change-Id: I02620f1a795bd308d1de03d694c102cb5ea3ff50
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3500617Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
    Commit-Queue: Leszek Swirski <leszeks@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#79339}
    3fd2428c
maglev-regalloc.cc 33.2 KB