Parallelize update phase
Summary:
Currently, the analysis phase runs multithreaded, but then the update
phase runs single threaded. Most of the work in the update phase is
parallelizable (its just updating information about the current
function, or class, and nobody else will be updating that data).
In some cases the data was kept in a hash table of some kind, so we
need some kind of locking when looking up entries, or inserting
entries; but the entries themselves are only ever updated by a single
thread. In some cases I used tbb, and in others I just used a lock.
Reviewed By: ricklavoie, jano
Differential Revision:
D14815273
fbshipit-source-id:
ae51ec6ff3f2805b72cc0447752b65b1ac7f0622