Ready for another round of reviews. I rebased patch set 6 to r7776.
http://gwt-code-reviews.appspot.com/160801/diff/16001/17002 File dev/core/src/com/google/gwt/core/ext/linker/SoftPermutation.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17002#newcode25 dev/core/src/com/google/gwt/core/ext/linker/SoftPermutation.java:25: public abstract class SoftPermutation extends Artifact<SoftPermutation> { SoftPermutation is no longer a top-level artifact. http://gwt-code-reviews.appspot.com/160801/diff/16001/17003 File dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17003#newcode419 dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java:419: protected abstract String getModuleSuffix(TreeLogger logger, LinkerContext context) I'll re-import the formatter settings before submitting the final thing, but I don't want to hold this up. http://gwt-code-reviews.appspot.com/160801/diff/16001/17003#newcode445 dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java:445: if (result.getSoftPermutations().length > 0) { All hard permutations now implicitly contain a single soft permutation with no additional properties that require evaluation. This removes a number of special-case if-statements. http://gwt-code-reviews.appspot.com/160801/diff/16001/17003#newcode454 dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java:454: softMap)); Done. http://gwt-code-reviews.appspot.com/160801/diff/16001/17004 File dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17004#newcode121 dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java:121: * This will ignore empty property maps. It does now. http://gwt-code-reviews.appspot.com/160801/diff/16001/17009 File dev/core/src/com/google/gwt/dev/Permutation.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17009#newcode115 dev/core/src/com/google/gwt/dev/Permutation.java:115: * together. Done. http://gwt-code-reviews.appspot.com/160801/diff/16001/17009#newcode140 dev/core/src/com/google/gwt/dev/Permutation.java:140: other.rebindAnswers.clear(); It's defensive, per the existing logic. Moved to a destroy() method. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010 File dev/core/src/com/google/gwt/dev/Precompile.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode302 dev/core/src/com/google/gwt/dev/Precompile.java:302: private static class CollapsedPermutationKey extends StringKey { Moved CollapsedPermutationKey to a top-level type called CollapsedPropertyKey so the logic can be shared between Precompile and PropertyPermutations. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode339 dev/core/src/com/google/gwt/dev/Precompile.java:339: return collapsedPropertyMap.isEmpty() ? null No longer special-cased. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode600 dev/core/src/com/google/gwt/dev/Precompile.java:600: // Construct a key from the stringified map of live rebind answers. Created a new RebindAnswersPermutationKey that handles this. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode662 dev/core/src/com/google/gwt/dev/Precompile.java:662: // No collapsed properties in that permutation Nothing. Removed special case. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode686 dev/core/src/com/google/gwt/dev/Precompile.java:686: mergeInto.putRebindAnswer("com.google.gwt.lang.CollapsedPropertyHolder", Removed code smell. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode696 dev/core/src/com/google/gwt/dev/Precompile.java:696: } Renumbering added. http://gwt-code-reviews.appspot.com/160801/diff/16001/17010#newcode759 dev/core/src/com/google/gwt/dev/Precompile.java:759: module.getActiveLinkerNames()).size(); Added knowledge of soft-property collapsing to PropertyPermutations that doesn't require spinning up entire Permutation objects. Verified that a distributed build with and without sharded generators produces expected number of hard/soft permutations. http://gwt-code-reviews.appspot.com/160801/diff/16001/17011 File dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17011#newcode271 dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java:271: // Maps a value to the set that contains that value Deferring this since it's not critical to the patch. http://gwt-code-reviews.appspot.com/160801/diff/16001/17011#newcode272 dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java:272: Map<String, SortedSet<String>> map = new LinkedHashMap<String, SortedSet<String>>(); Fixed. http://gwt-code-reviews.appspot.com/160801/diff/16001/17011#newcode276 dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java:276: // Examine each orinial value in the set Fixed. http://gwt-code-reviews.appspot.com/160801/diff/16001/17011#newcode283 dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java:283: // If so, merge the existing set into this one and update pointers Fixed. http://gwt-code-reviews.appspot.com/160801/diff/16001/17011#newcode299 dev/core/src/com/google/gwt/dev/cfg/BindingProperty.java:299: return o1.toString().compareTo(o2.toString()); Done. http://gwt-code-reviews.appspot.com/160801/diff/16001/17013 File dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17013#newcode1034 dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java:1034: private static class PropertyValueGlob { Fixed. http://gwt-code-reviews.appspot.com/160801/diff/16001/17015 File dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17015#newcode240 dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java:240: ResolveRebinds.exec(jprogram, permutation); Fixed, though it also needs the property oracles. http://gwt-code-reviews.appspot.com/160801/diff/16001/17017 File dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17017#newcode1476 dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java:1476: * function gwtOnLoad(errFn, modName, modBase){ Doc updated. http://gwt-code-reviews.appspot.com/160801/diff/16001/17018 File dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17018#newcode204 dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java:204: list.add(permutationId(oracle)); Fixed. http://gwt-code-reviews.appspot.com/160801/diff/16001/17018#newcode208 dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java:208: JClassType fallbackType = null; It's an optimization. Renamed to "mostUsed" http://gwt-code-reviews.appspot.com/160801/diff/16001/17018#newcode224 dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java:224: program.getTypeJavaLangObject(), false, true, true, false, false); Added getNonNullType() call. http://gwt-code-reviews.appspot.com/160801/diff/16001/17018#newcode247 dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java:247: Collections.sort(permutations); Done. http://gwt-code-reviews.appspot.com/160801/diff/16001/17020 File dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/CollapsedPropertyHolder.java (right): http://gwt-code-reviews.appspot.com/160801/diff/16001/17020#newcode22 dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/CollapsedPropertyHolder.java:22: final class CollapsedPropertyHolder { Removed the static initializer by having gwtOnLoad() assign the permutationId field if it's in the compilation. http://gwt-code-reviews.appspot.com/160801/diff/70001/71011 File dev/core/src/com/google/gwt/dev/Permutation.java (right): http://gwt-code-reviews.appspot.com/160801/diff/70001/71011#newcode38 dev/core/src/com/google/gwt/dev/Permutation.java:38: private transient SortedMap<String, String> lazyHardRebindAnswers; Ignore this field, I don't want to blow away my draft comments uploading a new patch. I figured out how to shove all of the hard rebind answer calculation into ResolveRebinds. http://gwt-code-reviews.appspot.com/160801/show -- http://groups.google.com/group/Google-Web-Toolkit-Contributors To unsubscribe from this group, send email to google-web-toolkit-contributors+unsubscribegooglegroups.com or reply to this email with the words "REMOVE ME" as the subject.
