Support custom stream wrappers in XMLReader::open()

Summary: This is similar to the treatment that was applied to a few other places in
842d6fb7dcd6d: manually create an IO object and use that to create the
xmlTextReader, rather than just calling xmlReaderForFile. This fixes web
importing of pages in MediaWiki.

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

Reviewed By: @ptarjan

Differential Revision: D1576426

Pulled By: @swtaarrs
Skip translation of region blocks that turn out to be unreachable

Summary: Region formers may create regions that contain blocks that the IR can
later prove they won't be reached. When this happens, the region
translator will try to call IRBuilder::startBlock() on a block for
which no FrameState is saved.  This isn't supported: IRBuilder assumes
that, before emitting code to a block, at least one of the
predecessors has been finished.  This diff changes the region
translator to skip blocks that turn out to be unreachable, and it
strengthens the region checker to check both the assumption above and
that a region is in topological order unless loops are enabled.

Reviewed By: @alexmalyshev

Differential Revision: D1578127
Remove control flow related code

Summary: Its been dead since I turned off Option::ControlFlow

Reviewed By: @jdelong

Differential Revision: D1578124
jit/containers.h shouldn't pull in smart-containers.h

Summary: We're using std containers right now, so there's no reason to pull in
the smart ones.

Reviewed By: @edwinsmith

Differential Revision: D1579289
Move GuardConstraints to its own header

Summary: There's no reason for everyone to include it via ir.h

Reviewed By: @ottoni

Differential Revision: D1579426
Move StackValueInfo methods to simplifier.cpp

Summary: This lets us forward declare SSATmp and IRInstruction in simplifier.h
Since simplifier.cpp is the only user of StackValueInfo methods this
shouldn't change perf.

Reviewed By: @edwinsmith

Differential Revision: D1579548
Move our punting mechanisms into a separate header

Summary: Not needed in ir.h, so lets not include them all over them place.

Highly doubt moving the exception constructors will cause a perf
regression.

Reviewed By: @edwinsmith

Differential Revision: D1579698
Remove side-exiting arcs from TransCFG

Summary: Since D1052990 switched slow side exits from doing REQ_INTERP to do
actual InterpOnes, arcs due to slow side exits started to be inserted
in the TransCFG.  The hottrace region selector had logic to avoid
following these arcs when forming a region, and wholecfg would need
something similar.  Instead of replicating that logic in wholecfg,
this diff prevents the insertion of such arcs in TransCFG altogether.

This issue was caught by the region checker running wholecfg in perflab.

Reviewed By: @bertmaher

Differential Revision: D1578852
Add {setup,teardown}Request methods to RequestHandler

Summary: Should be useful for enforcing that MemoryManager is only used within
request contexts, and also maybe for other purposes.

Reviewed By: @markw65

Differential Revision: D1575448
DynamicYield: no more prepareXXX functions

Summary: yup

Reviewed By: @jano

Differential Revision: D1580123
Add --list-tests option

Summary: This will be used by the new test-runner-runner @ fb.

Reviewed By: @JoelMarcey

Differential Revision: D1579422
Fixup origins during vasm immediate folding

Summary: I noticed we were missing seemingly random vasm instructions in
our assembly dumps. I tracked it down to the immediate folding, which
would replace the old Vinstr containing a valid IRInstruction origin
with a new Vinstr with no origin set.

Reviewed By: @edwinsmith

Differential Revision: D1579895
Add new quick hull benchmark

Summary: Added a new benchmark named QuickHull that computes the convex hull of
1000 points using the quick hull algorithm (see:
http://stackoverflow.com/a/18418182). The benchmark leans heavily on
struct-like arrays for representing points and line equations. It also
makes frequent use of some array_* library intrinsics (e.g. array_reduce).

Reviewed By: @jdelong

Differential Revision: D1573015
Fix LowStringPtr pretty printer

Summary: My LowStringPtrs have always printed out as "LowStringPtr '(type str)'"
and I just figured out why.

Reviewed By: @mxw

Differential Revision: D1578616
HTTPAcceptor

Summary: Remove http specific stuff from Acceptor, cut over to http-less config options

The rest of Acceptor looks good to move to wangle after alan's ssl changes

Reviewed By: @dcsommer

Differential Revision: D1540400
Add push steps

Reviewed By: @wez

Differential Revision: D1566212
Use specialized types for the base object when doing member access.

Summary: Prior to this patch we only specialized the base type when doing member
access if the Type that we had was for a small subset of collection objects
(e.g. pairs, vectors, maps, etc.) Now we always constrain the base if we have
a Type with specalized class. This is a 20% win on our small subset of the
Octane benchmarks. Splay (54%!!) and Richards (29%) benefitted the most. Perflab
results aren't quite as positive with what appear to be slight i-cache
improvements and slight improvements in CPU instructions.

Reviewed By: @jdelong

Differential Revision: D1560957
Add surprise check to str_split

Summary: Doing str_split on a large string can create a very large array.
Putting the check in a loop probably isn't ideal, but checking after is too
late...

Reviewed By: @edwinsmith

Differential Revision: D1576257