Fix ARM exception crash, add --arm option to test/run

The fakeAR thing isn't necessary now that we have a special fixup
implementation for simulator mode. Combined with @markw65' changes to
functionEnterHelper etc., everything's pretty clean, and function
interception works properly (it didn't before lockdown).

Reviewed By: @edwinsmith

Differential Revision: D1069589
Add some includes upstream to phpbb3

Some tests need some additional includes in order to be run as a single test file. Added them. https://github.com/phpbb/phpbb/pull/1888

Reviewed By: @ptarjan

Differential Revision: D1069949
DatePeriod support

Adds most of DatePeriod support for CodeIgniter unit test

Reviewed By: @JoelMarcey

Differential Revision: D1069304
frameworks runner: support notices

... I'd argue that this should be the default
 and tests that depend on not having notices should not work

Reviewed By: @ptarjan

Differential Revision: D1069033
use my MW upstream

They will pull it, just they are slow.

Reviewed By: @JoelMarcey

Differential Revision: D1070132
Clean up inlining frame elision

The code to eliminate unused inline frames was broken for a few
superficial reasons. Once I fixed those, I found and fixed a few larger issues,
mostly having to do with stack offsets for ReDefSP and DecRef (see the code for
details in comments). Unfortunately I'm going to have to check this in disabled
for now since there's at least one crash remaining and I need to move onto
other things for the moment.

check.cpp now enforces that any instruction that can throw must have a catch
block attached, since a number of optimizations rely on that for
correctness. This exposed a number of old issues, the biggest of which was that
LdClsMethodCache and LdClsMethodFCache had a taken label for a slow exit and
can also throw. Since they need a catch trace to be able to throw correctly, I
split them up into smaller instructions to expose more of the control flow at
the IR level.

Reviewed By: @jdelong

Differential Revision: D1060374
Properly support $this pointers in refcounting opts

The refcounting optimization now understands the flow of values throw
SpillFrames while inlining. This diff is aimed at fixing correctness issues;
there may be more opportunities for optimization we're missing around inlined
calls.

Reviewed By: @ottoni

Differential Revision: D1063557
Differential Revision: D1075908
re-use c_DOMNode for xmlNodePtr

This is how zend does it. They shove the container object into the _private part of the dom node and then re-use it. A test in drupal depends on this and it seems correct for the elements to `===` the same if they really have the same underlying node.

Does this introduce a memory leak? I'm not increffing anything so I think the smart pointer wrapping the `ObjectData*` is keeping the `ObjectData*` alive at all times already, this is just a cache of the pointer.

Reviewed By: @markw65

Differential Revision: D1065371

Revert "re-use c_DOMNode for xmlNodePtr"

This reverts the important part of commit 7f8617bd2895e9a802f0efd219390e9b40a8b41d.

I originally thought that the use of `_private` was a problem so I tried using a thread-local map but that didn't do anything.

While I figure out how to do this properly, just revert so our graphs aren't 22%.

Reviewed By: @JoelMarcey

Differential Revision: D1073217
Introducing APCHandle as a replacement of APCVariant (aka SharedVariant)

Every APC object (aka shared object) now has an APCHandle field used by the concurrent storage. No indirection any longer from APCVariant to the object data (string, object, array)

Reviewed By: @jdelong

Differential Revision: D1023419
Use CPU time instead of wall time for time limit

Zend PHP does not count in sleeping time into scripts time
limit, HHVM does. Change that for parity reasons.

Closes #1279
Closes #1287

Reviewed By: @markw65

Differential Revision: D1066797
Enable the bzip2 extension

We already had it implemented, but extension_loaded('bz2') would return
false.

Reviewed By: @ptarjan

Differential Revision: D1069567
Have hphp_get_method_info check superinterfaces of interfaces

If a method doesn't exist in an interface, then we need to check
all interfaces that it inherits from as well.

Reviewed By: @JoelMarcey

Differential Revision: D1068583
Add type prediction bytecodes

This diff adds PredictTL and PredictTStk, which are similar to
AssertTL and AssertTStk but for predictions instead of known types. They're
mostly intended for debugging right now, to help reproduce issues that depend
on certain type predictions being present. In the future we could start
emitting them instead of metadata entries.

Reviewed By: @jdelong

Differential Revision: D1069999
Fix async functions with statics

We were double adding the statics, which resulted in
an assert in dbg builds, and random crashes in release.

Reviewed By: @jdelong

Differential Revision: D1070112
move MW hash back

the newer version is broken somehow and I don't have time to figure out why

Reviewed By: @JoelMarcey

Differential Revision: D1070426
ReflectionClass->newInstance() should respect privacy

Reviewed By: @alexmalyshev

Differential Revision: D1069688
Closing connection on invalid record in FastCGI.

Changed FastCGI behaviour to close the connection when an
invalid record has been received instead of aborting.

Reviewed By: @ptarjan

Differential Revision: D1061545
Store name of generator body function in the outer Func

Bind inner and outer generator functions, do not pass the name of inner
function thru CreateCont/CreateAsync immediates.

Reviewed By: @jdelong

Differential Revision: D1067483
Move closure check from run time to compile time

When async functions and continuations are used with closures inside
methods, their generator body needs to be cloned into the enclosing
class. This is currently done in run time, but there is nothing
preventing us to do it in compile time, so let's do it.

Reviewed By: @jdelong

Differential Revision: D1067501
Make sure our phpunit binary is the one with our hhvm fix + upstream changes to frameworks

Our vendor/bin/phpunit did not contain our PHP_BINARY fix. So I updated composer to get that version, with a hack to make sure that your runs actually get the latest too. I will remove that Hack later and come up with a better way.

Plus I fixed Symfony to support HHVM (PHP_BINARY) too: https://github.com/JoelMarcey/symfony/commit/eba220f998ed994900e0324d1a8dd54b9656ae37

Symfony is above 97% now.

I will upstream that.

The nothing to do errors are gone from yii now, but didn't help the percentage that much. I updated to their latest master hash anyway.

Reviewed By: @alexmalyshev

Differential Revision: D1070555