Skip to content
  • Jakob Stoklund Olesen's avatar
    Add a LiveRangeUpdater class. · 521c708e
    Jakob Stoklund Olesen authored
    Adding new segments to large LiveIntervals can be expensive because the
    LiveRange objects after the insertion point may need to be moved left or
    right. This can cause quadratic behavior when adding a large number of
    segments to a live range.
    
    The LiveRangeUpdater class allows the LIveInterval to be in a temporary
    invalid state while segments are being added. It maintains an internal
    gap in the LiveInterval when it is shrinking, and it has a spill area
    for new segments when the LiveInterval is growing.
    
    The behavior is similar to the existing mergeIntervalRanges() function,
    except it allocates less memory for the spill area, and the algorithm is
    turned inside out so the loop is driven by the clients.
    
    llvm-svn: 175644
    521c708e
Loading