[turbofan] Split pure nodes in the scheduler if beneficial.
authorBenedikt Meurer <bmeurer@chromium.org>
Tue, 3 Feb 2015 14:50:40 +0000 (15:50 +0100)
committerBenedikt Meurer <bmeurer@chromium.org>
Tue, 3 Feb 2015 14:51:08 +0000 (14:51 +0000)
commitd8cfbc633d6f2fcc7016dfb8db8c3f7636c3151e
tree5536a1319d0dcd11e5a6428423c558f4edc234f6
parent1feee1c6fc41f0fb1a977a3c47d8ca54c937b8e1
[turbofan] Split pure nodes in the scheduler if beneficial.

If a (pure) node has two or more uses, but there exists a path from the
common dominator of these uses to end, which does not contain a use,
then we split the node such that no unnecessary computation takes place.
Note however, that this only applies if the node cannot be hoisted out
of a loop.

BUG=v8:3864
LOG=n
R=jarin@chromium.org

Review URL: https://codereview.chromium.org/899433005

Cr-Commit-Position: refs/heads/master@{#26404}
src/compiler.cc
src/compiler.h
src/compiler/common-operator.cc
src/compiler/pipeline.cc
src/compiler/scheduler.cc
src/compiler/scheduler.h
src/flag-definitions.h
test/mjsunit/asm/redundancy1.js [new file with mode: 0644]
test/mjsunit/asm/redundancy2.js [new file with mode: 0644]
test/unittests/compiler/scheduler-unittest.cc