Don't pass MInstrState* to jit helpers
commit4673b4890c2a9c26a0091fb7c4ebf28526f692e2
authorBrett Simmers <bsimmers@fb.com>
Fri, 28 Aug 2015 23:58:54 +0000 (28 16:58 -0700)
committerhhvm-bot <hhvm-bot@fb.com>
Fri, 4 Sep 2015 22:00:33 +0000 (4 15:00 -0700)
treef08c79989c34c71885c8222c77bd3f68a993a2be
parentdc5076779d04f9c518cc6bceddfba1201669aede
Don't pass MInstrState* to jit helpers

Summary: The helpers that were taking an MInstrState* really only want a
pointer to tvRef. This simplifies things by removing the DefMIStateBase
instruction and just passing tvRef to the helpers that need it. It also greatly
improves what load/store-elim can do with the ratchetRefs code for new minstrs,
since we no longer think every helper can read/write all of MInstrState (it may
help current minstrs a little, if checkMIState() is missing some cases).

I also extended AMIState to hold a bitvector representing the different parts
of MInstrState, rather than just a single offset. I ended up not using it as
originally planned but it won't hurt anything and may be used in the future so
I left it in.

Reviewed By: @markw65

Differential Revision: D2395762
14 files changed:
hphp/doc/ir.specification
hphp/runtime/test/alias-class.cpp
hphp/runtime/vm/hhbc.cpp
hphp/runtime/vm/hhbc.h
hphp/runtime/vm/jit/alias-class.cpp
hphp/runtime/vm/jit/alias-class.h
hphp/runtime/vm/jit/code-gen-arm.cpp
hphp/runtime/vm/jit/code-gen-x64.cpp
hphp/runtime/vm/jit/dce.cpp
hphp/runtime/vm/jit/extra-data.h
hphp/runtime/vm/jit/gvn.cpp
hphp/runtime/vm/jit/irgen-minstr.cpp
hphp/runtime/vm/jit/memory-effects.cpp
hphp/runtime/vm/jit/minstr-helpers.h