don't block on eof()

Reviewed By: @fredemmott

Differential Revision: D1178064
allow a[0][1] = 2 in the ini parser

I want this for replacing .hdf

Reviewed By: @fredemmott

Differential Revision: D1178147
Remove the pseudo-DCE of arguments to Call

We can't convince ourselves of the soundness of this optimization, so
it's going. It's similar to the SpillStack optimization we removed
previously.

This gets rid of the last use of Type::None as a type param in an
IRInstruction, so I'm putting in an assert to that effect.

Reviewed By: @edwinsmith

Differential Revision: D1166284
Make method_exists work with interface inheritance

This matches PHP 5.5.

Reviewed By: @scannell

Differential Revision: D1171617
Fix a typo in thisAvailable flag

Reviewed By: @edwinsmith

Differential Revision: D1177869
Add a global dce pass for hhbbc

Leaving it off by default because bugs in it would be hard to
track, and for now it doesn't remove very many more stores (I suspect
because hphpc is doing this also).  We can turn it on when it does
more and after more testing.

Reviewed By: @swtaarrs

Differential Revision: D1177838
Tweak Type to make it easier to add data with non-trivial copy constructors

I think we're probably going to want to put things in Data
that have non-trivial copy constructors at some point (e.g. for
non-static array subtypes), and more than once I've wanted to do it
temporarily as part of prototyping a type system change.  Using
folly::Optional<> makes it hard for this case, because Data is a union
and would have to have a copy constructor, but it doesn't know how to
copy itself because it doesn't contain its own type tag.

Reviewed By: @swtaarrs

Differential Revision: D1177979
Handle non-trivial Type::Data copying, put the wait handle type into DObj

It seems more natural in here.  It should probably get its
own DataTag later, but for now this keeps dobj_of, is_specialized_obj,
and a few other things working with fewer special cases (which would
involve carrying around a pointer to the Index if it has a wait handle
to be able to get a res::Class for WaitHandle later).

This also adds a separate tag for specialized data.  This should make
things a little easier when adding new types that can have data,
because we can have exhaustive switch statements.  It also means we
can have some type bit patterns that could support multiple types of
data later (I will probably need this for arrays).

Reviewed By: @swtaarrs

Differential Revision: D1178029
Actually enable FuncFamilies

Previous diff forgot to actually toggle the bit.

Reviewed By: @dariorussi

Differential Revision: D1177934
Replace isPowerOfTwo/nextPower2 with folly equivalents

In the title.

Reviewed By: @edwinsmith

Differential Revision: D1175454
Avoid streams in realpath() for Zend compatibility

Avoid using streams in realpath() for Zend compatibility

Closes #1785

Reviewed By: @fredemmott

Differential Revision: D1178221

Pulled By: @scannell
hash_hmac signature compatibility

Change hash_hmac to accept all types for the second argument
and automatically cast it to a string before hashing, as Zend does

Closes #1822

Reviewed By: @fredemmott

Differential Revision: D1178261

Pulled By: @scannell
Deserialization of non-existent object parity

Deserializing a non-existant serialized object that implemented
Serializable now no longer throws a fatal error by default

Reviewed By: @ptarjan

Differential Revision: D1175680

Pulled By: @scannell
allow all runtime settings to be set by ini files

I couldn't find a single member of the team that liked HDF files (except maybe @markw65 who was pretty indifferent a few months back). For PHP compat we must support INI files anyways. Having 2 config formats for the same things is bad pracice. These 3 points seem to make migrating out of HDF into INI a no-brainer. Now how to do it?

I'm planning that every HDF option is flattened down to an ini option prefixed with `hhvm.` and converted to underscores instead of camel case.

The migration path is to support all options to be settable by both ini files and hdf files. Then move everything over to ini files, then delete the hdf support.

I changed the `-c` option to support either hdf or ini. Then I moved all the important logic from `hdf.cpp` to `RuntimeOptions`. `::Bind` is the most important for now. The final diff in this series will remove `hdf` as an argument to any of the functions and to all the parsing routines.

A few decisions I made along the way:
* The main API is `Bind(Variable,...)` instead of `Variable = GetBool()`. I like the compiler to decide what type you want. This makes it a bit awkward to replace `bool foo = hdf["thing"].getBool();` so there is a `GetBool` for temporaries, but please use it sparely as it won't actually make an ini setting.
* I used `folly:dynamic` as the container for INI settings and put the parsing logic on RuntimeOptions. I'm open to other ideas here if we want a dedicated parser or holder.
* I'm not using an INI section header, since PHP ignores those when parsing `php.ini` files, I want our files to be parsable by vanilla php too.
* I was pretty careful with defaults, always verifying that the statically set one exactly matched the one that was really used, which was passed into the HDF parser.

Reviewed By: @fredemmott

Differential Revision: D1155179
Revert "allow all runtime settings to be set by ini files"

This reverts commit 76c6728961cb84895c07b398a468162ae1420e6d.

Reviewed By: @fredemmott

Differential Revision: D1182776
Update NEWS for upcoming release

Let me know if you have additions

Reviewed By: @ptarjan

Differential Revision: D1178692
Remove linear-scan again.

Reviewed By: @jdelong

Differential Revision: D1175599
Fix preg_replace with /e not to segfault

- When running with /e and the result was bigger than the buffer we segfaulted

Fixes #1810

Reviewed By: @ptarjan

Differential Revision: D1176864
Fix bug in way function types are serialized to the Code Model.

The serialization code did not deal correctly with the special case where a function type has no argument types. The code for converting a Code Model to PHP text suffered from a similar problem.

Reviewed By: @paroski

Differential Revision: D1176389
SideExitJmpZero and ReqBindJmpZero only take int|bool

SNum meant they could take int|bool|double, but JmpZero had already
been modified to not take double.  Fix these as well.

Reviewed By: @jdelong

Differential Revision: D1177948