Please take another look.
https://chromiumcodereview.appspot.com/9141016/diff/8001/src/hydrogen.cc File src/hydrogen.cc (right): https://chromiumcodereview.appspot.com/9141016/diff/8001/src/hydrogen.cc#newcode1494 src/hydrogen.cc:1494: // instruction. I'm not sure that's true. We're careful to order the blocks in reverse post order, which means that ignoring loops, if there is a path a -> b -> c, then a.id() < b.id() < c.id(). It's overly conservative, but correct. I talked to Kevin, and he also agreed that this reasoning is sound, and also pointed out that liveness analysis relies on this same principle. On 2012/01/25 00:04:57, fschneider wrote:
In general a path from the header to the current instruction may
involve all
blocks from the loop that are not dominated by the current
instruction.
preceeding_loop_depends accumulates the dependencies of the blocks
with an id
less than the current block, and therefore can be missing the ones of
blocks
with higher ids that are not dominated by the current instruction.
https://chromiumcodereview.appspot.com/9141016/diff/8001/src/hydrogen.cc#newcode1495 src/hydrogen.cc:1495: can_hoist = On 2012/01/25 00:04:57, fschneider wrote:
Please add a unit test that covers the two cases that can occur here:
hoisting
and not hoisting the instruction.
Done. https://chromiumcodereview.appspot.com/9141016/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
