Restructure build time bytecode cacheing:
Summary:
When I first wrote this, hhbbc expected to be given a vector of
std::unique_ptr<UnitEmitter>. This meant that it took ownership, and
once you called it, you could no longer safely use the UnitEmitters.
This meant that we couldn't hold on to the UnitEmitters, and cache
them in parallel with doing the hhbbc step; so we had to stop caching
as soon as we finished parsing to avoid slowing the build down.
After the previous diff in this stack, we can hold on to the
UnitEmitters, and keep a single thread writing them in parallel with
the hhbbc step, which has minimal effect on the performance.
Reviewed By: ricklavoie
Differential Revision:
D17814009
fbshipit-source-id:
905ec42f901fed66f768bcfd1587080dae2cbffc