Don't spill everything for FCallBuiltin

Summary: This diff tries to minimize saving FCallBuiltin arguments to the stack.  It takes a similar approach to emitNativeImplInlined, which is to leave only the pass-by-ref args on the stack, and create a custom catch block to handle the clean up.  The code is subtly different from NativeImplInlined, because the args are already on the eval stack coming in, and handling that takes some care.  There's still probably too much copypasta in this diff, but I didn't come up with any clean division that I liked better -- feel free to suggest some.

Reviewed By: @jdelong

Differential Revision: D1358809
Use logarithmically spaced size classes for "smart" allocation.

Summary: Use logarithmically spaced size classes for "smart" allocation
(smartMallocSize(), smartSizeClass(), etc.), rather than quantum-spaced
size classes.  Additionally, increase the limit for smart allocation
from 2^11 to 2^21 (same as the slab size).

For sizes up to 4096, use a 256-byte lookup table to convert request
size to size class index, which is ~50% faster than directly computing
the size class index.  Allocation requests larger than 4096 are a
miniscule proportion of total requests, so direct computation allows for
generality without sacrificing speed, nor requiring a huge lookup table.

Preallocate a small number of additional regions whenever slabAlloc() is
entered in order to amortize the cost of leaving the fast path of
freelist recycling.

Reviewed By: @edwinsmith

Differential Revision: D1336072
Move ExecutionContext::m_firstAR to VMRegs::firstAR

Summary: Need to update firstAR from JIT on a hot path (switch of currently
running async function). It's much easier to do if it's in RDS.

FirstAR should be eventually killed altogether, but it is not easy yet.

Reviewed By: @swtaarrs

Differential Revision: D1370326
Clean up ActRec flags

Summary: Enum does not make sense here. Still keeping them around as bits.

Reviewed By: @jano

Differential Revision: D1369961
Clean up some ir state merging issues

Summary: I traced a test failure on D1365041 to the fact that we weren't always
propagating state between blocks when we needed to. The biggest issue is that
the done_block in IRBuilder::cond wasn't empty when we appended it, so we
weren't loading up its saved state. I added an assert that we can't enter a
block with predecessors unless it also has saved incoming state, which caught a
bigger issue with how IRBuilder::getKnownTypes() works. This has always been
pretty sketchy, so I fixed it properly by making it its own, full pass over the
IR after all optimizations are finished.

removeGuard() in guard-relaxation.cpp has been eliminated because it was
causing more state propagation issues and hasn't been needed ever since we made
the Check/AssertType opcodes intersect their input and type params.

Reviewed By: @ottoni

Differential Revision: D1369383
Don't call analyze() unless we need the Tracelet

Summary: This should cut down jit time overhead in the tracelet selector.

Reviewed By: @ottoni

Differential Revision: D1370433
Disable test/slow/collection_classes/frozen_map/cow_large.php

Summary: We need to keep master green

Reviewed By: @jdelong

Differential Revision: D1370851