Rename _ to - in runtime/base, part 2

Differential Revision: D912410
Rename files in runtime/base, part 3

renamed runtime/base/*file*

Differential Revision: D912500
Add literal and pattern exclude option to test/run

Run a whole suite except for specified tests

Differential Revision: D912868
Coerce uninit->null in HphpArray 'add' functions.

The vector shape code calls addVal() in more ways than
before, so there might be client code seeing uninit when
they used to see null before.

Differential Revision: D912686

Blame Revision: D879416
Delete CmdUser

One more step on the road to deleting the hphpd client API.

Differential Revision: D908926
Fix some macro name collisions in vixl

As I try to include vixl from the jit backend, these macros are clashing
with ours. Codemod them all to use our macros from util/assertions.h.

Differential Revision: D912687
Delete atomic_inc

This was a little weird: I deleted the definition first, and everything
compiled because all the usages now are behind ifdefs that we don't test
regularly. In the interest of not ruffling feathers over deleting this
code, I just went ahead and made the changes. I would like to suggest
deleting all this stuff, especially the GOOGLE_HEAP_PROFILER stuff, for
which the make target has been deleted for a long time.

Again, all the usage sites are using the default memory order specifier,
which is memory_order_seq_cst. They could stand to be relaxed, but I
didn't find it worthwhile.

I'd also like to replace atomic_acquire_load and atomic_release_store
with portable and correct alternatives. We really just shouldn't be
rolling our own atomic primitives.

Differential Revision: D909903
Rename files in runtime/base, part 4

type_* and tv_*

Differential Revision: D912522
Add RuntimeOption::TLSClientCipherSpec

We need a way to configure which cipher suites are used when
we are acting as a TLS client using Curl. This option accepts
the standard OpenSSL cipher suite spec, which will allow us
to turn off some cipher suites.

Upgrading OpenSSL without this will cause us to send too many
cipher suites in the client hello, crashing Bing's F5 load
balancers.

Differential Revision: D911814
Add CURLOPTs to override TLS options from PHP

This will let us use TLSv1.2 or specialized cipher suites on internal
requests while avoiding breaking Microsoft and other partners on
external requests.

Differential Revision: D912541
Remove the debugger client API

The debugger's API mode added a lot of extra complexity to the debugger client for minimal value. It also had a bunch of bugs, and unnecessarily tied alternate debugger clients to the command line client implementation. Deleting it.

Differential Revision: D912729
Record block postconditions and use them to prune CFG arcs

The region selector will now refrain from choosing paths
through the translation CFG where the postconditions of the
sequence of blocks chosen up until that point have no chance of
passing guards.

Differential Revision: D907313
Handle case where a break point is hit followed by a continue that returns to the break point without intermediate interpreted instructions.

Breakpoints correspond to source lines, not byte code operations, so more than one operation may correspond to a break point. Each operation checks for breakpoints, so breakpoints are disabled when encountered, otherwise commands such as continue and next would get stuck on a line until all the byte code operation for a line have been carried out. Such break points are re-enabled as soon as a byte code for another line is executed. This does not work if no other byte codes are carried out (i.e. if JITted code runs) until control loops back to the disabled break point. Consequently the disable logic now keeps track of the offset of the byte that first triggered disablement. If the break point is still disabled by the time control comes back to that byte code, the break point is temporarily enabled.

Differential Revision: D909092
Fuller implementation of get_defined_constants() to support categorization

The PHPUnit test suite calls get_defined_constants(true), for categorization. We threw. Now we don't. Now we actually do something sort of correct, but not fully correct. We have a "user" and "core" constant categorization. Function cleanup and consolidation. That's good. But Zend categorizes even more into extensions. This is a first step. And two (2) tests now move from zend/bad to zend/good.

Differential Revision: D909942
Use unit->isInterpretOnly() inside JIT, not VM, so that debugger eval can invoke JITted code

The units that result from Eval code injected by the debugger should always be interpreted because they are used once only, however, any code invoked by these units should be JITtable. This diff moves the test for disabling the JIT from VMExecutionContext to Translator::isSrcKeyInB. It also fixes a cut&paste error that inverted the logic for Unit::isInterpretOnly().

Differential Revision: D913723

Blame Revision: D904873
Refactor HphpArray internal helpers

Create and use set[Val,Ref] and init[Val,Ref,Lval,WithRef]
helpers, to factor out tricky, repetitive code.  These will
get even more airplay as we add more shapes.

This diff also fixes a bug in PopVec(): we need to erase the
value (and update the array's fields) completely before
calling decref on the value.  Getting this wrong can mess
things up with array<->object cycles because calling decref
can reenter another array method, which would see the fields
in an invalid state.

Differential Revision: D905136
Add a dedicated VectorInit helper for vector-shaped arrays.

This replaces ArrayInit's vectorInit constructor.  When we
know we're making a vector-shaped array, there's no need to
internally use the general array api; ArrayInit provides the
api, internally we do what's fastest.

Differential Revision: D903252
Parsing member modifiers refactorization.

Currently, normal functions are not allowed to have modifiers and
closures can be marked only with 'static' keyword, which needs special
treatment in the parser. Let's change it so that it's parsed in the same
way as method modifiers. This will help us later when introducing 'async'
modifier for both functions and closures.

Differential Revision: D913903
Moving type inference of generator calls to FunctionCall expr.

Let's move the type inference for generators from function scope to
function call, so that the original infered type is kept in func scope
and can be used later (will be useful especially for async functions
lates).

Differential Revision: D913970
Basic support for async functions using continuations.

Adding basic support for async functions using continuations, which should be semantically fully equivalent to yield wait_for() etc.

Differential Revision: D911571