DescriptionFix scheduler to correctly schedule nested diamonds.
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
Committed: https://code.google.com/p/v8/source/detail?r=24561
Patch Set 1 #
Total comments: 5
Patch Set 2 : Addressing titzer's counter-example. #Patch Set 3 : 2 Fixes #Patch Set 4 : titzer's comments #
Total comments: 2
Patch Set 5 : Rebase #Patch Set 6 : Fix rebase bug #
Messages
Total messages: 10 (1 generated)
|