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