Added xdebug_time_index

Summary: This diff adds the xdebug_time_index function, which returns the number of
seconds that have passed since the script started. This implementation has
a precision of microseconds like php5 xdebug.

Depends on D1392774

Reviewed By: @ptarjan

Differential Revision: D1398587
Reenable RecursiveDirectoryIterator tests.

Summary: Race condition happened, my fix went in after Bert disabled them.

Reviewed By: @bertmaher

Differential Revision: D1437222
Fix warnings for duplicate int/string keys in collections

Summary: We recently started calling HashCollection::warnOnStrIntDup for both Maps
and Sets, but the message was specific to Sets. Fixed the wording.

The test for duplicate keys in HashCollection::warnOnStrIntDup was actually testing
the values; which was fine for Sets, but meant that we rarely issued warnings for
Maps. We only called warnOnStrIntDup if there were fewer elements in the result
array than in the original Map (ie only if there *were* duplicate keys). So we only
got a warning if there were both duplicate keys *and* duplicate values. Fixed it to
test the keys.

Reviewed By: @paroski

Differential Revision: D1436332
Make better portability OSX binary packages with GCC

Summary: The simplest application of the patch, after the removal of gcc from the system hhvm will still be working on OSX, apple doesn't have gcc >= 4.8. When transferring to another Mac or build PKG #3132 before that I couldn't run.
Closes #3195
Created from: https://github.com/facebook/hhvm/pull/3195

Reviewed By: ptarjan, fredemmott

Differential Revision: D1437024
fix MaxRss out of bounds hhvm don't stop problem

Summary: When more than 6g not stop hhvm,beacause function Process::GetProcessRSS return type is int;
if Process::GetProcessRSS return value than 1024*6, Process::GetProcessRSS * 1024 * 1024 in checkMemery , it return value is 0;
So is never greater than 0 MaxRSS;

e.g:

	#include <stdio.h>
	int main () {
	   int a = 1024 * 1024 * 1024 * 12;
	   printf ("%d\n",a) ;
	   a = 1024 * 1024 *  12;
	   printf ("%d\n",a) ;
	   return 0;
	}

print result:
0
12582912

we see first var a have out of bounds.

so we can modify Process::GetProcessRSS return type to int64_t solve this problem.

I have tested this modify way.
Closes #3189
Created from: https://github.com/facebook/hhvm/pull/3189

Reviewed By: @ptarjan

Differential Revision: D1435402
SplFileObject->seek() throws a LogicException on negative values

Summary: Split from  #3056
Closes #3175
Created from: https://github.com/facebook/hhvm/pull/3175

Reviewed By: @ptarjan

Differential Revision: D1432749
Fix a segfault cleaning up persistent sockets

Summary: This is a fix for #3074 where cleaning up dead persistent sockets
sometimes caused a segfault, because the dead socket was removed
from the persistent resource store before being closed. Removing
an object from the persistent resource store can end up deleting
the object, which is what happened in the segfault case.
Closes #3101
Created from: https://github.com/facebook/hhvm/pull/3101

Reviewed By: mwilliams, ptarjan

Differential Revision: D1435379
Hide 0Closure variable from getDefinedVariables

Summary: Closures have an internal variable "0Closure" that points to the last
defined function. Previously, calls to get_defined_vars would return
this (and php5 didn't). This modifies VarEnv::getDefinedVariables so
that the "0Closure" variable is not included.

Reviewed By: @jano

Differential Revision: D1401578
Better error message when timing out

Reviewed By: @aryx

Differential Revision: D1438431
autocomplete json, add information about variadics

Summary: There are two types of variadics

  function t2(int $a, string ...$a);
  function t1(int $a, ...);

Respective outputs are

            "params": [
                {
                    "name": "$a",
                    "type": "int",
                    "variadic": false
                },
                {
                    "name": "$args",
                    "type": "string",
                    "variadic": true
                }
            ],

and

            "params": [
                {
                    "name": "$a",
                    "type": "int",
                    "variadic": false
                },
                {
                    "name": "",
                    "type": "_",
                    "variadic": true
                }
            ],

Reviewed By: @joelbeales

Differential Revision: D1437768
Move instead of deleting old server log

Summary: This should help debug server crashes that are only noticed
after a new server has already been started.

Reviewed By: @aryx

Differential Revision: D1438423
removed a bad assert that could potentially fail

Summary: When an ArrayObject or ArrayIterator is cast to an array the convert_to_array function would grab the storage property of the array and return the value. If someone used reflection to make the storage property visible then unset the property an assert would be tripped in the convert_to_array function.

Reviewed By: @ptarjan

Differential Revision: D1419817
Get rid of compatibility exit in emitJmpHelper

Summary: As t3730079 says, this turns out to be redundant with the fallthrough logic in translateRegion, and that's a better place to centralize this decision.

Reviewed By: @ottoni

Differential Revision: D1434790
Allow merging FrameStates with different local types

Summary: We already union the local types in FrameState::merge(). So,
FrameState::compatible() should not need to check for equality
of local types.

Reviewed By: @ottoni

Differential Revision: D1399916
Expose single-block loops

Summary: Even with Eval.JitLoops=true, loops with a single region block weren't
being exposed.  This diff adds those backedges if appropriate.

Reviewed By: @alexmalyshev

Differential Revision: D1431761
Add support to HHBBC for marking all functions interceptable

Summary: Will be turned on when you set the compile-time option to enable
rename function.  At repo build time, will add AttrInterceptable to every
function, so you don't need to specify EnableRenameFunction at run time.

Reviewed By: @markw65

Differential Revision: D1434019
Clean up CONTRIBUTING.md

Summary: CONTRIBUTING.md was mostly a duplicate of a section in README.md. I
deduped the content, cutting the README.md section down to a link to
CONTRIBUTING.md. I also reordered and cleaned up some of the text in
CONTRIBUTING.md.

Closes #3205
Created from: https://github.com/facebook/hhvm/pull/3205

Reviewed By: @ptarjan

Differential Revision: D1439724
bump third-party submodule hash
Merge pull request #3208 from dcsommer/master

bump third-party submodule hash
Add quick jit to framework test runner

Summary: Todo in separate diffs:
 - investigate why FB build has some test failures when run this way, but OSS doesn't (same for quickinterp)

Reviewed By: @LiraNuna

Differential Revision: D1438880