IncDecL is nothrow if the local is defined, add some type logic

Summary: This is confirmed with cellIncDecOp in tv-arith.cpp. I think having
IncDecL be a PEI may hurt analysis inordinately later on, and getting
the type logic right isn't hard.

Reviewed By: @jdelong

Differential Revision: D1385095
preg: ensure 'extra' is nonnull

Summary: Follow-up to pull request #2927.
Closes #2956

Reviewed By: @JoelMarcey

Differential Revision: D1385998

Pulled By: @sgolemon
Implemented xdebug_call_file

Summary: This diff implements the xdebug function xdebug_call_file.
If function g calls function f and function f calls xdebug_call_file,
the file that g is defined in is returned.

Reviewed By: @fredemmott

Differential Revision: D1386266
Separate hot region from main region in tc-print

Summary: Separate hot region from main retion in tc-print.
Also, definition of TCRegionString moved from mappers.cpp to offline-x86-code.h
to make it easier to update the array when TCRegion is modified.

Reviewed By: @ottoni

Differential Revision: D1386882
fix image magic warnings

Summary: These are the defaults that it falls back to right now so lets not change behavior, just get rid of the warnings and then change it later if these are wrong.

Reviewed By: joelm, fredemmott

Differential Revision: D1387629
Add codegen for NameA

Summary: Looking at ExecutionContext::iopNameA, loading the name of a class
is just cls->m_preClass->m_name.

Reviewed By: @swtaarrs

Differential Revision: D1383814
Disable flaky zend test

Reviewed By: @bertmaher
Fix disabling mongodb for monolog tests, re-record, add to FB CI

Summary: Change needed bcause of https://github.com/facebook/hhvm/issues/2938

Reviewed By: @JoelMarcey

Differential Revision: D1387992
Fix vfsstream output

Summary: .expect and .out files are not empty

Reviewed By: @JoelMarcey

Differential Revision: D1388052
EZC: fix off-by-one heap overflow in test function

Summary: Detected with ASan.
Closes #2960

Reviewed By: @fredemmott

Differential Revision: D1387962

Pulled By: @sgolemon
Fix GCC 4.9 add default null pointer check

Summary: Versions of the GNU Compiler Collection (GCC) greater than or equal to GCC 4.9.0 include changes to code optimization that have been reported to cause problems in when default code optimization settings are used by the compiler.

Beginning with GCC 4.9.0, code optimization in GCC now includes (by default) an optimization which is intended to eliminate unnecessary null pointer comparisons in compiled code.  Unfortunately this optimization removes checks which are necessary the demonstrated effect is to cause unpredictable assertion failures during execution of named, resulting in termination of the server process.

Also pass '-nc' to wget in configure script to avoid redownloading jemalloc if it already exists.
Also makes various minor whitespace changes (which really should have been in a separate diff)

Closes #2963

Reviewed By: @fredemmott

Differential Revision: D1387782

Pulled By: @sgolemon
filter_id should return null for arrays

Summary: Found via a bad zend test

Reviewed By: @JoelMarcey

Differential Revision: D1388346
Added passing tests as an xargs output file

Summary: This diff modifies the test runner to create a file of all passing tests. This is especially useful when dealing with `zend/bad`

Reviewed By: @fredemmott

Differential Revision: D1385647
don't process trait aliases in repo mode

Summary: The number calculated by ##Class::loadUsedTraits## is not
 used in repo mode. As a result, iterating over the trait alias rules
 to estimate how many functions are aliased isn't necessary, since all
 the functions in question have already been flattened into the preclass

Reviewed By: @ottoni

Differential Revision: D1387170
Remove m_hLoad field from MixedArray

Summary: If MixedArray's m_used field didn't move backwards (aside from compact),
then we would have a nice invariant where m_hLoad is always less than or
equal to m_used, making the m_hLoad field unnecessart.

This diff changes MixedArray so that m_used never moves backwards (aside
from compact), and it removes all the logic that checks or maintains the
m_hLoad field.

Reviewed By: @jdelong

Differential Revision: D1386785
Added Stash Caching Library to Framework Tests

Summary: Stash currently works on HHVM. It has some complex behavior that may be good to continue testing against.
Closes #2955

Reviewed By: @fredemmott

Differential Revision: D1386977

Pulled By: @JoelMarcey
show() for PostConditions

Summary: It's handy to print arbitrary sets of PostConditions while debugging.

Reviewed By: @ottoni

Differential Revision: D1388272
Re-record stable frameworks, add to FB CI

Summary: allthetests

This is all the stable frameworks except for monolog and vfsstream, which have a different pass rate on an FB build to the OSS build.

Notably, Joomla and Klein are not at 100%.

Reviewed By: @JoelMarcey

Differential Revision: D1387769
Fix mysqli_query return value for query without result

Summary: Closes #2965

Reviewed By: @JoelMarcey

Differential Revision: D1387738

Pulled By: @sgolemon
don't recompute files with errors

Summary: Files containing errors are systematically recomputed every time a file changes.
They are re-introduced in the pipeline in different places (depending on where they failed).
For example, if a file failed type-checking (as opposed to parsing, or naming), it is re-introduced
in the type-checking phase to see if the error went away.

The amount of hack errors present at any given time is relatively low in practice (Hack is a zero error system).
Because of that: recomputing all the files with an error was reasonably fast.

However, we are about to introduce a system (HH_FIXME) that let's the programmer ignore some errors.
The amount of files with errors at any given time is probably going to grow: recomputing all the files
with an error every time a file changes is probably not going to scale very well.
Whether this system is a good idea or not, in general, it would be cleaner for the type-checker not
to recompute files when nothing related to that file has changed.

In this diff, the logic of the type-checker is now the following:
1) recompute all the files that changed on disk: keep the errors introduced, let's call them X
2) remove all the errors (from the last run) coming from files that have been recomputed
3) Keep all the errors (from the last run) coming from files that have not been recomputed: call them Y
4) Show concat(X, Y) to the user

This is correct if the following invariant holds:
"The position of an error should be located in the file that introduced the error".
In other words, if type-checking the class 'A' introduces an error in a file that doesn't contain 'A' we
are in trouble: the error would persist forever until we recheck the file containain 'A' for unrelated reasons.

I think this invariant is reasonable and I am pretty sure it holds right now.

Reviewed By: @elgenie

Differential Revision: D1387289