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
Some systemlib cleanup

Summary: Refactor to allow us to build sub-libraries

Reviewed By: @ptarjan

Differential Revision: D1579650
Carry through build options from cmake command line

Summary: This makes it possible to carry through build options from the cmake
command-line, by, exporting the environment, eg.:
  CMAKE_C_FLAGS="${CFLAGS}" CMAKE_CXX_FLAGS="${CXXFLAGS}" cmake
in a complex build environment.
Closes https://github.com/facebook/hhvm/pull/3855

Reviewed By: @ptarjan

Differential Revision: D1580318
Add an option to not test in repo mode

Summary: The repo tests sometimes hang for me or take a unreasonable amount of time.
Add an option to skip them. Default is still to test it though.
Closes https://github.com/facebook/hhvm/pull/3858

Reviewed By: @ptarjan

Differential Revision: D1580850
Fix a bug in castBoolImpl for arrays

Summary: Pretty bad bug.  It was ignoring the 'negate' arg.

Reviewed By: @bertmaher, @swtaarrs

Differential Revision: D1580833
Remove unused m_shouldCache bool in APCHandle

Summary: Nothing reads it, except to set it elsewhere.

Reviewed By: @alexmalyshev

Differential Revision: D1571331
Tweak headers so changing concurrent-shared-store.h doesn't rebuild world

Reviewed By: @alexmalyshev

Differential Revision: D1573497
Some clean up in APCHandle

Summary: - Move DataWalker to its own file

    - Add apc-typed-value.cpp and move some member function definitions there

    - Remove some unused or redundant functions

    - Normalize some naming (getFoo vs isFoo)

    - Renamed isObj (it really meant isNotSerializedObj) and inverted it so it
      parallels isSerializedArray.

    - Fix data race in setObjAttempted

    - Document thread-safety rules and add some consts accordingly

Reviewed By: @alexmalyshev

Differential Revision: D1574091
Removed unused includes and types from ir.h

Summary: Things were depending on translator-runtime.h indirectly. Bleh.

Reviewed By: @bertmaher

Differential Revision: D1579882
Add short form option for help command

Summary: It is quit common to use -h option for cli command
Closes https://github.com/facebook/hhvm/pull/3803

Reviewed By: @ptarjan

Differential Revision: D1568492
ReflectionClass::getStaticPropertyValue throws exception if not found & ...

Summary: ...no default value given

This is ugly, but I see no other way.

Fixes #3841

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

Reviewed By: @ptarjan

Differential Revision: D1578221
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
Align recoverable fatal error's message with PHP