Load Offset->line number mappings on demand

Summary: We don't use all the line number we store, since it's only used for
backtraces, warnings, and the like.  To save space, pull the line table out of
the repo when needed, and then cache the specific (Offset,line#) pairs that
were needed

Reviewed By: @jdelong

Differential Revision: D1616637
Fix assert related to async return typehints

Reviewed By: @markw65

Differential Revision: D1644719
Fix bug in HHBBC's RemoveUnusedLocals

Summary: It was missing a range check.

Reviewed By: @jdelong
Experiment: One cache property per object

Summary: The yield->memoize codemod currently shows a pretty serious memory regression. While having a property for each memoized funciton should save memory over one caching array should save memory if nearly every memoized function is used, one theory is that the average percentage of called yieldFoo() functions on objects is so low that this actually turns into a regression. This diff used one cache array per object like DynamicYield to test out that theory

Reviewed By: @jano

Differential Revision: D1644721

Signature: t1:1644721:1414626585:c8d2ba6d2f8d0282313a7292375451e6826ceb16
Skip arbitrary number of 0xff padding bytes in JPEG

Summary: There's no reason to limit the number of 0xff padding bytes while trying
to parse JPEG. Let's remove the arbitrary limit of 26 and keep reading
the file and skipping them.

Reviewed By: @billf

Differential Revision: D1650960
fix sandbox access logs

Summary: I broke this by moving the logging into teardownRequest without preserving sourceRootInfo.  Make this an Optional (eg: delayed construction) member and clear it after logging is complete.

Reviewed By: @markw65

Differential Revision: D1650759
Optimization for non-typehinted functions

Summary: For functions with args and nullable return or no typehint, we need to do a slightly slower check of the cache to guarantee we're correct. However, async functions never return null since they always return awaitable. This lets us use the faster check for memoized async functions with args and no return type hint. There aren't very many of those in prod right now but there are a bunch in the codemod.

Reviewed By: @jano

Differential Revision: D1652958

Signature: t1:1652958:1414790937:58ac19de0cc39ee0887b9d54de0bad167a45a924
Widen bools before storing them

Summary: The testcase stored an unwidened bool with garbage in
the high 56 bits prior to this fix (and asserted in dbg builds).

Reviewed By: @alexmalyshev

Differential Revision: D1648569

Signature: t1:1648569:1414630806:9622d3981838ad3cf92cc055905f6057e7e9f8cf
Fix a use-after-free issue with TimeZone

Summary: I'm trying to debug a double free issue with
TimeZone. I don't think this is it, but in the case
of a race, GetTimeZoneInfoRaw would have returned
a raw pointer, right after freeing it. So there was
certainly a use-after-free issue here.

Reviewed By: @ottoni

Differential Revision: D1651248
Remove assert in hphp_memory_cleanup

Reviewed By: @markw65

Differential Revision: D1658587