Macroify definitions of all the prop* functions
Improve side exits from HHIR to tx64-generated translations

When a side exit from an HHIR-generated translation was taken, a
BIND_JMP service request was being used, which would make it create a
new HHIR translation at the exiting bytecode. This translation would
then generate a REQ_RETRANSLATE_NO_IR to produce a tx64 translation.

This diff avoids the useless HHIR translation generated for the
exiting bytecode in case no translation for this bytecode exists when
the service request is made.  This is done through a new
BIND_JMP_NO_IR request that directly generates a translation for the
exiting bytecode without HHIR if no translation for the SrcKey exists.
emitFCallD needs to take a Func*

The function could be a method, so trying to look it
up using a passed in name could fail (and is pointlessly
expensive, since we've already determined the correct
func anyway).
Minor test/ext_curl fixes

- Fail early if anything other than TestCodeRun* is run with
  an hhvm build
- Set the m_url field of CurlResource in the copy constructor
- Don't fail TestExtCurl if test_curl_copy_handle fails. I've spent a
  day trying to figure out why this is failing on Jenkins without much
  luck so far and I want to cut down on the test noise.
Fix side-exits for incorrect type predictions

The side exit for an incorrect type prediction should
got to the next instruction; not re-execute the instruction
that just produced an unexpected result.
Remove AttachDeprecated mode for StringData

In many places we were doing malloc(size) followed
by String(ptr, len, AttachDeprecated). Update this
to use the StringData(int reserve) API.
Streamline copyImpl() code in HphpArray

This is a code cleanup patch to make it easier to spot
bugs and refactor code.

Numerous functions in HphpArray check to see if they must
copy the array first, then contain two whole copies of
the function body, one if we copied and one if we didn't.

There's already a coding style in some functions that avoids
the duplicated code;  this patch uses that style in the rest
of the code.

Early results show this is about 0.1% increase in CPU
Instructions but about 1% decrease in CPU Time, although
some endpoints have 1% noise
Let _count float in emitCopyTo.

We're explicitly zeroing out the _count field
in emitCopyTo. The destination is always an hhval,
not a Ref, so it can't matter.
Generator cleanup

Fold Continuation and GenericContinuation into a single class and remove
unused fields, reducing the size of Continuation by 8 bytes for hphpc and
24 bytes for hhvm.

Also get rid of the gross MethodCallPackage/CallInfo hack for generators
as it is no longer needed.
Dont create/destroy std::strings for literals

ConcurrentTableSharedStore logs a lot of its actions. It
passes a literal string to log_apc, which expects a std::string,
causing it to create/destroy a std::string every time (resulting
in a malloc/free).

Create a global std::string for each literal string thats used.
Add room for header before rounding up in smart_malloc

If we add space for the header before rounding up, then the usable
pointer will be 8-aligned.  However, if we throw away 8 bytes at the
start of every slab, all usable pointers will then be 16-aligned.

To reduce waste, add more size-classes (one every 16 bytes up to 2KiB).
Make EMIT_RCALL use the passed Asm& for recording the fixup
Initial support for generators in HackIR, fix a few existing bugs

This diff adds and uses IR instructions to support all
continuation bytecode instructions (except ContHandle, which is still
interpOned like in Tx64). Because the ir doesn't support Switch yet
and supporting it might end up being a lot of work, I've added a
runtime option to allow emitting Switch that defaults to true,
unless Eval.JitUseIR=true.

I've also fixed a couple existing continuation bugs:
- The exception handler region inside Continuation::next and
  Continuation::send (under hhvm) was wrong: it's intended to cover
  the body of the generator so it should only cover the FCall, not the
  ContNext/ContSend. ContNext/ContSend were changed to not push the
  continuation on the stack so they can be pulled out of the eh
  region.
- Continuation::next and Continuation::send were setting the received
  field before performing their sanity checks. This could lead to
  wonky behavior if the current value in the received field messed
  with the Continuation object in its destructor. hhvm (jit, interp,
  ir) and hphpc now all perform the sanity checks before setting the
  value.
Put the translation cache in low memory

If the translation cache is in low memory, calls to c++ helpers
dont need trampolines. Also, burnt in TCA addresses fit into 32 bits.
Avoid malloc when creating strings in ext_fb

Using StringData's ability to reserve space, we can steer more
string allocation traffic to small strings and smart_malloc'd strings,
at clean up code at the same time.

This also fixes a missing request-memory-limit check in smart_realloc.
Prefetch next entry in GarbageList.maybePop()

This might reduce the chance of an LLC-load-miss when allocating
from a freelist in smart_malloc and SmartAllocatorImpl::alloc.
Remove a bunch of VMRegAnchors from targetcache.cpp

None of these were needed, either because the function they
were calling had its own VMRegAnchor or they just needed an fp which
was being passed in anyway.