Make ob_start function signature PHP 5.6 compatible

Summary: The `erase` parameter was removed in PHP 5.4. There is now a `flags` parameter.
We didn't use `erase` and we don't use `flags` yet either (that is for another issue).
But we are call compatible now.

Fixes #3694

Reviewed By: @paulbiss

Differential Revision: D1677599

Signature: t1:1677599:1415836259:d232548c902e1fdb8a0a3e0cb59d96e7e961253b
Add fixed-point analysis to FrameState

Summary: Adds FrameState::computeFixedPoint, which takes a BlocksWithIds& and
produces a fixed-point analysis. IRBuilder::reoptimize is now making use
of it.

Reviewed By: @jdelong

Differential Revision: D1629737
Output clowntown-notests when all the tests we requested were skipped

Summary: "Running" only skipped tests is as bad as not running any tests.

Closes #4280

Reviewed By: @paulbiss

Differential Revision: D1688529

Signature: t1:1688529:1416343178:9b84ea619da31001c878e549c584bf2c9bdcf5ff
parity: match php 5.6 in treatment of array_fill with num = 0

Summary: ... also update the warning text to match

Reviewed By: @paulbiss

Differential Revision: D1687282

Signature: t1:1687282:1416288526:250a0430a81bf906d5ea8699b492553c431a551d
Fix make-parser.sh

Summary: third-party is no more. use third-party2 instead, and
be more robust about finding the latest build.

Reviewed By: @edwinsmith

Differential Revision: D1690734

Signature: t1:1690734:1416409624:24b161fa3d737e3fa659b8beca7b80a170a043fc
Revert "Add fixed-point analysis to FrameState"

Summary: This reverts commit cac907bc7eae1636dad6ad2c596c1577a410d4fd.

Reviewed By: @markw65

Differential Revision: D1690790

Signature: t1:1690790:1416412566:e0a56bbf66c2e38ed3d51c50cfe934cf2b14c86f
Don't throw an exception on unknown IP address for OSS

Summary: We've been getting by fine without one till now...

Also fix a logic inversion in GetPrimaryIP()

Closes #4261

Reviewed By: @JoelMarcey

Differential Revision: D1688666

Signature: t1:1688666:1416344847:cae9516c8f78ea8f1e716e920e1ddccdbd9adc2b
Trie Search - optimizations for JS

Summary: Add the key optimization for '.', since the dot character will be used in the javascript index like :: was for PHP.

Also: made the keys for the trie always lowercase, since search is case insensitive.

Reviewed By: @jwatzman

Differential Revision: D1685443

Signature: t1:1685443:1416267556:37d2c30e37b2caafe42242a491869201ea85fc96
Remove genv dependency from dfind

Summary: It was never being used.

Motivation is I want to reuse the dfind code without all the dependencies that adds.

Reviewed By: @jwatzman, @int3

Differential Revision: D1685387

Signature: t1:1685387:1416262437:4741b0be29cc17d8a13d2c3089ddb89d9998161c
No more perpetual clown in test runner

Summary: The previous call to `Status::getResults()` was returning an empty array (scoping,
I think). So just pass in the `$results` array directly from the callsite like we
do with `print_failure`.

Reviewed By: @edwinsmith

Differential Revision: D1690858

Signature: t1:1690858:1416415518:f7da929467c72283280f60c7a5c8ed4e4db07a90
Stop cloning timelib_tzinfos

Summary: They're readonly, and we keep a cache of them, so just
use the cached ones.

Reviewed By: @jdelong

Differential Revision: D1689771
Fix leak in tvCoerce*

Summary: We cant delete DeleteUnwinderExceptions

Reviewed By: @jdelong, @edwinsmith, @swtaarrs

Differential Revision: D1690785
Add sparse_id_set and sparse_id_map containers

Summary: The map version can replace some StateVector usage with less
construction cost (StateVector has O(N) creation), and it can replace linear
scans for things like refineLocalValues in frame-state (or a similar thing for
load-elim).  The sparse set might be useful but I don't have a specific use
case right now.  I suspect there are a lot of hphp_hash_sets or maps keyed on
SSATmps we could replace in various passes, too.

Reviewed By: @edwinsmith

Differential Revision: D1672139

Signature: t1:1672139:1416059793:91fe214d1ac1d0e31f9c9e15c59298eda4544f6e
Add a pass to assign ids to abstract locations and compute may-alias info

Summary: Change the store elimination stuff to use it, which means it can
eliminate dead stores to heap locations (at least in contrived examples).  (The
LocationAnalysis doesn't need to be recomputed every time we do store or load
elimination, so it'll probably be an argument to optimizeMemory eventually, but
not for now.)

Reviewed By: @swtaarrs

Differential Revision: D1684012
Add sparse-id-containers support for lookups with non integer types

Summary: First time I tried to use it I wanted to give it an SSATmp* key, which
it didn't support.  Make it support structures that convert to ints by default;
for pointers you need to pass a converter.  In the jit add some type aliases to
make that short and use it at the one use site.

Reviewed By: @edwinsmith

Differential Revision: D1684325

Signature: t1:1684325:1416235658:7685412f24703675d719abaed9701329e623dcf4
refactor smartMallocSizeBig

Summary: For jemalloc, it uses a never-inlined helper. otherwise, it
is layered on top of smartMallocBig, and I wanted to break
the dependency of the size-tracked allocator api on the guts
of smart_malloc. (ultimately, so big size-tracked don't use
BigNode at all).

1. make smartMallocBigHelper return a pair<void*,size_t> instead
of returning ptr & size by ref. (the ptr-by-ref arg was unused!)

2. move smartMallocSizeBig to memory-manager-inl.cpp, since both
paths would make a call anyway. (I'm counting on big allocations
not being very hot).

3. inline smartMallocSizeBigHelper into the jemalloc version of
smartMallocSizeBig

4. Factor out common code so just the different parts are #ifdef'd.
It would be nice to use if(use_jemalloc) instead of #ifdef, but
that would break the non-jemalloc build.

Reviewed By: @bertmaher

Differential Revision: D1690829

Signature: t1:1690829:1416421088:4b692cdabc235eb8b6a223a9de8cbb211679c749
Add plumbing to allow Hack build to hook into filesystem and php changes

Summary: Do file filtering later in hackProgram and introduce two new hooks to run before rechecking and after rechecking with a list of files that have changed and the current state of the world.

Reviewed By: @​jcreed

Differential Revision: D1685460

Signature: t1:1685460:1416413160:d08a044491ba09c96f105dfd32f88c68aa337fec
Update NEWS for Vanilla Ice

Summary: We released HHVM 3.4.0 which included Vanilla Ice. Update NEWS for it.

Reviewed By: @ottoni

Differential Revision: D1691048

Signature: t1:1691048:1416426980:3c4af5b888b38e42367b9c2d49e6b2e56ee91853
Add lz4 compression when saving server state.

Reviewed By: @elgenie

Differential Revision: D1689677

Signature: t1:1689677:1416370871:a25c3855816085332025d51c27ae6dd759e75e35
Parse the smart heap in debug mode.

Summary: This adds a HeaderKind enum, updates initializers to initialize
the kind byte, and adds a HeapIter class to parse the whole heap.

Refactored the constructors for ArrayData, ObjectData, and ResourceData
to store the initial kind and count using a single store.

FreeList::push() adds a second store because we have to initialize the
next pointer and kind/size fields, which are in different words. Once we
have a contiguous heap, we can initialize a free block with one store,
by compressing the next pointer.

Reviewed By: @jdelong

Differential Revision: D1655037