remove 2 cmake spews

Summary: These 2 messages have never once affected me. The CMAKE_PREFIX one is not an issue on all modern distros as we don't bother with using anything other than packages.

The second one, I have never once installed CHRPATH and have no idea what it does. Everything is wonderful without it.

Reviewed By: @LiraNuna

Differential Revision: D1384576
clean up repo failure cases

Summary: While being oncall I was getting a ton of stacktraces. It turned out I ran two sets of convergences at the same time and one was killing the repos of the other. I really don't think a missing repo should cause cores and stacktraces.

Reviewed By: @markw65

Differential Revision: D1351141
Update the behavior of NaN comparisons

Summary: The behavior of <= and >= in the presence of NaN changed sometime
between php 5.3 and 5.5. We were still giving and testing the 5.3
behavior, where e.g. ##NAN <= NAN## is true. (This is because it was
implemented as ##!(NAN > NAN)##.)

Change to the 5.5 behavior where all comparisons involving NaN, except
!= and !==, are false. This matches pretty much every other programming
language that has floating point numbers.

We're still not getting this perfectly right w.r.t. php5.5: ##"" < NAN##
should evaluate to true (I have not the faintest idea why) but we'll say
it's false.

Note that we currently don't jit any relational comparisons involving
doubles (even though we have codegen that's supposed to handle it), so
this change to tv-comparisons.cpp is all that's needed.

The new .expect file was generated with php5.5.

Reviewed By: @swtaarrs

Differential Revision: D1372193
Fixed the PHP version constants

Summary: Fixes #2934
Closes #2943

Reviewed By: @ptarjan

Differential Revision: D1384502

Pulled By: @JoelMarcey
Remove some race conditions in Class destruction

Summary: When a Unit is unloaded, it marks all its classes as
'zombies', but can't free the memory yet because there may still be
subclasses of that Class that aren't freed yet.  We had code here that
would try to release references to other Classes that a Class depends
on as early as possible (we wait for the Treadmill to do the actual
atomic release to make sure the class pointer stays available for any
currently-running requests).  As far as I can tell the only part of
this code that was required for correctness is the part that nulls out
Func*'s in the method table that the Class doesn't own (so the
destructor will not free them).

On the other hand, this code isn't thread safe: the Class loading code
chases through the linked list of defined classes trying to find a
match, and calls avail() on each one.  This function doesn't have any
synchronization around the accesses to m_declInterfaces, m_usedTraits,
or m_parent.get(), which may have been concurrently written to by
another thread running destroy().  It's also unclear to me why it is
safe to change the method table (with or without proper
synchronization)---do we we know no other thread could be loading one
of the Func*'s out of the table concurrently and trying to put it into
an ActRec?

Change this to do the releaseRefs call at treadmill time, when we know
no other threads could be reading the Class, except to check
isZombie() when it is the parent of some other class.

Reviewed By: @markw65

Differential Revision: D1381570
Allow result of next()/send()/raise() to be passed from generator body

Summary: Generator's next()/send()/raise() methods return null, which is
currently hard-wired in next()/send()/raise()'s implementations.
Let yield/return opcodes to determine the return value of these methods,
so that async generators can utilize this mechanism to return wait
handles.

Also contains various fixes to avoid spanning SSATmps across ContEnters.

Reviewed By: @billf

Differential Revision: D1379327
Prepare generator opcodes for introduction of async generators

Summary: Restructure generator opcode in interpreter so that async generators can
be plugged in more easily.

Reviewed By: @billf

Differential Revision: D1379370
Implemented xdebug configuration options (take 2)

Summary: This is just D1378660 fixed so that the enable test doesn't run in
RepoAuthoritative mode. The enable test fails in RepoAuthoritative mode, but
unit tests didn't run in D1378660, so this was missed. I'll make sure unit
tests run this time.

This adds the skeleton required for all the defined xdebug configuration options.
All options are bound to and set to the default values defined at
http://xdebug.org/docs/all_settings.

Since xdebug by default overloads some functions, I added a custom setting
"hhvm.xdebug-not-done.enable", that only registers xdebug functions when
set to true. By default it's false.

Since there are so many different options, I made heavy use of macros to
avoid repetitive code- I hope the style is acceptable?

I also moved some of the xdebug definitions into a header, to reduce the
size of the cpp file a bit.

Reviewed By: @ptarjan

Differential Revision: D1380781
Add some OSS frameworks as FB commit-blockers

Summary: I'll look into the mockery regression shortly.

Reviewed By: @ptarjan

Differential Revision: D1382378
remove the --skip option

Summary: This options is stupid. It skips errors at initialization, but the
errors can be re-introduced if the files are modified.
It doesn't make sense.

Reviewed By: @elgenie

Differential Revision: D1386652
check declarations of magic methods for 'async' keyword

Summary: Parser::canBeAsyncOrGenerator() covers all magic methods

Reviewed By: @jano

Differential Revision: D1386210
Fix ini_get to return false for non supported settings

Summary: PHP's implementation of ini_get returns false for non supported
settings. With this change, hhvm's behavior now matches PHP's.

Reviewed By: @ptarjan

Differential Revision: D1384267
Correct arg type in Scanner::read declaration

Summary: Flex uses yy_size_t since 2.5.36 (see [1]). This fixes compilation on
an amd64 Debian Jessie for me.

[1] http://sourceforge.net/p/flex/flex/ci/9ba3187a537d6a58d345f2874d06087fd4050399/
Closes #2833

Reviewed By: ptarjan, jdelong

Differential Revision: D1385894

Pulled By: @JoelMarcey
Disable flaky zend test

Reviewed By: @bertmaher
strpbrk improvements

Summary: HHVM implementation of strpbrk has improved, rendering some
 PHP5 tests passing. A helper ##strpbrk_impl##, can be used internally
 to test whether any characters are present, without needing to
 allocate and return a possibly large string.

Reviewed By: @ptarjan

Differential Revision: D1333609
Add fastlz decompression support to memcached extension

Summary: As of version 2.0.0b1 (current is 2.2.0), the PHP memcached extension uses
fastlz compression by default for values exceeding a certain size threshold.
The same version also added a raw length field to all compressed values
(including zlib-compressed values). The flags MEMC_VAL_COMPRESSION_FASTLZ and
MEMC_VAL_COMPRESSION_ZLIB are used to indicate the compression algorithm for
this new implementation.

This commit adds support for decompressing values that have been compressed
using fastlz or zlib using the new convention. It does not yet include support
for compressing values. Decompression support is useful because it allows PHP
and HHVM to transparently share the same memcached infrastructure.

Depends on commit hhvm/hhvm-third-party#8

Closes #2867

Reviewed By: @ptarjan

Differential Revision: D1382905

Pulled By: @JoelMarcey
RecursiveIteratorIterator is not supposed to call next() in rewind()

Summary: Fixes tiny part of zend test `iterator_014.php`

e: Fixes zend test `iterator_022.php`
Closes #2930

Reviewed By: @ptarjan

Differential Revision: D1382168

Pulled By: @JoelMarcey
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