Don't let any instructions sneak in between call/syncpoint/unwind

Summary: The call, exception-edge, and syncpoint are logically all in the
same program point. Until they're smushed together into one vasm
instruction, assert nothing gets between them.

Reviewed By: @alexmalyshev

Differential Revision: D1547922
Remove unnecessary copying in various Dbl ops

Summary: Now that they get virtual registers, we can rip out a bunch
of shuffling code that was making sure values were in good
registers before and after doing an operation.

Reviewed By: @oyamauchi

Differential Revision: D1549800
Force the linker to keep symbols in lowmem on MacOSX

Summary: We can't reach them from the TC with offsets
if they're way up there in 0x0000000100000000 and higher...

Closes #3642

Reviewed By: @ptarjan

Differential Revision: D1552243
Force the php5/ng opcache to on

Summary: Docs say it's on by default, this doesn't appear to be true.

Reviewed By: @JoelMarcey

Differential Revision: D1552557
use hostname instaed of localhost for benchmark requests

Summary: Changes what wordpress does for 301s in an unrealistic way

Reviewed By: @JoelMarcey

Differential Revision: D1552555
Move vasm traces to its own trace mod

Summary: There might be something smarter to do but for now this should be
slightly improved.

Reviewed By: @edwinsmith

Differential Revision: D1552900
Migrate MySQL configs to ::Bind

Summary: Doing this proactively now for a few sites in order for my bad ini node diff to work without a lot of test runner `.expect` changes.

Plus this is the right thing to do anyway.

Note: I removed the `IniSetting::Bind` line because that is now duplicative to the new `Config::Bind` line above it.

Reviewed By: @ptarjan

Differential Revision: D1547854
Remove ini refactoring parameter artificat

Summary: Before `FillInConstants` I had overloaded `Set` to the chagrin of some. I forgot to actually remove `constants_only` as a paramater to `Set`.

Reviewed By: @paulbiss

Differential Revision: D1548688
Better fix for the static property race

Summary: If two threads tried to initialize static properties
for a derived class at the same time, and both tried to initialize
same same persistent property, the second one could overwrite
the property's value with garbage.

Reviewed By: @edwinsmith

Differential Revision: D1552834
Remove Accept-Encoding header

Summary: See comments in nginx.conf.in

Reviewed By: @oyamauchi

Differential Revision: D1552856
import readline tests

Summary: We start to support readline, yey!
Relevant commit 30cb287
Closes https://github.com/facebook/hhvm/pull/3723

Reviewed By: @sgolemon

Differential Revision: D1548083
Fixes to .hhi files for ConstSet, Set, and ImmSet

Summary: D1551381 updated the .hhi files for ConstSet, Set, and ImmSet, but there
were some type mismatch issues. This diff fixes those issues.

Reviewed By: @elgenie

Differential Revision: D1551943
Introduce arraykey type

Summary: The keys of Hack collections only allow ints or strings at runtime. The
type checker is currently unaware of this restriction. Keys for PHP
arrays also have this restriction, with the addition that floats and
nulls will be implicitly converted to either ints or strings, something
we probably do not want in Hack.

This is the inspiration of the arraykey type. It is simply a union type
of int and string so Hack is aware of what valid array/Collection keys
are.

I still need to add HHVM support, and update the hhi files for
collections to use these types but I will do so in follow up diffs.

Reviewed By: @jwatzman, @elgenie

Differential Revision: D1543856
fix fgets bug & redis sockReadLine bug

Summary: doc for ``fgets`` from php.net::

    Reading ends when length - 1 bytes have been read, or a newline (which is included in the return value), or an EOF (whichever comes first). If no length is specified, it will keep reading from the stream until it reaches the end of the line.

3 situation when fgets return:

1. read got '\n'
2. eof
3. read length-1 bytes

**but in the code, there is one more situation** ::

         m_writepos = filteredReadToBuffer();
         m_readpos = 0;
         if (bufferedLen() == 0) {
           break;                              /////////////////////////  if read got 0 bytes
         }

Socket::readImpl (hphp/runtime/base/socket.cpp) may return 0 bytes if ``poll`` got timeouted.

so fgets may return a string not endwith '\n'

Closes https://github.com/facebook/hhvm/pull/3713

Reviewed By: @sgolemon

Differential Revision: D1552835
Fix segfault in readline_clear_history

Summary: One test remaining.
Closes https://github.com/facebook/hhvm/pull/3724

Reviewed By: @sgolemon

Differential Revision: D1548684
Allow .ini and .hdf files to be specified to the HHVM wrapper.

Summary: I like using the HHVM wrapper (hhvm_wrapper.php). I like being able to specify
configuration files to HHVM. Let's marry the two together.

Reviewed By: @ptarjan

Differential Revision: D1514597
Make segfaults during .skipif still run the test

Summary: *sigh* I spent a day trying to figure out why this was ok on my machine. It turned out it WAS segfaulting on my machine just the test runner ignores segfaults during the .skip phase and says all the tests passed. :(

I can't wait to see what fails in testing...

Reviewed By: @JoelMarcey

Differential Revision: D1547980
Get rid of -Wno-uninitialized

Summary: This is a pretty useful warning. Turn it back on and fix the fallout.
It's amazingly limited damage, considering what usually happens when
warnings aren't turned on.

Reviewed By: @markw65

Differential Revision: D1547861
Make Type::rawVal() work whenever Type::isConst() returns true

Summary: And clean up a number of places that had special handling for cases rawVal() didn't work despite isConst() being true.

Also, kill hasRawVal().

Reviewed By: @edwinsmith, @alexmalyshev, @bertmaher

Differential Revision: D1548617
Make guard relaxation work with unreachable code

Summary: Guard relaxation was relying on the simplifier + preoptimizer during
IR generation to eliminate unreachable code due to type-checks that
will always fail.  Such dependence is undesirable, and there are
special cases where the simplifier + preoptimizer aren't able to
eliminate unreachable code anyway.  This diff makes guard relaxation
more robust, so that it doesn't crash in such cases.

Reviewed By: @edwinsmith

Differential Revision: D1551777