Stop punting on '' === $s

Summary: Codegen was expecting simplifier to have canonicalized constants to the
right, but simplifier didn't do so in the specific case of Same on
strings. Thanks to vasm, it makes no difference to codegen whether
constants are canonicalized right, so just remove the check from
codegen.

Found this by looking for InterpOne while running Wordpress. This takes
it from 0.3-0.5% of bytecodes interp-oned on most endpoints down to a
consistent 0.1%.

Reviewed By: @ottoni

Differential Revision: D1603546
Fix test/slow/ext_gd/imageweb.php

Summary: @​rrh made me aware that the test was not passing any more with a more recent version of libvpx.
This commit corrects the test and should be robust enough for any future update.

Instead of just printing the header and the file size, it now checks if the header is valid and the specified length matches the real length of the file.

Fixes #3927
Closes https://github.com/facebook/hhvm/pull/3929

Reviewed By: @JoelMarcey

Differential Revision: D1603569
Fix NumberFormatter::format for string values

Summary: The parameter type would be checked instead of the type after converting it to a number (toNumeric)
That would result in having a type of TYPE_DEFAULT instead of the derived type from the parameter hence always trying to format the Int64 value on strings

Also make NumberFormatter::create's third parameter optional.

Fixes  #3936
Closes https://github.com/facebook/hhvm/pull/3938

Reviewed By: @JoelMarcey

Differential Revision: D1605804
asio: override & final virtual methods, classes

Reviewed By: @jano

Differential Revision: D1582474
Update docblock in hh_shared

Summary: The previous version was misleading at best (I'd probably say
"full of lies"). This corrects some of the misleading bits and
elaborates some more on the details and invariants.

Reviewed By: @int3

Differential Revision: D1604674
Add wholecfg as an ini output for the region selector

Summary: `wholecfg` was added as an output to `hhvm.jit_pgo_region_selector`

Reviewed By: @swtaarrs

Differential Revision: D1607784
xdebug-not-done -> xdebug

Summary: This changes the `XDEBUG_NAME` macro from `xdebug-not-done` to `xdebug` and also xdebug ini settings from `hhvm.xdebug-not-done.*` to  `xdebug.*`, matching php5 xdebug. This just involved a find and replace and updating `xdebug.enable` to use ini instead of hdf.

Closes a TODO in #3704.
Closes https://github.com/facebook/hhvm/pull/3779

Reviewed By: @ptarjan

Differential Revision: D1563675

Pulled By: @paulbiss
Fix annoying typechecker tests that have to be updated with every single change

Summary: I didn't know that hh_show works that way when I wrote them. I switch them to instead pass the value to functions and use the lack of error message as a verifier. It's not checking it as strictly as comparing hh_show, but the current approach is not acceptable.

Reviewed By: @jwatzman

Differential Revision: D1606478
Implement readline_info()

Summary: Used php-src for this.
readline is now at 100% good zend tests
Closes https://github.com/facebook/hhvm/pull/3799

Reviewed By: @JoelMarcey

Differential Revision: D1568453
Unbound fixes #2

Summary: Me again, sorry! So after the last issue discussion, here I am adding hhi unbounds manually when I encounter them.

- Added constants to file, json, mb, and a few string modules
- Added finfo module
- Added lots of reflection stuff
Closes https://github.com/facebook/hhvm/pull/3726

Reviewed By: @jwatzman

Differential Revision: D1550354
remove FOLLY_OVERRIDE usage in hphp

Summary: we currently have a mix of using 'override' and FOLLY_OVERRIDE so the macros do not help anything.

matches the removal of FOLLY_FINAL from hphp.

Reviewed By: @jdelong

Differential Revision: D1607671
Fix shouldTranslate() for Optimize translations

Summary: We used to allow Optimize translations regardless of the
Eval.JitAMaxUsage limit, but I recently broke that while refactoring
the code to use shouldTranslate() to also check the
Eval.JitGlobalTranslationLimit limit.  This diff fixes the issue.

Reviewed By: @swtaarrs

Differential Revision: D1604752
Temporarily stop the ini_get_all_* test pain

Summary: Before we have a mutiny, we should rethink how we want this test to optimally work.
Apparently the value of some runtime options change more often than first thought.

So, skipping the test for now, until we come up with the right solution. Options are:

  # Whitelist only the option names and values that are likely to be used externally and we want to track. **What are those options?**
  # Have the test only catch name changes, additions, removals? This would lessen pain, but could still cause minor annoyance.
  # Get rid of this test completely and document the settings in code and make sure we have detailed code review on option changes? **Brainstorm: Is an arc diff hook possible here??**

Reviewed By: @jdelong

Differential Revision: D1609762
Raise calls in vasm to new vcall instruction

Summary: vcall encapsulates much more information about a call than the raw
call instruction, which is necessary for emitting llvm from vasm. For direct
x64 code generation, a lowering pass converts the vcall into what would've been
emitted before this diff.

Reviewed By: @maksfb

Differential Revision: D1593725
Remove Vout::m_area

Summary: It should always point to a valid block, so just get the area from
that.

Reviewed By: @maksfb

Differential Revision: D1602828
Vasm pretty printing part 3

Summary: The register allocation phase inserts a lot of instructions
without giving them origins. This patch fixes that.

Reviewed By: @swtaarrs

Differential Revision: D1607032
Fixed vfsstream touch test cases.

Summary: Expose STREAM_META_ constants to hhvm runtime.
Closes https://github.com/facebook/hhvm/pull/3955

Reviewed By: @paulbiss

Differential Revision: D1610551
Use FixedVector for Class::m_[sp]initVec

Summary: This saves 32 bytes, bringing Class down to 280 in the lowptr build.
It's not quite a size class down yet, but it gets us that much closer.

Reviewed By: @jdelong

Differential Revision: D1609365
Shrink Class to 256 bytes

Summary: Shrink some fields that seem like they can be safely shrunk, apply
LowPtr, and move some stuff around.  Also reduce SProp from 56 to 48 bytes by
moving a field.

Reviewed By: @jdelong

Differential Revision: D1610488
Use a global cache for timezone info

Summary: Instead of caching the same info in every thread, share it using a
global AtomicHashArray.  I also considered pre-computing all the tzinfo, but a
good number of them seem unlikely to be used, so they'd just be taking up
space.

Reviewed By: @mclarkelauer

Differential Revision: D1607602