LGTM w/ nits. Although I weep at moving from the rich, lush worlds of Tolkien, Lewis, and Le Guin into the dry, barren worlds of Orwell, Bradbury, and Rand.
http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java File dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java (right): http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java#newcode447 dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java:447: // Note, we must update the method call to return the null type. The "override" term was to match JMethodCall.overrideReturnType (arguably, a better term might be used to avoid confusion with Java method overriding). http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java File dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java (right): http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode371 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:371: * In order to preserve code splitting, don't allow code flow from the Can we at least prepend "NOTE" or "Unusual" or "Special" or something? This is an *extremely* special-case thing for CFA to do. http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java#newcode379 dev/core/src/com/google/gwt/dev/jjs/impl/ControlFlowAnalyzer.java:379: * RunAsyncCallback.onSuccess() as top-level entry points. Not quite true. "Implementors of RunAsyncCallback.onSuccess() are normally reached by explicitly traversing the JRunAsync that starts a fragment." http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java File dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java (right): http://gwt-code-reviews.appspot.com/1453804/diff/7004/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java#newcode67 dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java:67: * RunAsyncCallback.onSuccess(). This can defeat code splitting. Again, some kind of attention needs to be called out to how unusual/special/hacky/magic this is. http://gwt-code-reviews.appspot.com/1453804/diff/7004/user/super/com/google/gwt/emul/java/lang/Object.java File user/super/com/google/gwt/emul/java/lang/Object.java (right): http://gwt-code-reviews.appspot.com/1453804/diff/7004/user/super/com/google/gwt/emul/java/lang/Object.java#newcode48 user/super/com/google/gwt/emul/java/lang/Object.java:48: * JavaScriptObject ".". Also, in a multi-module situation, it is used to differentiate our own Java objects from foreign objects in a different module on the same page. http://gwt-code-reviews.appspot.com/1453804/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
