Special case some bytecode ops in getStackValue
commit0a6e1587e9b370ce83e7a9a2b0fcedc892e3f7ab
authorEric Caruso <zircean@fb.com>
Tue, 2 Jul 2013 20:48:30 +0000 (2 13:48 -0700)
committerSara Golemon <sgolemon@fb.com>
Sat, 6 Jul 2013 18:12:15 +0000 (6 11:12 -0700)
tree02270f3b143608df25f4b78cd218ac70d86cccf5
parent11dc9d091d0e0dbbc53592da521cae3a977013bd
Special case some bytecode ops in getStackValue

Some bytecode ops, such as CGetL3, would munch the
types of the things on the stack above the new cell that was
pushed because getStackValue assumes all stack outputs from
interpOne are on top of the stack. The result is that the top
of the stack would contain the output type, and the two things
below it would not get any type (unknown).

This usually isn't a problem, but if we fail enough in type
prediction we might get around to InterpOneing these ops.
hphp/runtime/vm/jit/extradata.h
hphp/runtime/vm/jit/hhbctranslator.cpp
hphp/runtime/vm/jit/simplifier.cpp