Rename bindjcc1->bindjcc1st, bindjcc2->bindjcc2nd

Summary: They correspond to REQ_BIND_JMPCC_FIRST/SECOND.

Reviewed By: @swtaarrs

Differential Revision: D1620853
Add debugtrap opcode to vasm

Summary: This is useful for debugging. It's int3 on x64 and brk(0) on ARM.

Reviewed By: @edwinsmith

Differential Revision: D1621091
Change invariant() transformation from fb-specific to <?hh-specific

Summary: invariant() is a hack feature at this point.

Reviewed By: @elgenie

Differential Revision: D1610601
Abstract out platform dependent build steps

Summary: Previously the platform-specific steps were inline in the
benchy script. This patch abstracts that part out to a Platform object
for which any platform can provide an implementation. benchy then
decides which Platform object to instantiate based on the contents of
the .benchy file.

This patch also adds shebangs to the various scripts so that they can be
run without invoking python directly. This also enables the shell tab
completion to work correctly for branches.

Reviewed By: @jdelong

Differential Revision: D1620328
Revert "Unroll AKExists into a series of comparisons on small static arrays"

Summary: This reverts commit a8d16eb4b23374b10a8921e4b50312923c9bd450. It exposes
a serious bug in simplifier which we need more time to fix. It was
D1599893.

Reviewed By: @edwinsmith

Differential Revision: D1623014
typechecker: param unpacking calls (parsing) [1/3]

Summary: ... parser support only in this diff. The typechecker doesn't
 do anything useful with the result yet.

Reviewed By: @int3

Differential Revision: D1619854
typechecker: param-unpacking calls (naming) [2/3]

Summary: Modifies the named AST to support `f(...$unpack_expr)` calls

Reviewed By: @int3

Differential Revision: D1620284
typechecker: param-unpacking calls (typing) [3/3]

Summary: Modifies the typechecker to support `f(...$unpack_expr)`
 calls. The typechecking of params prior to the unpack proceeds as
 before.

 Unfortunately, the typechecking that can be done with an
 unpack_expr is somewhat limited:

  - we don't track size of containers as part of the type, so too-few-args
    arity checks are quite toothless
  - `$unpack_expr` is a container, not a tuple, because it's exceptionally
    likely that appending to the unpack is going to be desirable. Since tuples
    are immutable, code that might use them may be refactored:

     $args = tuple($a, $b, $c);
     call_func(...$args);
     // .. can be ..
     $args = tuple($a, $b, $c);
     call_func($a, $b, $c);

 However, that's still waaaaay more typechecking than is applied to
 call_user_func_array.

 TODO: __constructors , "special" functions

Reviewed By: @int3

Differential Revision: D1620310
typechecker: remove "copy" function hardcoding

Summary: This was the remnants of an old experiment for detecting
 copy-on-write occurrences statically that didn't pan out and was
 broken by the introduction of namespacing support.

Reviewed By: @int3

Differential Revision: D1624013
typechecker: more constants for hardcoded special names

Summary: Followup to {D1616902}:
 - user attributes
 - a few straggler callsites

Reviewed By: @int3

Differential Revision: D1619404
Adding doctrine/dbal to framework parity test suite

Summary: Closes https://github.com/facebook/hhvm/pull/4006

Reviewed By: @paulbiss

Differential Revision: D1623549
Add benchy support for per-VM environment variables

Summary: Adds support for specifying different environment variables
for each virtual machine. This will allow for easier tuning of various
constants in the VM as well as reduce overall build times when doing
performance comparisons with a single branch.

Reviewed By: @jdelong

Differential Revision: D1623580
Fix for mysqli persistent connections.

Summary: Removed connection handling from mysqli extension to let mysql_common do it
Only save the connection if its persistent and a new one

Closes #3414
Closes https://github.com/facebook/hhvm/pull/3970

Reviewed By: @paulbiss

Differential Revision: D1613159
typechecker: directory for collection .hhi's

Summary: ... keeping things a bit more organized

Reviewed By: @int3

Differential Revision: D1619597
typechecker: param-unpacking __construct calls (parsing + naming) [1/2]

Summary: AST support for `new X(...$unpack_args)` calls ... no checks
 are done in typing until the next diff.

Reviewed By: @int3

Differential Revision: D1624025
typechecker: param-unpacking __construct calls (typing) [2/2]

Summary: The typing limitations for `new X(...$unpack_args)` checks
 are similar to those of {D1620310} for regular method calls:
  - too few args arity checks are pretty toothless
  - we don't expand the typing info for `$unpack_args` to compare

Reviewed By: @int3

Differential Revision: D1624245
Fix ReflectoionClass::getMethods() with ABSTRACT filter

Summary: We search for methods, not classes
This regressed from 3.1.0 where it was a pure PHP implementation

Also moved all good tests

Fixes #3984

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

Reviewed By: @paulbiss

Differential Revision: D1617365
always_assert in ArrayTracer and change {Mixed|Packed}Array::Release calls

Summary: Change {Mixed|Packed}Array::Release calls to instead indirectly go through
g_array_funcs so that ArrayTracer can intercept them.

Before we were hitting bad asserts because we would release ArrayData's and
then allocate a new ArrayData at the same address, confusing ArrayTracer's
tracking.

Reviewed By: @markw65

Differential Revision: D1617464
Zip: Consider CWD at opening an archive

Summary: Fixes #3981

This one fixes issue [3981](https://github.com/facebook/hhvm/issues/3981). To be compatible with PHP 5.5 we should consider current working directory `zip_open` and `ZipArchive::open`.

Reviewed By: @ptarjan

Differential Revision: D1625155
Remove Eval.CheckRepoAuthDeserialize

Summary: This can go away in the next release.

Reviewed By: @markw65

Differential Revision: D1619382