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

Reply via email to