Use RegionDesc to determine merge points
commitf9beb49780b79ddadf4371a899be8013292a7a92
authorGuilherme Ottoni <ottoni@fb.com>
Fri, 6 Feb 2015 02:05:08 +0000 (5 18:05 -0800)
committerhhvm-bot <hhvm-bot@fb.com>
Wed, 11 Feb 2015 08:30:29 +0000 (11 00:30 -0800)
tree66528dd217617f8fcf805f92db6a59de66886e7d
parent7070dd6ca1d448484c87b15ae64a5c7990470223
Use RegionDesc to determine merge points

Summary: The nextIsMerge function was treating all the blocks with the same
offset as the same, which is too pessimistic as it can claim some
blocks are merge points when they really aren't.  This diff rewrites
it so that it actually looks at the incoming region arcs into a block
to determine whether or not it's a merge point.

Reviewed By: @jdelong

Differential Revision: D1832287
hphp/runtime/vm/jit/irgen-control.cpp
hphp/runtime/vm/jit/irgen.cpp
hphp/runtime/vm/jit/irgen.h
hphp/runtime/vm/jit/region-selection.cpp
hphp/runtime/vm/jit/translator.cpp