Reviewers: jbrosenberg,

Description:
Reduce logging work in STOB. Wrap logging calls with isLoggable and only
create .rpc.log during web-compiles or DevMode with DEBUG logging.


Please review this at http://gwt-code-reviews.appspot.com/1310806/show

Affected files:
  M user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
M user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java


Index: user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java
===================================================================
--- user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java (revision 9659)
+++ user/src/com/google/gwt/user/rebind/rpc/ProxyCreator.java   (working copy)
@@ -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();
   }
Index: user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java
===================================================================
--- user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java (revision 9659) +++ user/src/com/google/gwt/user/rebind/rpc/SerializableTypeOracleBuilder.java (working copy)
@@ -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 {
@@ -1528,6 +1535,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(


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to