Do not discard first frame of output buffer handler

Summary: PHP5.4 fixed this behavior, so should we.

Fixes #2690

Reviewed By: fredemmott

Subscribers: hphp-diffslists, ps

Differential Revision: D1333042
Include scope string in json output of search results

Summary: Same api as monocle. If this is a class member (var or method), include the name of the class that it's part of.

Reviewed By: jwatzman

Subscribers: hphp-diffslists, ps, jwatzman, ptc

Differential Revision: D1327701
Upgrade to curl-7.36.0

Summary: Lots of bug fixes and Happy Eyeballs is now implemented in
curl.

Reviewed By: bertrand

Subscribers: ps, trunkagent, hphp-diffslists

Differential Revision: D1328961
Convert zend-url functions to smart_malloc

Summary: Convert imported php5 url functions to using smart_malloc-based
Strings. This mandates a few downstream changes.

Reviewed By: aravind

Subscribers: trunkagent, mwilliams, hphp-diffslists, ps, jdelong

Differential Revision: D1331794
hackificator adds "public" modifier if possible

Summary: My first try at ocaml, let's see how it goes.

related to https://github.com/facebook/hhvm/issues/2388
Closes #2474
Fixes #2388

Reviewed By: pad

Subscribers: hphp-diffslists, ps, jwatzman, ptc, joelm

Differential Revision: D1334523

Pulled By: @jwatzman
Preserve the information gathered on PHP files

Summary: We currently remove the information we have (cf FileInfo) on PHP files.
It is no longer necessary, since the rest of the pipeline works fine even
with PHP files (it just ignores them).

Reviewed By: pad

Subscribers: hphp-diffslists, ps, jwatzman, ptc

Differential Revision: D1334832
Fix autocomplete

Summary: We need to clear out these errors if `fail` is false. Make this
code more readable too while we're at it.

Reviewed By: joelb

Subscribers: hphp-diffslists, ps, jwatzman, ptc

Differential Revision: D1334810

Tasks: 4352006
fix precoloring

Summary: If the builtin function returned a struct by value in memory, and had
no other arguments, precoloring would try to read off the end of
the (null) func->params() array.  Also, this fixes precoloring to
properly hint the 0th arg when it's pointing to the return value.

Reviewed By: bertrand

Subscribers: seanc, hphp-diffslists, ps

Differential Revision: D1334372
Reflection classes should not be cloneable

Summary: PHP does not allow cloning of Reflection classes. Please note that this implementation differs a bit: PHP fatals while we throw an exception.

Fixes #1572

Reviewed By: fredemmott

Subscribers: hphp-diffslists, ps

Differential Revision: D1334388
Improve saving locals in AwaitE

Summary: Use xmm registers for saving locals in AwaitE, and use a
loop if there are too many locals.

Reviewed By: jan

Subscribers: trunkagent, hphp-diffslists, ps

Differential Revision: D1329013

Tasks: 4332184
perf: teach hphpc about second arg to *_exists functions

Summary: There is a second argument (default true) to class_exists,
 interface_exists, function_exists (HHVM only), defined (HHVM only).
 However, hphpc completely ignored expressions that provided a second
 param, even though the only rewrites it does don't care about whether
 autoload happens or is at all successful.

Reviewed By: mwilliams

Subscribers: hphp-diffslists, ps

Differential Revision: D1334918
Finish cleaning up array_fill_keys

Summary: - Add separate setting for ignore/warn/error
- Make EnableHipHopSyntax set to error (can be overridden)
- Add ini settings for both Hack.Lang hdf options
- remove EnableHipHopSyntax-specific behavior:

Before (matches array indexing behavior):

```
array_fill_keys([1.234], 'foo') // creates array(1 => 'foo')
```

After (matches PHP5):

```
array_fill_keys([1.234], 'foo']) // creates array('1.234' => 'foo')
```

Reviewed By: alexanderm, eletuchy

Subscribers: trunkagent, jwatzman, hphp-diffslists, ps, joelm

Differential Revision: D1289097
collections: add (Imm)Set::fromKeysOf

Summary: To eliminate the intermediate array allocated as part of the ##new
 Set(array_keys($x))## pattern. Some other collection libraries
 address this by adding a ##keySet## method to their keyed containers,
 but arrays don't have methods and we want to know about immutability.
 Note that even if collections were backed by an array, the array_keys
 pattern would not have produced the right array shape.

 Also, this diff includes some forgotten calls to ##reserve## from
 (Imm)Set initialization.

Reviewed By: bill

Subscribers: hphp-diffslists, ps, joelm

Differential Revision: D1328928
collections: be more aggressive about sizing (Imm)Set

Summary: ... it's possible that code will be written that attempts
 `new Set( ['a','a','a','a','a','a','a','a','a','a',])`, but that
 should not be common case. This diff optimistically reserves current
 size + incoming number of values capacity and then compacts if
 necessary after inserting all the values.

Reviewed By: andrewparoski

Subscribers: hphp-diffslists, ps, joelm

Differential Revision: D1335736

Tasks: 4324040
collections: add Set::retain

Summary: The same as Set::filter, but instead of creating a new result Set to
 hold the values that pass the given predicate function, instead
 mutate the original set and remove values that don't pass the
 predicate.

 This is useful for code that wants to destructively update the Set without
 intermediate unnecessary allocations, since we invalidate iterators for
 `foreach ($s as $i) { ... $s->remove($i); ... }`.

Reviewed By: andrewparoski

Subscribers: jdelong, julienv, hphp-diffslists, ps, joelm

Differential Revision: D1328836
mark some tests as .norepo due to unsound optimization ...

Summary: It was being slimed around by the optimization of {D1334918}
 only being applied to ##class_exists('arg')##,
 not ##class_exists('arg', true)##, despite the fact that the two are
 semantically equivalent. Let's be more honest.

Reviewed By: bertrand

Subscribers: hphp-diffslists, ps

Differential Revision: D1335857
Corrected the implementation of DOMDocument::createComment

Summary: Copy-pasta made `DOMDocument::createComment` actually create a CDATA tag. This diff corrects that.

Reviewed By: fredemmott

Subscribers: hphp-diffslists, ps

Differential Revision: D1334749

Tasks: 4349320
Another round of zend-string conversions

Summary: Convert another round of php5 string APIs to using
smart-malloc backed Strings.

Reviewed By: smith

Subscribers: trunkagent, hphp-diffslists, ps

Differential Revision: D1332801
Revert "[hh] perf: teach hphpc about second arg to *_exists functions"

Reviewed By: smith

Subscribers: hphp-diffslists, ps

Differential Revision: D1336047
Make ak_exist return a bool

Summary: Casting the result to int64_t isn't necessary and prevents
tail call optimization from kicking in on ArrayData::exists

Reviewed By: jdelong

Subscribers: hphp-diffslists, ps

Differential Revision: D1333247