Adds a baseTime property to top level events to help re-normalize timestamps for multi process compiles. Adds some more instrumentation to profile the Compiler task. Review at http://gwt-code-reviews.appspot.com/797801 git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8643 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/Link.java b/dev/core/src/com/google/gwt/dev/Link.java index eaa6ae4..47c5d0a 100644 --- a/dev/core/src/com/google/gwt/dev/Link.java +++ b/dev/core/src/com/google/gwt/dev/Link.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -46,6 +46,9 @@ import com.google.gwt.dev.util.arg.OptionExtraDir; import com.google.gwt.dev.util.arg.OptionOutDir; import com.google.gwt.dev.util.arg.OptionWarDir; +import com.google.gwt.dev.util.log.speedtracer.CompilerEventType; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.io.BufferedInputStream; import java.io.File; @@ -244,6 +247,8 @@ } public static void main(String[] args) { + boolean success = false; + Event linkEvent = SpeedTracerLogger.start(CompilerEventType.LINK); /* * NOTE: main always exits with a call to System.exit to terminate any * non-daemon threads that were started in Generators. Typically, this is to @@ -259,12 +264,11 @@ } }; if (CompileTaskRunner.runWithAppropriateLogger(options, task)) { - // Exit w/ success code. - System.exit(0); + success = true; } } - // Exit w/ non-success code. - System.exit(1); + linkEvent.end(); + System.exit(success ? 0 : 1); } /** @@ -419,7 +423,7 @@ /** * Add a compilation to a linker context. Also runs the shardable part of all * linkers that support sharding. - * + * * @return the new artifacts generated by the shardable part of this link * operation */
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java index fc4b521..c047a8c 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
@@ -1,12 +1,12 @@ /* * Copyright 2008 Google Inc. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -47,7 +47,7 @@ private interface LoadStrategy { /** * Perform loading on the specified module. - * + * * @param logger logs the process * @param moduleName the name of the process * @param moduleDef a module @@ -69,7 +69,7 @@ @SuppressWarnings("unchecked") private static final Map<String, ModuleDef> loadedModules = new ReferenceMap( AbstractReferenceMap.HARD, AbstractReferenceMap.SOFT); - + /** * A mapping from effective to physical module names. */ @@ -79,7 +79,7 @@ /** * Creates a module in memory that is not associated with a * <code>.gwt.xml</code> file on disk. - * + * * @param logger logs the process * @param moduleName the synthetic module to create * @param inherits a set of modules to inherit from @@ -108,7 +108,7 @@ /** * Loads a new module from the class path. Equivalent to * {@link #loadFromClassPath(logger, moduleName, false)}. - * + * * @param logger logs the process * @param moduleName the module to load * @return the loaded module @@ -118,10 +118,10 @@ throws UnableToCompleteException { return loadFromClassPath(logger, moduleName, false); } - + /** * Loads a new module from the class path. - * + * * @param logger logs the process * @param moduleName the module to load * @param refresh whether to refresh the module @@ -182,7 +182,7 @@ /** * Constructs a {@link ModuleDefLoader} that loads a synthetic module. - * + * * @param inherits a set of modules to inherit from */ private ModuleDefLoader(final String[] inherits) { @@ -201,7 +201,7 @@ /** * Loads a new module into <code>moduleDef</code> as an included module. - * + * * @param logger Logs the process. * @param moduleName The module to load. * @param moduleDef The module to add the new module to. @@ -274,7 +274,7 @@ /** * This method loads a module. - * + * * @param logger used to log the loading process * @param moduleName the name of the module * @return the module returned -- cannot be null @@ -289,11 +289,17 @@ } ModuleDef moduleDef = new ModuleDef(moduleName); + Event moduleLoadEvent = SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, + "phase", "strategy.load()"); strategy.load(logger, moduleName, moduleDef); + moduleLoadEvent.end(); // Do any final setup. // + Event moduleNormalizeEvent = SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, + "phase", "moduleDef.normalize()"); moduleDef.normalize(logger); + moduleNormalizeEvent.end(); // Add the "physical" module name: com.google.Module loadedModules.put(moduleName, moduleDef);
diff --git a/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java b/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java index e60a3cd..b320c65 100644 --- a/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java +++ b/dev/core/src/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLogger.java
@@ -327,6 +327,7 @@ private final Event shutDownSentinel = new Event(); private final long zeroTimeNanos = System.nanoTime(); + private final long zeroTimeMilliseconds = System.currentTimeMillis(); /** * Constructor intended for unit testing. @@ -446,6 +447,11 @@ } Event newEvent = new Event(parent, type, data); + // Add a field to the top level event in order to track the base time + // so we can re-normalize the data + if (threadPendingEvents.size() == 0) { + newEvent.addData("baseTime", "" + zeroTimeMilliseconds); + } threadPendingEvents.push(newEvent); return newEvent; }