Remove the SharedStores wrapper, don't dynamically allocate APC

Summary: There's no reason to put it in the heap, and we don't need the array
of APCs anymore after D1568138.  Let's still delay construction until the same
point, even though it's in a bit of an odd place right now....  (It shouldn't
be before main in any case: it will soon want to read runtime options to know
the initial table size.)

Reviewed By: @mclarkelauer

Differential Revision: D1585742
Move shared-store-base* to apc-file-storage* and rename SharedStoreFileStorage

Summary: The name is historical, and after removing SharedStores it's the only
thing in this header.

Reviewed By: @edwinsmith

Differential Revision: D1585758
Move StringData::Make(const APCString*) functions to string-data.cpp

Summary: These were initially in apc-string so they could be inlined into their
only caller.  But now they aren't called from this translation unit anymore
(and also with useUncounted on we do this a lot less often).  Moving them back
to string-data shouldn't have any effect.  Also "MakeSharedSlowPath" was still
named after the old "SharedVariant", and had nothing to do with the new
"MakeShared".

Reviewed By: @edwinsmith

Differential Revision: D1587043
remove two blacklist extensions

Summary: one was refering to a stupid file, the other i actually covered below

Reviewed By: @paulbiss

Differential Revision: D1588752
Delay type inference of lambdas.

Summary: See code comments.

I think this fixes https://github.com/facebook/hhvm/issues/2787.

There's a larger problem where we don't raise a warning if we're
unsuccessful in inferring the concrete type of a lambda's parameters.
This patch simply reduces the number of cases where we are unsuccessful.

Reviewed By: @jwatzman, @elgenie

Differential Revision: D1582361
Fix handling of exit() in nast_terminality

Reviewed By: @elgenie

Differential Revision: D1590318
Set $name and $class properties in reflection to "public" to leave __get and __set methods free for inheritance

Summary: fixes #2684
Closes https://github.com/facebook/hhvm/pull/3848

Reviewed By: @paulbiss

Differential Revision: D1578197
Fix some typos and "formatos".

Summary: Closes https://github.com/facebook/hhvm/pull/3891

Reviewed By: @paulbiss

Differential Revision: D1588549
Revert "[hack] Fix type error in framework perf script"

Summary: This reverts commit e9fed0cb2ffdf0225d4cc90f16b09f035495124d.

9f7ffd38dac09d9e73c4a5a02d99699546ed41e5 has fixed the typechecker to handle
exit() properly.

Reviewed By: @ptarjan

Differential Revision: D1590510
Make parser aware of by-ref variadics [#3888]

Summary: Parser will now recognize by-reference variadics and won't throw a syntax error.
Closes https://github.com/facebook/hhvm/pull/3895

Reviewed By: @elgenie

Differential Revision: D1589731
Remove definition of pipe operator

Summary: OCaml 4.00 defines the pipe operator, and the compiler is able to
optimize it so as to avoid creating a closure:

http://www.ocamlpro.com/blog/2012/08/20/ocamlpro-and-4.00.0.html

So we should remove our own implementation, and hopefully get some small speed
benefit in the process.

Reviewed By: @pathsny

Differential Revision: D1590919
Make status flags explicit in VASM.

Summary: Add a "status flags" class of virtual registers, and explicitly encode
uses/defs for all VASM instructions which affect status flags.  This
provides a mechanism for making dependencies between instructions that
set status flags and those which consume them.  The immediate
application is for translation from VASM to LLVM IR, but this also
enables various optimizations (code motion, strength reduction, etc.).

Remove the unused rorqi from VASM rather than converting it to
incorporate a status flags register.

Reviewed By: @edwinsmith

Differential Revision: D1578876
arraykey: ReflectionParameter::getClass bug

Summary: ... arraykey is a special hiphop only typehint that does
 *not* correspond to a `ReflectionClass`

Reviewed By: @paroski

Differential Revision: D1589092
make first class enums non-extendable by regular classes

Summary: ... and therefore ReflectionClass::isFinal becomes true for
 ReflectionClass of enums.

Reviewed By: @jdelong

Differential Revision: D1589531
reflection support for first-class enums: enum_exists [1/2]

Summary: * function enum_exists : similar to {trait|interface}_exists
 * ReflectionClass::isInstantiable now returns false for enums

Reviewed By: @jdelong

Differential Revision: D1589055
Turn off profile-guided string specialization

Summary: It's causing a bunch of spurious guards on unused values in profiling
translations, which can then lead to unnecessary optimizing
translations.  This diff adds a runtime option to control this
optimization, and leaves it off by default.

Reviewed By: @swtaarrs

Differential Revision: D1590282
Introduce a Vreg128 class, use it in 128-bit SIMD instructions

Summary: This provides enough information for vasm-xls to choose 64-bit
or 128-bit spill slots.

Reviewed By: @jasone

Differential Revision: D1583511
Stronger vasm dead code analysis.

Summary: Now that status flags are explicit we can compute liveness of
instructions that modify flags.

Reviewed By: @jasone

Differential Revision: D1591668
Tweak wholecfg region former, and fix a bug in translateRegion

Summary: This diff makes 2 tweaks to wholecfg region formation:
  - stop a region when reaching a SrcKey that has already been optimized

  - regionize a function in increasing order of bytecode offsets, so
    that we start from the the function body

These changes exposed a bug in translateRegion when running unit
tests, where a fall-through jump was incorrectly going to the next
region block.  This was due to the use of the nextOffset in the
NormalizedInstruction, which should only be used to enable jump
flipping in hottrace mode.  So add an assert to make sure this field
isn't used with bytecode control flow.

Reviewed By: @bertmaher

Differential Revision: D1590831
move NEWS to top-level

Summary: @​ori was chastising me that we needed release notes, and then I showed him this file. He was happy it was here but wanted it be more discoverable.

Reviewed By: @jdelong

Differential Revision: D1590325