Modified collections to use smart allocators.
Support post_max_size for ini_get()

Summary: When asked for post_max_size, return it.
Update doc for Uploading options

Summary: At some point these got moved into their own node.
Revert "Free memory for preg and memcache"

Bisecting in h2e showed this diff is the rev that causes the elevated
stacktrace rate.  I imagine we'll want to debug and fix it but to unblock
getting an rc out for now we'll revert temporarily.
Fix multidim assignments with collections for hphpc

Expressions like "$x[0][1] = 123;" were fataling under hphpc if $x was a
collection, regardless of whether key 0 was present and regardless of the
type of value at $x[0]. Fix that.
Fix verifiability when FPass* are elided

In WholeProgram mode, we would convert FPass*
instructions to their known-at-compile-time
equivalents, and then drop the actual FPass*
instruction.

This broke verifiability. Instead, we emit the
equivalent CGet/VGet, and emit a NopOut FPass*
bytecode.

While I was there, NopOut some hand generated FPassC
instructions too.
Fix collection get() and at() methods

The get() and at() methods for collections were missing a cast from
TypedValue* to CVarRef, causing them to return true or false instead of
returning the value. Fix that.
Fix class typehints in IDL for HPHPc

Forward declarations were missing in the generated headers if type
contained a class name instead of just Object. Add them.

Class typehints in extensions still doesn't work in HHVM, but at least
it's possible to test impact of improved knowledge of types in HPHPc.
src/test/hopt_preparable.php doesn't need 10000000 iterations
Update string hashes to use MurmurHash3.

Update string hashes to use the 128-bit version of MurmurHash3
(previously used 64-bit MurmurHash2).
Fixed code generation bugs in LdThis and in ActRec allocation for magic calls

Fixed a code generation bug in LdThis where we did not
consider the case that the LdThis target is dead but LdThis itself is
not because of its checks. This was causing the destination register
to be reg::noreg. Fixed a bug in ActRec allocation where we needed to
mask in a 1 into the lower bit of ActRec::m_invName for magic
calls. Added a check to TranslatorX64::translate to check if we have reached
the translation limit for a SrcRec. Fixed an assert in SrcRec::newTranslation
that was off by one: When newTranslation is called when a SrcRec has reached
its limit it will cause the number of translations to become
kMaxTranslations+1, so the assert must check that we are one less than that.
Fix crash involving static properties with traits

Some programs that used static properties with traits would cause the VM
to crash while building the Class. Here is an example:

  <?php
  final class Foo {
    use Bar;
    private static $a = array();
  }
  trait Bar {
    private static $a = array();
  }

The crash was happening because was the m_staticProperties map of the
current class was being accessed before it was initialized. This fixes the
logic to directly read m_val from the SProp structure for static properties
declared by the current class to avoid this problem.
Fix crash involving LateBoundCls instruction

The impl for the LateBoundCls instruction was missing logic to handle the
case where there is no late bound class (ex. inside a regular function).
Fix LateBoundCls to raise a fatal error for such cases instead of crashing.
Add missing error checks to copy()

HipHop Fatal error: Unexpected object type stdClass. when copy() is called
with a bad http:// URL source, for example:

copy('http://does.not.exist', '/tmp/foo');
Fix reflection to correctly retrieve doc comments for generators

Calling the getDocComment() method on instances of ReflectionFunction or
ReflectionMethod was always returning 'false' if the function/method was
a generator.

This diff adds the missing plumbing in the parser to make this work
correctly and adds some test coverage.
Don't use String/AttachDeprecated just to free a malloc'd buffer.

Remove one use of AttachDeprecated; all its being used for is
to optionally free a buffer; that's not so hard to do.
Use StringData* instead of StringData::m_data for hash lookup

For HphpArray lookups, we compare StringData::m_data for
pointer equality, and if that fails, we do a memcmp for
content equality. This diff changes it a StringData*
comparison for pointer identity, which eliminates the
StrinData::m_data dereference.
Add bytecode support for call_user_func and friends

By adding bytecodes, we can avoid a re-entry. In
addition, we can optimize various cases to avoid
the dynamic lookup.
Autoload should not create new Strings

We were passing a StringData::data() to a method taking a
CStrRef, which causes a new StringData/String to be created.

Instead, wrap the StringData in a CStrNR, and pass that.
Share a RetC in 86cinit methods.

Summary: 86cinit methods have a lot of rets, and they all do the same basic work. This change to the emitter branches to a shared ret body.