Make the region compiler more conservative when doing inline decrefs at RetC

The region compiler was counting Type::None as an "uncounted"
type when deciding whether it should emit an inline sequence of
decrefs at the end of a function vs. calling a helper.  In
cache_get_scb, this leads to a sequence of 52 DecRefLoc's in a row,
which just can't be good for icache.

Reviewed By: @edwinsmith

Differential Revision: D994936
* is added to indicate the current line of code

insert a start to indicate the current line of code if colorization is off.

Reviewed By: @mikemag

Differential Revision: D983975
Move emitFallbackJmp stuff out of TranslatorX64

This is starting to broach the thorny issue of what we do about all the
jump emitting and smashing machinery in the SrcDB family. I think I'll
end up factoring out all that logic into its own module which knows how
to emit and smash jumps on all platforms.

Reviewed By: @jdelong

Differential Revision: D995736
Replace some EvalSimulateARM checks

Once we start trying to run on ARM hardware, we'll need to start doing
some stuff differently. The idea here is to separate the questions "are
we emitting ARM code?" and "are we running the ARM simulator?".

Not all checks of the flag are gone; in particular, the stuff that reads
the simulator's stack pointer, and that sets it up in enterTC, should
actually be checking if we're simulating.

I'm open to suggestions on naming; I just wanted something terse.

Reviewed By: @jdelong

Differential Revision: D995817
Change git hash for phpbb3. Check for git hash changes in the code. Allow the forced regeneration of expect files.

The phpBB folks fixed their tests as a result of some of our findings. This precipitated a change in the git has we were using to download the source code. Also, this required us to check whether a git hash has changed and, if so, redownload the entire framework. Also added a capability to force a regeneration of an expected results for for a given framework. This could be useful after a redownload or other occasions.

Thanks @alexmalyshev for the heads up re: the phpBB source change.

Reviewed By: @ptarjan

Differential Revision: D996779
stop populating TRACK_VARS_REQUEST

There is no code in php-src that relies on this, and the variable that holds it doesn't even have space for a 7th entry.

Reviewed By: @scannell

Differential Revision: D997179
Don't let a pointer to a local escape its scope

This code was written before tvScratch existed, and this is exactly
what tvScratch is intended for.

Reviewed By: @markw65

Differential Revision: D995591
Add pgo shortcut to test/run

So I don't have to remember options

Reviewed By: @ottoni

Differential Revision: D996775
Remove box_value wrapper function, call RefData::Make directly

To do this I changed RefData::Make to take a TV.  I like the
result, but feel free to disagree and I'll change it back.

Reviewed By: @jdelong

Differential Revision: D992097
Side exits are conditional

so its best not to smash them with unconditional jmps

Reviewed By: @jdelong

Differential Revision: D997385
Use a global litstr table in RepoAuthoritative/WholeProgram mode

When we're building a repo in WholeProgram mode, create a
single unified Litstr table for all static strings that we encounter
in all units, and use this table when running in RepoAuthoritative
mode.  This appears to save ~100MB of repo compared to the previous
method that stores strings for each unit separately in the UnitLitstr
table, since we had a lot of duplication.

Still use the UnitLitstr if we're not doing WholeProgram/RepoAuth,
because multiple processes attempting to use the same repo can try to
write the same string with different IDs, and that causes all sorts of
problems.  We could maybe deal with that by getting the database
involved when try to get a litstr ID, but that seems more complicated
than it's worth.

Reviewed By: @markw65

Differential Revision: D985326
Add values() method to collections, StrictIterable, LazyIterable, etc.

All keyed collections (and KeyedIterables in general) have a keys() method,
but only Map and StableMap have a values() method. This diff adds values()
to all collections and the relevant traits and helper classes.

Reviewed By: @elgenie

Differential Revision: D990602