RecursiveRegexIterator's children don't use their parents flags

Summary: I don't think this is the right behaviour, but it matches php...

Also apply patch to bug68128 (Array to String conversion in accept())

The slow test I added tests for the children's flags. PHP reports NULL for pregFlags whereas we report 0.
I reported this at https://bugs.php.net/bug.php?id=68175

Fixes #3909

Closes https://github.com/facebook/hhvm/pull/3915

Reviewed By: @paulbiss

Differential Revision: D1599880
Add benchy.py for benchmarking HHVM

Summary: Adds benchy.py and all of its supporting scripts. benchy.py is
a benchmarking harness that handles checkout out, building,
benchmarking, and analyzing performance for HHVM.

Reviewed By: @jasone

Differential Revision: D1615647
typechecker: track hardcoded names in own module

Summary: As the number of functions/classes/constructs that the
 typechecker knows about grows, spraying hard-coded strings throughout
 the codebase is becoming rather unwieldy; additionally, there's no
 good way to leverage the ocaml compiler to find hardcode sites. To
 remedy this, Naming_special_names allows for a single place for magic
 strings for global functions, classes, and member/method names to be
 declared.

Reviewed By: @jwatzman

Differential Revision: D1616902
typechecker: allow enum values to be used in string concat

Summary: ... since we restrict enum values to be either ints or strings
 elsewhere in the typechecker and runtime.

Reviewed By: @jwatzman

Differential Revision: D1617014
support namespaces in hints in hack formatter

Summary: Depends on D1613311

Reviewed By: @elgenie, @jwatzman

Differential Revision: D1616085
make elaboration of namespaces during parsing optional

Summary: Depends on D1616085

Reviewed By: @jwatzman

Differential Revision: D1616159
use List.mem

Summary: Use List.mem instead of List.exists when checking for equality

Reviewed By: @int3

Differential Revision: D1619438
typechecker: remove hhi declarations for not-always-existent functions

Summary: These are only defined when certain macros are.

Reviewed By: @paulbiss

Differential Revision: D1619585
Add support for saving / restoring shared memory.

Summary: Subsequent commits will hook this up to a command-line option.

Reviewed By: @jwatzman

Differential Revision: D1610700
Add ability to save and restore server state.

Reviewed By: @jwatzman

Differential Revision: D1610805
Simplify Program.serve()

Summary: `report` is never modified in the current code, so there is no way
the panic can get triggered.

Reviewed By: @jwatzman, @elgenie

Differential Revision: D1613871
An async method's return annotation (if there is one) must be "Awaitable"

Summary: This takes the first step for improving return type enforcement for async
functions. We enforce that if there is a return type annotation, it must be
"Awaitable" or "Awaitable<T>".

This diff also adds some missing plumbing for return annotations for
closures and lambdas.

Reviewed By: @elgenie

Differential Revision: D1610520
Just use rpoSortCfg() instead of layoutBlocks()

Summary: Vasm ultimately does its own block layout, so just use a simple
rpo traversal to get the reachable blocks.

Reviewed By: @jdelong

Differential Revision: D1618096
Rename X64_OPCODES to VASM_OPCODES

Reviewed By: @swtaarrs

Differential Revision: D1620130
Move zend curl tests back to good

Summary: It turns out if you have a proxy on, the result is different. This test assumes there
is no proxy available.

Reviewed By: @paulbiss

Differential Revision: D1619853
ARM immediate-folding

Summary: Templatize the original foldImms and provide an alternate implementation
of Folder. Add support for a few more immediate-form instructions to
vasm-arm.cpp.

Reviewed By: @swtaarrs

Differential Revision: D1618762
Use Stats.Enable in config instead of overloading Stats

Summary: Using "Stats" as both a boolean and as a section with children is not
only weird, it causes unintuitive behavior where overriding the section can
reset the boolean.

Reviewed By: @JoelMarcey, @markw65

Differential Revision: D1615419
Catchable fatals need %s replacement too

Summary: Following up on D1604585 where PHP 5.6.1 tests were imported, some good tests were moved to bad. Here is the first of a couple followup diffs to try to get them back.

We needed to have `%s` in `.expect` files for `Catchable fatal errors`

We have about 12 tests left to get back to good

Reviewed By: @paulbiss

Differential Revision: D1619651
Create test for coerce param to string on objects with bad toString

Summary: Added a test for fix #5323338

Reviewed By: @bertmaher, @jdelong

Differential Revision: D1614697
Split NewPackedArray into multiple IR nodes

Summary: NewPackedArray currently calls out of line to a C++ helper
function which allocates a new PackedArray and populates it with values
previously pushed to the stack. We'd like to inline all of this for
sufficiently small array literals.

The first step is to break NewPackedArray into its subcomponents, namely doing
the array allocation (which is represented with AllocPackedArray) and then
initializing each of the slots in the array with previously computed values
(which is represented with InitPackedArray).

Also added InitPackedArrayLoop as an alternative to InitPackedArray if the
array literal has more elements than we're comfortable unrolling.
It iterates back up the stack, copying values into the newly allocated
packed array.

Reviewed By: @jdelong

Differential Revision: D1587607