==WIP== Create ArrayTracer to trace array usage in the runtime

Summary: ArrayTracer aims to track the creation and use of arrays throughout the HHVM
runtime. For ease of use it's enabled as a runtime flag -vEval.TraceArrays=true
which defaults to off.

It works by wrapping the functions in the ArrayFunctions g_array_funcs table
with a function that records the ArrayData pointers it sees, classifying them
as either static or request local, and then storing them in their respective
maps from ArrayData* to ArrayUsage. ArrayUsage just records what has happened
to a specific ArrayData, which gets fed information by the intercepted calls
to g_array_funcs. For example, a call to g_array_funcs.setStr will set the
string key flag on the ArrayUsage.

Reviewed By: @edwinsmith

Differential Revision: D1539544
Drop the -m suffix from the store immediate instructions.

Summary: It's implied by it being a store.
Also fixed some indentation in code-gen-x64.cpp,
and unbroke vasm-xls pretty-print.

Reviewed By: @swtaarrs

Differential Revision: D1616232
Remove unused parameters.

Summary: Makes dependencies clearer.

Reviewed By: @elgenie

Differential Revision: D1613869
Fix SplFileObject::__construct to match with PHP

Summary: Aims to fix #3401
Closes https://github.com/facebook/hhvm/pull/3983

Reviewed By: @paulbiss

Differential Revision: D1617360
Delete loadq/storeq since they are redundant

Summary: load/store do the same thing with less restrictions on the register.

Reviewed By: @jasone

Differential Revision: D1617595
Do not allow recursive calls to vasm.

Summary: Not all callsites of Vauto are created equal, in terms of what
registers they grant Vauto to use when emitting code. This removes
the callsites that can be entered recursively from vasm itself.

Reviewed By: @swtaarrs

Differential Revision: D1614832
Split bindcall and nativecall

Summary: emitBindCall() is essentially two different things rolled into one;
Split out the case for a direct call to a NativeCall function.

Reviewed By: @maksfb

Differential Revision: D1616115
Hide temporary state used in Typing_compare

Summary: Also add an mli file for Typing_compare.

This makes it easier to figure out where state gets used.

Reviewed By: @jwatzman

Differential Revision: D1613898
Make is_hh_file a local non-reference

Summary: global references increase likelihood of save / restore flakiness

Reviewed By: @jwatzman

Differential Revision: D1613872
Refactor daemonization code.

Summary: Looks nicer to me this way; separates daemonization code from what to
do after daemonization

Reviewed By: @jwatzman

Differential Revision: D1613866
Allow HH_FIXME in XHP attribute declarations

Summary: Just an oversight. Note that there are several XHP places we
should //not// allow this, since comments there are rendered to the
page!

Reviewed By: @int3

Differential Revision: D1614516
FIXME applies to the line of the next lexer token

Summary: This means you have multiple FIXMEs on their own line, and they
will apply to the first non-comment thing after them. Requires a bit of
ugly in the lexer -- it's unclear to me that at this point we shouldn't
just move this over to the parser, getting scary close to actually
parsing, but this is easiest for now.

Reviewed By: @elgenie

Differential Revision: D1614498
Import PHP 5.6.1 Zend Tests

Summary: Re-import our Zend tests. Use PHP 5.6.1 as the baseline. This is also after we
updated the import script too. https://github.com/facebook/hhvm/commit/b60c133884f4af5b0073909ffb157c8a134ca878

Reviewed By: @paulbiss

Differential Revision: D1604585
Allow setting MaxFileUploads from .hdf

Summary: There used to be no limit, now its 20, and we can't control
it via hdf.

Reviewed By: @JoelMarcey

Differential Revision: D1618200
Cache results of pcre_fullinfo

Summary: pcre_fullinfo can be precomputed for a given compiled regular expression.

Reviewed By: @oyamauchi

Differential Revision: D1557859
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