One other thing we should talk about is ditching all of the static-ness. The static-ness doesn't gel well with CompilationStateBuilder. CSB is usually a singleton, but you can instantiate an isolated CSB for testing which has a distinct cache that cannot be interfered with. It seems like CSB should auto-initialize itself with a new instance of PersistentUnitCache; but you'd also want a CSB constructor that takes in a DummyUnitCache that doesn't hit the disk at all, for unit tests.
http://gwt-code-reviews.appspot.com/1375802/diff/5002/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java File dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java (right): http://gwt-code-reviews.appspot.com/1375802/diff/5002/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java#newcode110 dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java:110: unitCacheLoaderThread.start(); TPE is massive overkill when you know you want exactly one thread. I don't see what the big deal is with extending thread when it's a persistent thread with only 1 task. http://gwt-code-reviews.appspot.com/1375802/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors