Move single jso logic from BasicWebModeCompiler to JavaToJavaScriptCompiler. http://gwt-code-reviews.appspot.com/1428802 Review by: robertvawter@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10050 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java b/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java index d20bc5f..5b56b96 100644 --- a/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jdt/BasicWebModeCompiler.java
@@ -17,8 +17,6 @@ import com.google.gwt.core.ext.TreeLogger; import com.google.gwt.core.ext.UnableToCompleteException; -import com.google.gwt.core.ext.typeinfo.JClassType; -import com.google.gwt.core.ext.typeinfo.TypeOracle; import com.google.gwt.dev.javac.CompilationState; import com.google.gwt.dev.javac.CompilationUnit; import com.google.gwt.dev.javac.CompiledClass; @@ -68,8 +66,6 @@ TreeLogger logger, String[] seedTypeNames, ICompilationUnit... additionalUnits) throws UnableToCompleteException { - TypeOracle oracle = compilationState.getTypeOracle(); - Set<? extends JClassType> intfTypes = oracle.getSingleJsoImplInterfaces(); Map<String, CompiledClass> classMapBySource = compilationState.getClassFileMapBySource(); /* @@ -80,8 +76,8 @@ */ Set<CompilationUnit> alreadyAdded = new HashSet<CompilationUnit>(); - List<ICompilationUnit> icus = new ArrayList<ICompilationUnit>( - seedTypeNames.length + intfTypes.size() + additionalUnits.length); + List<ICompilationUnit> icus = + new ArrayList<ICompilationUnit>(seedTypeNames.length + additionalUnits.length); Collections.addAll(icus, additionalUnits); @@ -95,25 +91,6 @@ if (alreadyAdded.add(unit)) { icus.add(new CompilationUnitAdapter(unit)); - } else { - logger.log(TreeLogger.WARN, "Duplicate compilation unit '" - + unit.getResourceLocation() + "' in seed types"); - } - } - - /* - * Add all SingleJsoImpl types that we know about. It's likely that the - * concrete types are never explicitly referenced from the seed types. - */ - for (JClassType intf : intfTypes) { - String implName = oracle.getSingleJsoImpl(intf).getQualifiedSourceName(); - CompilationUnit unit = getUnitForType(logger, classMapBySource, implName); - - if (alreadyAdded.add(unit)) { - icus.add(new CompilationUnitAdapter(unit)); - logger.log(TreeLogger.SPAM, "Forced compilation of unit '" - + unit.getResourceLocation() - + "' becasue it contains a SingleJsoImpl type"); } }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java index ec64583..cba324d 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -42,6 +42,7 @@ import com.google.gwt.dev.cfg.ModuleDef; import com.google.gwt.dev.javac.CompilationProblemReporter; import com.google.gwt.dev.javac.CompilationProblemReporter.SourceFetcher; +import com.google.gwt.dev.javac.typemodel.TypeOracle; import com.google.gwt.dev.jdt.RebindPermutationOracle; import com.google.gwt.dev.jdt.WebModeCompilerFrontEnd; import com.google.gwt.dev.jjs.CorrelationFactory.DummyCorrelationFactory; @@ -512,6 +513,15 @@ allRootTypes.addAll(JProgram.CODEGEN_TYPES_SET); allRootTypes.addAll(JProgram.INDEX_TYPES_SET); allRootTypes.add(FragmentLoaderCreator.ASYNC_FRAGMENT_LOADER); + /* + * Add all SingleJsoImpl types that we know about. It's likely that the + * concrete types are never explicitly referenced. + */ + TypeOracle typeOracle = rpo.getCompilationState().getTypeOracle(); + for (com.google.gwt.core.ext.typeinfo.JClassType singleJsoIntf : typeOracle + .getSingleJsoImplInterfaces()) { + allRootTypes.add(typeOracle.getSingleJsoImpl(singleJsoIntf).getQualifiedSourceName()); + } Memory.maybeDumpMemory("CompStateBuilt"); @@ -522,8 +532,7 @@ List<String> finalTypeOracleTypes = Lists.create(); if (precompilationMetrics != null) { - for (com.google.gwt.core.ext.typeinfo.JClassType type : rpo.getCompilationState() - .getTypeOracle().getTypes()) { + for (com.google.gwt.core.ext.typeinfo.JClassType type : typeOracle.getTypes()) { finalTypeOracleTypes = Lists.add(finalTypeOracleTypes, type.getPackage().getName() + "." + type.getName()); }