Mark unreachable blocks as processed

Summary: So that we can properly assert that a block only has unprocessed
predecessors when loops are enabled.  In a last minute change to
D1578127, I made an assert more strict but it's now firing in wholecfg
with unreachable blocks.

Reviewed By: @alexmalyshev, @bertmaher

Differential Revision: D1580786
Add SugarCRM to runner

Summary: Reproduction of the widely shared benchmark. We do poorly, but it's not representative of real load.

Reviewed By: @ptarjan

Differential Revision: D1576538
Add various ParamCoerceModeFalse flags

Summary: Fixes 87 Zend tests
Closes https://github.com/facebook/hhvm/pull/3762

Reviewed By: @ptarjan

Differential Revision: D1558103
xenon: use fixed size arrays

Reviewed By: @jano

Differential Revision: D1479916
Convert array to HNI

Summary: #fixes 3648

array_multisort has not been moved to HNI because it requires mixed variadic arguments, which is currently not supported by HNI.

Reviewed By: @ptarjan

Differential Revision: D1551812
Objprof Profiler (Version2: Instance Tracking)

Summary: Objprof Profiler (Version2: Instance Tracking)

The main features of this version:
* No more noise
* Sizes for objects

API:
objprof_start - strats tracking instantiation/freeing of ObjectData* using ObjectTracker::get() (thread local).
objprof_get_data - gets a snapshot of current tracked instances, total sum of bytes and count.

Actual scan of properties is using the to_array function of ObjectData (same one that is used for serialization).

PHP will periodically call "objprof_start" and at the end of the request / at some checkpoints will call "objprof_get_data".
the PHP dataset (perfpipe_objprof) will have an additional column of "State" that could have a short state description such as "outlier_mem_p99", "random" or "before_oom".

(since all tests pass and phabricator sev prevents sandcastle from building, after talking with@ptarjan I'm trying to override the unit tests and attempt arc land again)

Reviewed By: @markw65

Differential Revision: D1541503
improvements to hphp/tools/out2expectf.py

Summary: I found these changes in my tree on my old devserver and I think they're good to have

Reviewed By: @JoelMarcey

Differential Revision: D1581913
Fix Memcached::(inc|dec)rement(ByKey)? when ASCII protocol is used

Summary: We weren't correctly dispatching to the right memcached_* function,
causing it to always fail when using the ascii protocol. There's still one
divergence from PHP5: if an initial_value is given but the connection is using
the acsii protocol, PHP will raise a warning and return false, but we'll
silently ignore the initial value and continue on with the increment. Details
are in the comment.

Closes https://github.com/facebook/hhvm/issues/3839

Reviewed By: @ptarjan

Differential Revision: D1579907
Stop returning systemlib data in Reflection

Summary: I removed a slow test, because I copied it and added more function to test on.

Fixes #3852
Closes https://github.com/facebook/hhvm/pull/3857

Reviewed By: @ptarjan

Differential Revision: D1580841
Typing of multi-argument array_filter

Summary: This is the same as single argument one, except it doesn't remove the nullability from the value type.

Reviewed By: @jwatzman

Differential Revision: D1575720
Improve Result creation in HHVM

Summary: Most of our users (from conversions) still get the result as a Vector of Maps, this was super slow. But it is the easiest way for them to access the results. With this diff, we should probably gain perf and memory in the existing code that uses the map. We are no longer duplicating the strings.

Major optimization but simple! Each time we pass to map a `const char*`, it actually creates a HPHP::String. We don't actually want this! We want it to ref the only one copy of the fields, we actually have only one copy in the C++ side, but the extension doesn't.
Ref: diffusion/FBCODE/browse/master/hphp/runtime/base/type-string.h$133-137,160-163

Adding FieldIndex class, which holds the HPHP::String for each column. This way even using our slow buildRows, we won't have the duplication by simply passing HPHP::String around.
Sometimes we don't have RowFields, because the query is empty, or doesn't have this kind of result :). I preferred to still instantiate FieldIndex just to avoid having a shared_ptr that is nullptr.

Removing some duplicated code and putting the field interpretation in one place.

Adding `at` to MysqlRow so users of this interface don't need to make a call saying the type of the field, but just getting a mixed. The goal with this was to have a simple interface for MysqlRow so the acceptance would be bigger.

Some naming conversions are inconsistent here, but I'll leave to fix them later.

Reviewed By: @chipturner

Differential Revision: D1570690
xenon: move into its own directory, cleanups

Summary: - move into runtime/ext/xenon
- add 'noexcept', 'const' where appropriate
- migrate from 'static' to anonymous namespace
- final class xenon
- 'override' on inherited virtuals

Reviewed By: @jano

Differential Revision: D1581855
remove async stacks from xenon

Reviewed By: @jano

Differential Revision: D1582160
Fix spelling of IMAGICK_COLOR enum

Summary: Not important, but it looks silly

Reviewed By: @alexmalyshev

Differential Revision: D1580239
Enable static polymorphism where safe.

Reviewed By: @jwatzman

Differential Revision: D1568599
Fix a leak in HNI ActRec functions

Summary: They don't free their extraArgs. Since the main reason
for using an ActRec function is to allow extra arguments, this
seems like it might be quite common.

Reviewed By: @edwinsmith, @jdelong

Differential Revision: D1580527
ArrayUtil::RegularSortUnique(): pre-allocate array based on unique count

Reviewed By: @elgenie

Differential Revision: D1580109