GetByOffset rule is has incorrect assumptions inside arguments elimination phase
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Oct 2016 22:51:36 +0000 (22:51 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 31 Oct 2016 22:51:36 +0000 (22:51 +0000)
commit2d41cab6b54d19fae4b0bac463583cb89a91d54d
treefeae474df7d531686221ba46e79a25d93a406197
parentaae731fa5d0d4b23f6f2e3200e6f891ba5530a6e
GetByOffset rule is has incorrect assumptions inside arguments elimination phase
https://bugs.webkit.org/show_bug.cgi?id=164239
<rdar://problem/29032041>

Reviewed by Keith Miller.

The rule for GetByOffset assumes that a child will always be transformed before
the user of a child is by assuming its child will already be a phantom allocation.
This will almost certainly be true because of how we generate bytecode for
arguments allocation and how traversal of the graph works using blocksInNaturalOrder.
However, there is no guarantee that blocksInNaturalOrder must first traverse a
block's dominator before the block being dominated. Since it's unlikely that this
bug will ever be seen by real code, this fix is mostly for maintaining good hygiene.

* dfg/DFGArgumentsEliminationPhase.cpp:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@208185 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/dfg/DFGArgumentsEliminationPhase.cpp