http://gwt-code-reviews.appspot.com/1351801/diff/1/2 File dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java (right):
http://gwt-code-reviews.appspot.com/1351801/diff/1/2#newcode585 dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java:585: (getSingleJsoImpl(refType) != null && !isDualJsoInterface(refType)); Can we factor "getSingleJsoImpl(refType) != null" into a "isSingleJsoInterface" here (and elsewhere)? http://gwt-code-reviews.appspot.com/1351801/diff/1/2#newcode618 dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java:618: // for any concrete type not a JSO, check if it implements a JSO interface I was going to make several comments, because some of the logic isn't clear here. But then I thought maybe there's a simpler way to do this... nextDual : for (Iterator<JInterfaceType> it = dualImpls.iterator(); it.hasNext();) { JInterfaceType dualIntf = it.next(); Set<JClassType> implementors = get(isImplementedMap, dualIntf); for (JClassType implementor : implementors) { if (instantiatedTypes.contains(implementor) && !program.isJavaScriptObject(implementor)) { // This dual is still implemented by a Java class. continue nextDual; } } // No Java implementors. it.remove(); } http://gwt-code-reviews.appspot.com/1351801/diff/1/3 File dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java (right): http://gwt-code-reviews.appspot.com/1351801/diff/1/3#newcode87 dev/core/src/com/google/gwt/dev/jjs/impl/CastNormalizer.java:87: // Reserve query id 0 for java.lang.Object (for array stores on JSOs). q ? http://gwt-code-reviews.appspot.com/1351801/diff/1/4 File dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Cast.java (right): http://gwt-code-reviews.appspot.com/1351801/diff/1/4#newcode92 dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Cast.java:92: return src != null && (isNonStringJavaObject(src) || isJavaString(src)); Can you explain this change a bit? http://gwt-code-reviews.appspot.com/1351801/show -- http://groups.google.com/group/Google-Web-Toolkit-Contributors