C1 needs to be able to do parallel compilation, which is important for SPARC CMT hardware.
Summary of the changes:
- Refactor the initialization steps into global setup to allocate some persistent pieces, and per compilation setup.
- Move state out of static fields into per thread structures.
- Convert visitor patterns that used functions to use closures.
- Remove the machinery that allowed the appearance of multithreading in the tiered world when it wasn't really supported.