Revision: 9688
Author: [email protected]
Date: Tue Feb 8 08:23:32 2011
Log: Reduce logging work in STOB. Wrap logging calls with isLoggable and
only create .rpc.log during web-compiles or DevMode with DEBUG logging.
Review at http://gwt-code-reviews.appspot.com/1310806
Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=9688
Modified:
/trunk/user/src/com/google/gwt/user/rebind/rpc/ProblemReport.java
/trunk/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
/trunk/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
/trunk/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
=======================================
--- /trunk/user/src/com/google/gwt/user/rebind/rpc/ProblemReport.java Fri
Oct 8 06:15:38 2010
+++ /trunk/user/src/com/google/gwt/user/rebind/rpc/ProblemReport.java Tue
Feb 8 08:23:32 2011
@@ -253,6 +253,9 @@
*/
private void doReport(TreeLogger logger, Type level,
Map<JClassType, List<Problem>> problems) {
+ if (!logger.isLoggable(level)) {
+ return;
+ }
for (List<Problem> problemList : problems.values()) {
for (Problem problem : problemList) {
if (problem.hasSubMessages()) {
=======================================
--- /trunk/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java Thu
Dec 23 06:00:26 2010
+++ /trunk/user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java Tue
Feb 8 08:23:32 2011
@@ -286,10 +286,10 @@
Event event =
SpeedTracerLogger.start(CompilerEventType.GENERATOR_RPC_STOB);
SerializableTypeOracleBuilder typesSentFromBrowserBuilder = new
SerializableTypeOracleBuilder(
- logger, propertyOracle, typeOracle);
+ logger, propertyOracle, context);
typesSentFromBrowserBuilder.setTypeFilter(blacklistTypeFilter);
SerializableTypeOracleBuilder typesSentToBrowserBuilder = new
SerializableTypeOracleBuilder(
- logger, propertyOracle, typeOracle);
+ logger, propertyOracle, context);
typesSentToBrowserBuilder.setTypeFilter(blacklistTypeFilter);
addRoots(logger, typeOracle, typesSentFromBrowserBuilder,
@@ -359,11 +359,13 @@
srcWriter.commit(logger);
- // Create an artifact explaining STOB's decisions. It will be emitted
by
- // RpcLogLinker
- context.commitArtifact(logger, new RpcLogArtifact(
- serviceIntf.getQualifiedSourceName(),
serializationPolicyStrongName,
- rpcLog));
+ if (context.isProdMode() || logger.isLoggable(TreeLogger.DEBUG)) {
+ // Create an artifact explaining STOB's decisions. It will be
emitted by
+ // RpcLogLinker
+ context.commitArtifact(logger,
+ new RpcLogArtifact(serviceIntf.getQualifiedSourceName(),
+ serializationPolicyStrongName, rpcLog));
+ }
return getProxyQualifiedName();
}
=======================================
---
/trunk/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
Fri Aug 13 10:15:10 2010
+++
/trunk/user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
Tue Feb 8 08:23:32 2011
@@ -15,6 +15,7 @@
*/
package com.google.gwt.user.rebind.rpc;
+import com.google.gwt.core.ext.GeneratorContextExt;
import com.google.gwt.core.ext.PropertyOracle;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
@@ -699,6 +700,9 @@
private static void logSerializableTypes(TreeLogger logger,
Set<JClassType> fieldSerializableTypes) {
+ if (!logger.isLoggable(TreeLogger.DEBUG)) {
+ return;
+ }
TreeLogger localLogger = logger.branch(TreeLogger.DEBUG, "Identified "
+ fieldSerializableTypes.size() + " serializable type"
+ ((fieldSerializableTypes.size() == 1) ? "" : "s"), null);
@@ -716,6 +720,8 @@
*/
private final JGenericType collectionClass;
+ private final GeneratorContextExt context;
+
private Set<String> enhancedClasses = null;
private PrintWriter logOutputWriter;
@@ -765,9 +771,10 @@
* types
*/
public SerializableTypeOracleBuilder(TreeLogger logger,
- PropertyOracle propertyOracle, TypeOracle typeOracle)
+ PropertyOracle propertyOracle, GeneratorContextExt context)
throws UnableToCompleteException {
- this.typeOracle = typeOracle;
+ this.context = context;
+ this.typeOracle = context.getTypeOracle();
typeConstrainer = new TypeConstrainer(typeOracle);
try {
@@ -1125,9 +1132,11 @@
continue;
}
- covariantArrayLogger.branch(
- TreeLogger.DEBUG,
- getArrayType(typeOracle, array.getRank(),
instantiableType).getParameterizedQualifiedSourceName());
+ if (covariantArrayLogger.isLoggable(TreeLogger.DEBUG)) {
+ covariantArrayLogger.branch(TreeLogger.DEBUG,
+ getArrayType(typeOracle, array.getRank(),
+
instantiableType).getParameterizedQualifiedSourceName());
+ }
markArrayTypesInstantiable(instantiableType, array.getRank(),
path);
}
@@ -1528,6 +1537,10 @@
}
private void logReachableTypes(TreeLogger logger) {
+ if (!context.isProdMode() && !logger.isLoggable(TreeLogger.DEBUG)) {
+ return;
+ }
+
if (logOutputWriter != null) {
// Route the TreeLogger output to an output stream.
PrintWriterTreeLogger printWriterTreeLogger = new
PrintWriterTreeLogger(
=======================================
---
/trunk/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
Thu Dec 9 10:54:59 2010
+++
/trunk/user/test/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilderTest.java
Tue Feb 8 08:23:32 2011
@@ -15,8 +15,12 @@
*/
package com.google.gwt.user.rebind.rpc;
+import com.google.gwt.core.ext.GeneratorContextExt;
+import com.google.gwt.core.ext.PropertyOracle;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.core.ext.linker.Artifact;
+import com.google.gwt.core.ext.linker.GeneratedResource;
import com.google.gwt.core.ext.typeinfo.JArrayType;
import com.google.gwt.core.ext.typeinfo.JClassType;
import com.google.gwt.core.ext.typeinfo.JGenericType;
@@ -37,7 +41,9 @@
import com.google.gwt.dev.javac.impl.JavaResourceBase;
import com.google.gwt.dev.javac.impl.MockJavaResource;
import com.google.gwt.dev.javac.impl.StaticJavaResource;
+import com.google.gwt.dev.javac.rebind.CachedRebindResult;
import com.google.gwt.dev.resource.Resource;
+import com.google.gwt.dev.resource.ResourceOracle;
import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
import
com.google.gwt.user.rebind.rpc.testcases.client.AbstractSerializableTypes;
import
com.google.gwt.user.rebind.rpc.testcases.client.ClassWithTypeParameterThatErasesToObject;
@@ -47,6 +53,7 @@
import junit.framework.TestCase;
+import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Comparator;
@@ -61,7 +68,72 @@
* Used to test the {@link SerializableTypeOracleBuilder}.
*/
public class SerializableTypeOracleBuilderTest extends TestCase {
-
+ /**
+ * Just enough of a {@code GeneratorContextExt} to satisfy
+ * {@code SerializableTypeOracleBuilder}.
+ */
+ static class MockContext implements GeneratorContextExt {
+ private TypeOracle typeOracle;
+
+ MockContext(TypeOracle typeOracle) {
+ this.typeOracle = typeOracle;
+ }
+
+ public void commit(TreeLogger logger, PrintWriter pw) {
+ }
+
+ public void commitArtifact(TreeLogger logger, Artifact<?> artifact)
+ throws UnableToCompleteException {
+ }
+
+ public GeneratedResource commitResource(TreeLogger logger,
OutputStream os)
+ throws UnableToCompleteException {
+ return null;
+ }
+
+ public CachedRebindResult getCachedGeneratorResult() {
+ return null;
+ }
+
+ public PropertyOracle getPropertyOracle() {
+ return null;
+ }
+
+ public ResourceOracle getResourcesOracle() {
+ return null;
+ }
+
+ public long getSourceLastModifiedTime(JClassType sourceType) {
+ return 0;
+ }
+
+ public TypeOracle getTypeOracle() {
+ return typeOracle;
+ }
+
+ public boolean isGeneratorResultCachingEnabled() {
+ return false;
+ }
+
+ public boolean isProdMode() {
+ return true;
+ }
+
+ public boolean reuseTypeFromCacheIfAvailable(String typeName) {
+ return false;
+ }
+
+ public PrintWriter tryCreate(TreeLogger logger, String packageName,
+ String simpleName) {
+ return null;
+ }
+
+ public OutputStream tryCreateResource(TreeLogger logger, String
partialPath)
+ throws UnableToCompleteException {
+ return null;
+ }
+ }
+
/**
* Used to test the results produced by the {@link
SerializableTypeOracle}.
*/
@@ -188,7 +260,8 @@
// Make an empty property oracle.
StaticPropertyOracle propertyOracle = new StaticPropertyOracle(
new BindingProperty[0], new String[0], new
ConfigurationProperty[0]);
- return new SerializableTypeOracleBuilder(logger, propertyOracle, to);
+ return new SerializableTypeOracleBuilder(logger, propertyOracle,
+ new MockContext(to));
}
private static TypeInfo[] getActualTypeInfo(SerializableTypeOracle sto) {
@@ -1738,7 +1811,6 @@
*/
public void testRawCollection() throws UnableToCompleteException,
NotFoundException {
-
Set<Resource> resources = new HashSet<Resource>();
addStandardClasses(resources);
--
http://groups.google.com/group/Google-Web-Toolkit-Contributors