• sigurds@chromium.org's avatar
    Fix scheduler to correctly schedule nested diamonds. · 0f5949d6
    sigurds@chromium.org authored
    The scheduler rewires control based on the last *control*
    node that appears in the schedule of a block. This is not
    sufficient to account for dependencies.
    
    This patch adds additional dependencies to floating control
    nodes. Given a floating control node A, every non-control
    dependency of every node B that depends on A is introduces
    as an additional dependency of A.
    
    This allows the scheduler to correctly schedule two
    diamonds A, B, if their only correct schedule is to
    schedule B into the ifTrue successor in A.
    
    TEST=cctest/test-scheduler/NestedFloatingDiamonds
    R=mstarzinger@chromium.org, titzer@chromium.org
    
    Review URL: https://codereview.chromium.org/602083003
    
    git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    0f5949d6
scheduler.cc 42 KB