Add inlining support to the tracelet region selector
commite282644ddfa14ad17471bb59725054bbfc1c7841
authorbsimmers <bsimmers@fb.com>
Wed, 31 Jul 2013 00:00:07 +0000 (30 17:00 -0700)
committerSara Golemon <sgolemon@fb.com>
Thu, 29 Aug 2013 18:58:44 +0000 (29 11:58 -0700)
tree3889407839d6f4525946fce59a12a3c371b04df9
parentc9bc3139d6db2a77b1013642aab20b2b09cb9546
Add inlining support to the tracelet region selector

The tracelet region selector now supports creating regions with
inlined calls. When it sees an FCall with a known callee, it invokes a new
instance of the tracelet region selector on the callee. The callee is evaluated
using the same cost metric as Translator::analyze. If it passes, the callee is
inlined for real, which allows creation of longer tracelets based on the return
value from the callee.

Differential Revision: D909359
19 files changed:
hphp/runtime/vm/hhbc.cpp
hphp/runtime/vm/hhbc.h
hphp/runtime/vm/jit/annotation.cpp
hphp/runtime/vm/jit/check.cpp
hphp/runtime/vm/jit/hhbc-translator.cpp
hphp/runtime/vm/jit/hhbc-translator.h
hphp/runtime/vm/jit/ir-translator.cpp
hphp/runtime/vm/jit/ir-translator.h
hphp/runtime/vm/jit/region-selection.cpp
hphp/runtime/vm/jit/region-selection.h
hphp/runtime/vm/jit/region-tracelet.cpp
hphp/runtime/vm/jit/trace-builder.cpp
hphp/runtime/vm/jit/translator.cpp
hphp/runtime/vm/srckey.cpp
hphp/runtime/vm/srckey.h
hphp/test/quick/vector-clscns.php [new file with mode: 0644]
hphp/test/quick/vector-clscns.php.expectf [new file with mode: 0644]
hphp/test/slow/ir_inlining/recurse.php [new file with mode: 0644]
hphp/test/slow/ir_inlining/recurse.php.expectf [new file with mode: 0644]