Refactor SpeedTracerLogger to use Event objects for controlling start/stop Review at http://gwt-code-reviews.appspot.com/704803 Review by: zundel@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8500 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/Compiler.java b/dev/core/src/com/google/gwt/dev/Compiler.java index 09e2bb1..1465db6 100644 --- a/dev/core/src/com/google/gwt/dev/Compiler.java +++ b/dev/core/src/com/google/gwt/dev/Compiler.java
@@ -36,6 +36,7 @@ import com.google.gwt.dev.util.arg.ArgHandlerWorkDirOptional; 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 com.google.gwt.util.tools.Utility; import java.io.File; @@ -209,20 +210,21 @@ return false; } - SpeedTracerLogger.start(CompilerEventType.COMPILE_PERMUTATIONS); + Event compilePermutationsEvent = + SpeedTracerLogger.start(CompilerEventType.COMPILE_PERMUTATIONS); Permutation[] allPerms = precompilation.getPermutations(); List<FileBackedObject<PermutationResult>> resultFiles = CompilePerms.makeResultFiles( options.getCompilerWorkDir(moduleName), allPerms); CompilePerms.compile(branch, precompilation, allPerms, options.getLocalWorkers(), resultFiles); - SpeedTracerLogger.end(CompilerEventType.COMPILE_PERMUTATIONS); + compilePermutationsEvent.end(); ArtifactSet generatedArtifacts = precompilation.getGeneratedArtifacts(); JJSOptions precompileOptions = precompilation.getUnifiedAst().getOptions(); precompilation = null; // No longer needed, so save the memory - SpeedTracerLogger.start(CompilerEventType.LINK); + Event linkEvent = SpeedTracerLogger.start(CompilerEventType.LINK); File absPath = new File(options.getWarDir(), module.getName()); absPath = absPath.getAbsoluteFile(); @@ -237,7 +239,7 @@ generatedArtifacts, allPerms, resultFiles, options.getWarDir(), options.getExtraDir(), precompileOptions); - SpeedTracerLogger.end(CompilerEventType.LINK); + linkEvent.end(); long compileDone = System.currentTimeMillis(); long delta = compileDone - compileStart; branch.log(TreeLogger.INFO, "Compilation succeeded -- "
diff --git a/dev/core/src/com/google/gwt/dev/DevMode.java b/dev/core/src/com/google/gwt/dev/DevMode.java index ae085c4..32aaca4 100644 --- a/dev/core/src/com/google/gwt/dev/DevMode.java +++ b/dev/core/src/com/google/gwt/dev/DevMode.java
@@ -36,6 +36,7 @@ import com.google.gwt.dev.util.arg.ArgHandlerWorkDirOptional; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import com.google.gwt.util.tools.ArgHandlerString; import com.google.gwt.util.tools.Utility; @@ -364,7 +365,7 @@ TreeLogger branch = getTopLogger().branch(TreeLogger.TRACE, "Loading modules"); - SpeedTracerLogger.start(DevModeEventType.SLOW_STARTUP); + Event slowStartupEvent = SpeedTracerLogger.start(DevModeEventType.SLOW_STARTUP); try { for (String moduleName : options.getModuleNames()) { TreeLogger moduleBranch = branch.branch(TreeLogger.TRACE, moduleName); @@ -383,7 +384,7 @@ // Already logged. return false; } finally { - SpeedTracerLogger.end(DevModeEventType.SLOW_STARTUP); + slowStartupEvent.end(); } return true; } @@ -398,7 +399,7 @@ return -1; } - SpeedTracerLogger.start(DevModeEventType.JETTY_STARTUP); + Event jettyStartupEvent = SpeedTracerLogger.start(DevModeEventType.JETTY_STARTUP); boolean clearCallback = true; try { ui.setCallback(RestartServerEvent.getType(), this); @@ -441,7 +442,7 @@ System.err.println("Unable to start embedded HTTP server"); e.printStackTrace(); } finally { - SpeedTracerLogger.end(DevModeEventType.JETTY_STARTUP); + jettyStartupEvent.end(); if (clearCallback) { // Clear the callback if we failed to start the server ui.setCallback(RestartServerEvent.getType(), null);
diff --git a/dev/core/src/com/google/gwt/dev/DevModeBase.java b/dev/core/src/com/google/gwt/dev/DevModeBase.java index 91d1514..b8f3f75 100644 --- a/dev/core/src/com/google/gwt/dev/DevModeBase.java +++ b/dev/core/src/com/google/gwt/dev/DevModeBase.java
@@ -44,6 +44,7 @@ import com.google.gwt.dev.util.arg.OptionLogLevel; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import com.google.gwt.util.tools.ArgHandlerFlag; import com.google.gwt.util.tools.ArgHandlerString; @@ -89,7 +90,8 @@ public ModuleSpaceHost createModuleSpaceHost(ModuleHandle module, String moduleName) throws UnableToCompleteException { - SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_HOST_CREATE); + Event moduleSpaceHostCreateEvent = + SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_HOST_CREATE); // TODO(jat): add support for closing an active module TreeLogger logger = module.getLogger(); try { @@ -105,7 +107,7 @@ module.unload(); throw e; } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_SPACE_HOST_CREATE); + moduleSpaceHostCreateEvent.end(); } } } @@ -1030,64 +1032,66 @@ throw new IllegalStateException("Startup code has already been run"); } - SpeedTracerLogger.start(DevModeEventType.STARTUP); - // See if there was a UI specified by command-line args - ui = createUI(); - - started = true; - - if (!doStartup()) { - /* - * TODO (amitmanjhi): Adding this redundant logging to narrow down a - * failure. Remove soon. - */ - SpeedTracerLogger.end(DevModeEventType.STARTUP); - getTopLogger().log(TreeLogger.ERROR, "shell failed in doStartup method"); - return false; - } - - if (!options.isNoServer()) { - int resultPort = doStartUpServer(); - if (resultPort < 0) { + Event startupEvent = SpeedTracerLogger.start(DevModeEventType.STARTUP); + try { + boolean result = false; + // See if there was a UI specified by command-line args + ui = createUI(); + + started = true; + + if (!doStartup()) { + /* + * TODO (amitmanjhi): Adding this redundant logging to narrow down a + * failure. Remove soon. + */ + getTopLogger().log(TreeLogger.ERROR, "shell failed in doStartup method"); + return false; + } + + if (!options.isNoServer()) { + int resultPort = doStartUpServer(); + if (resultPort < 0) { + /* + * TODO (amitmanjhi): Adding this redundant logging to narrow down a + * failure. Remove soon. + */ + getTopLogger().log(TreeLogger.ERROR, + "shell failed in doStartupServer method"); + return false; + } + options.setPort(resultPort); + getTopLogger().log(TreeLogger.TRACE, + "Started web server on port " + resultPort); + } + + if (options.getStartupURLs().isEmpty()) { + // if no URLs were supplied, try and find plausible ones + inferStartupUrls(); + } + + if (options.getStartupURLs().isEmpty()) { + // TODO(jat): we could walk public resources to find plausible URLs + // after the module(s) are loaded + warnAboutNoStartupUrls(); + } + + setStartupUrls(getTopLogger()); + + if (!doSlowStartup()) { /* * TODO (amitmanjhi): Adding this redundant logging to narrow down a * failure. Remove soon. */ getTopLogger().log(TreeLogger.ERROR, - "shell failed in doStartupServer method"); + "shell failed in doSlowStartup method"); return false; } - options.setPort(resultPort); - getTopLogger().log(TreeLogger.TRACE, - "Started web server on port " + resultPort); + + return true; + } finally { + startupEvent.end(); } - - if (options.getStartupURLs().isEmpty()) { - // if no URLs were supplied, try and find plausible ones - inferStartupUrls(); - } - - if (options.getStartupURLs().isEmpty()) { - // TODO(jat): we could walk public resources to find plausible URLs - // after the module(s) are loaded - warnAboutNoStartupUrls(); - } - - setStartupUrls(getTopLogger()); - - if (!doSlowStartup()) { - /* - * TODO (amitmanjhi): Adding this redundant logging to narrow down a - * failure. Remove soon. - */ - SpeedTracerLogger.end(DevModeEventType.STARTUP); - getTopLogger().log(TreeLogger.ERROR, - "shell failed in doSlowStartup method"); - return false; - } - - SpeedTracerLogger.end(DevModeEventType.STARTUP); - return true; } /** @@ -1113,7 +1117,7 @@ private DevModeUI createUI() { DevModeUI newUI = null; - SpeedTracerLogger.start(DevModeEventType.CREATE_UI); + Event createUIEvent = SpeedTracerLogger.start(DevModeEventType.CREATE_UI); if (headlessMode) { newUI = new HeadlessUI(options); @@ -1139,7 +1143,7 @@ baseLogLevelForUI = TreeLogger.Type.INFO; } - SpeedTracerLogger.end(DevModeEventType.CREATE_UI); + createUIEvent.end(); return newUI; }
diff --git a/dev/core/src/com/google/gwt/dev/GWTCompiler.java b/dev/core/src/com/google/gwt/dev/GWTCompiler.java index a056d6d..a705bf7 100644 --- a/dev/core/src/com/google/gwt/dev/GWTCompiler.java +++ b/dev/core/src/com/google/gwt/dev/GWTCompiler.java
@@ -33,6 +33,7 @@ import com.google.gwt.dev.util.arg.ArgHandlerWorkDirOptional; 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 com.google.gwt.util.tools.ToolBase; import com.google.gwt.util.tools.Utility; @@ -163,7 +164,7 @@ */ public boolean run(TreeLogger logger, ModuleDef... modules) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.COMPILE); + Event compileEvent = SpeedTracerLogger.start(CompilerEventType.COMPILE); boolean tempWorkDir = false; try { if (options.getWorkDir() == null) { @@ -219,7 +220,7 @@ e); return false; } finally { - SpeedTracerLogger.end(CompilerEventType.COMPILE); + compileEvent.end(); if (tempWorkDir) { Util.recursiveDelete(options.getWorkDir(), false); }
diff --git a/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java b/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java index 050a1c4..3488902 100644 --- a/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java +++ b/dev/core/src/com/google/gwt/dev/PermutationWorkerFactory.java
@@ -22,6 +22,7 @@ import com.google.gwt.dev.util.FileBackedObject; 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.util.ArrayList; import java.util.Arrays; @@ -60,8 +61,8 @@ } public void run() { - SpeedTracerLogger.start(CompilerEventType.PERMUTATION_WORKER, "name", - worker.getName()); + Event permutationWorkerEvent = + SpeedTracerLogger.start(CompilerEventType.PERMUTATION_WORKER, "name", worker.getName()); Result threadDeathResult = Result.FAIL; try { while (true) { @@ -89,7 +90,7 @@ } catch (InterruptedException e) { return; } finally { - SpeedTracerLogger.end(CompilerEventType.PERMUTATION_WORKER); + permutationWorkerEvent.end(); // Record why I died. try { resultsQueue.put(threadDeathResult); @@ -137,9 +138,9 @@ int workToDo = work.size(); int aliveWorkers = workers.size(); waitForWorkers : while (workToDo > 0 && aliveWorkers > 0) { - SpeedTracerLogger.start(CompilerEventType.BLOCKED); + Event blockedEvent = SpeedTracerLogger.start(CompilerEventType.BLOCKED); Result take = resultsQueue.take(); - SpeedTracerLogger.end(CompilerEventType.BLOCKED); + blockedEvent.end(); switch (take) { case SUCCESS: --workToDo;
diff --git a/dev/core/src/com/google/gwt/dev/Precompile.java b/dev/core/src/com/google/gwt/dev/Precompile.java index f976ac1..6ff1d60 100644 --- a/dev/core/src/com/google/gwt/dev/Precompile.java +++ b/dev/core/src/com/google/gwt/dev/Precompile.java
@@ -70,6 +70,7 @@ import com.google.gwt.dev.util.collect.Lists; 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.File; import java.io.Serializable; @@ -333,7 +334,7 @@ logger = logger.branch(TreeLogger.DEBUG, msg, null); Set<String> answers = new HashSet<String>(); - SpeedTracerLogger.start(CompilerEventType.GET_ALL_REBINDS); + Event getAllRebindsEvent = SpeedTracerLogger.start(CompilerEventType.GET_ALL_REBINDS); for (int i = 0; i < getPermuationCount(); ++i) { String resultTypeName = rebindOracles[i].rebind(logger, requestTypeName); answers.add(resultTypeName); @@ -341,7 +342,7 @@ permutations[i].putRebindAnswer(requestTypeName, resultTypeName); } String[] result = Util.toArray(String.class, answers); - SpeedTracerLogger.end(CompilerEventType.GET_ALL_REBINDS); + getAllRebindsEvent.end(); return result; } @@ -449,8 +450,8 @@ */ public static boolean validate(TreeLogger logger, JJSOptions jjsOptions, ModuleDef module, File genDir, File dumpSignatureFile) { + Event validateEvent = SpeedTracerLogger.start(CompilerEventType.VALIDATE); try { - SpeedTracerLogger.start(CompilerEventType.VALIDATE); CompilationState compilationState = module.getCompilationState(logger); if (dumpSignatureFile != null) { // Dump early to avoid generated types. @@ -486,7 +487,7 @@ // Already logged. return false; } finally { - SpeedTracerLogger.end(CompilerEventType.VALIDATE); + validateEvent.end(); } } @@ -494,8 +495,8 @@ ModuleDef module, int permutationBase, PropertyPermutations allPermutations, File genDir, File dumpSignatureFile) { + Event precompileEvent = SpeedTracerLogger.start(CompilerEventType.PRECOMPILE); try { - SpeedTracerLogger.start(CompilerEventType.PRECOMPILE); CompilationState compilationState = module.getCompilationState(logger); if (dumpSignatureFile != null) { // Dump early to avoid generated types. @@ -545,7 +546,7 @@ // cause has been logged. return null; } finally { - SpeedTracerLogger.end(CompilerEventType.PRECOMPILE); + precompileEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java index 0f323d3..f8238821 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDef.java
@@ -34,6 +34,7 @@ import com.google.gwt.dev.util.Util; 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.File; import java.util.ArrayList; @@ -395,7 +396,7 @@ } public synchronized void refresh(TreeLogger logger) { - SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, "phase", "refresh", "module", getName()); + Event moduleDefEvent = SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, "phase", "refresh", "module", getName()); logger = logger.branch(TreeLogger.DEBUG, "Refreshing module '" + getName() + "'"); @@ -406,7 +407,7 @@ if (lazyResourcesOracle != null) { lazyResourcesOracle.refresh(logger); } - SpeedTracerLogger.end(CompilerEventType.MODULE_DEF); + moduleDefEvent.end(); } /** @@ -445,7 +446,8 @@ * @param logger Logs the activity. */ synchronized void normalize(TreeLogger logger) { - SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, "phase", "normalize"); + Event moduleDefNormalize = + SpeedTracerLogger.start(CompilerEventType.MODULE_DEF, "phase", "normalize"); // Normalize property providers. // for (Property current : getProperties()) { @@ -491,7 +493,7 @@ "No source path entries; expect subsequent failures", null); } - SpeedTracerLogger.end(CompilerEventType.MODULE_DEF); + moduleDefNormalize.end(); } private void checkForSeedTypes(TreeLogger logger,
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 1ee4a40..fc4b521 100644 --- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java +++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefLoader.java
@@ -20,6 +20,7 @@ import com.google.gwt.dev.util.Util; 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 com.google.gwt.dev.util.xml.ReflectiveParser; import com.google.gwt.util.tools.Utility; @@ -129,7 +130,7 @@ */ public static ModuleDef loadFromClassPath(TreeLogger logger, String moduleName, boolean refresh) throws UnableToCompleteException { - SpeedTracerLogger.start( + Event moduleDefLoadFromClassPathEvent = SpeedTracerLogger.start( CompilerEventType.MODULE_DEF, "phase", "loadFromClassPath", "moduleName", moduleName); try { // Look up the module's physical name; if null, we are either encountering @@ -145,7 +146,7 @@ ModuleDefLoader loader = new ModuleDefLoader(); return loader.doLoadModule(logger, moduleName); } finally { - SpeedTracerLogger.end(CompilerEventType.MODULE_DEF); + moduleDefLoadFromClassPathEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationState.java b/dev/core/src/com/google/gwt/dev/javac/CompilationState.java index 47fdf30..9747eef 100644 --- a/dev/core/src/com/google/gwt/dev/javac/CompilationState.java +++ b/dev/core/src/com/google/gwt/dev/javac/CompilationState.java
@@ -20,6 +20,7 @@ import com.google.gwt.dev.javac.CompilationStateBuilder.CompileMoreLater; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.util.Collection; import java.util.Collections; @@ -83,7 +84,7 @@ public void addGeneratedCompilationUnits(TreeLogger logger, Collection<GeneratedUnit> generatedUnits) { - SpeedTracerLogger.start(DevModeEventType.GENERATED_UNITS_ADD); + Event generatedUnitsAddEvent = SpeedTracerLogger.start(DevModeEventType.GENERATED_UNITS_ADD); try { logger = logger.branch(TreeLogger.DEBUG, "Adding '" @@ -92,7 +93,7 @@ logger, generatedUnits); assimilateUnits(logger, newUnits); } finally { - SpeedTracerLogger.end(DevModeEventType.GENERATED_UNITS_ADD); + generatedUnitsAddEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java b/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java index 36a653d..d3ee035 100644 --- a/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java +++ b/dev/core/src/com/google/gwt/dev/javac/CompilationStateBuilder.java
@@ -24,6 +24,7 @@ import com.google.gwt.dev.resource.Resource; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import org.apache.commons.collections.map.AbstractReferenceMap; import org.apache.commons.collections.map.ReferenceIdentityMap; @@ -134,11 +135,12 @@ public Collection<CompilationUnit> addGeneratedTypes(TreeLogger logger, Collection<GeneratedUnit> generatedUnits) { - SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + Event compilationStateBuilderProcess = + SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); try { return doBuildGeneratedTypes(logger, generatedUnits, this); } finally { - SpeedTracerLogger.end(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + compilationStateBuilderProcess.end(); } } @@ -194,21 +196,23 @@ public static CompilationState buildFrom(TreeLogger logger, Set<Resource> resources) { - SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + Event compilationStateBuilderProcessEvent = + SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); try { return instance.doBuildFrom(logger, resources, null); } finally { - SpeedTracerLogger.end(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + compilationStateBuilderProcessEvent.end(); } } public static CompilationState buildFrom(TreeLogger logger, Set<Resource> resources, AdditionalTypeProviderDelegate delegate) { - SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + Event compilationStateBuilderProcessEvent = + SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); try { return instance.doBuildFrom(logger, resources, delegate); } finally { - SpeedTracerLogger.end(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + compilationStateBuilderProcessEvent.end(); } } @@ -283,7 +287,8 @@ */ public synchronized CompilationState doBuildFrom(TreeLogger logger, Set<Resource> resources, AdditionalTypeProviderDelegate compilerDelegate) { - SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + Event compilationStateBuilderProcess = + SpeedTracerLogger.start(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); try { Map<String, CompilationUnit> resultUnits = new HashMap<String, CompilationUnit>(); @@ -327,7 +332,7 @@ Collections.<ContentId> emptySet()); return new CompilationState(logger, resultUnits.values(), compileMoreLater); } finally { - SpeedTracerLogger.end(DevModeEventType.COMPILATION_STATE_BUILDER_PROCESS); + compilationStateBuilderProcess.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java b/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java index c89ca5b..106ffde 100644 --- a/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java +++ b/dev/core/src/com/google/gwt/dev/javac/JdtCompiler.java
@@ -22,6 +22,7 @@ import com.google.gwt.dev.util.collect.Sets; 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 com.google.gwt.util.tools.Utility; import org.eclipse.jdt.core.compiler.CharOperation; @@ -317,7 +318,7 @@ */ public static List<CompilationUnit> compile( Collection<CompilationUnitBuilder> builders) { - SpeedTracerLogger.start(CompilerEventType.JDT_COMPILER); + Event jdtCompilerEvent = SpeedTracerLogger.start(CompilerEventType.JDT_COMPILER); try { DefaultUnitProcessor processor = new DefaultUnitProcessor(); @@ -326,7 +327,7 @@ compiler.doCompile(builders); return processor.getResults(); } finally { - SpeedTracerLogger.end(CompilerEventType.JDT_COMPILER); + jdtCompilerEvent.end(); } } @@ -498,11 +499,11 @@ return false; } - SpeedTracerLogger.start(CompilerEventType.JDT_COMPILER, "phase", "compile"); + Event jdtCompilerEvent = SpeedTracerLogger.start(CompilerEventType.JDT_COMPILER, "phase", "compile"); compilerImpl = new CompilerImpl(); compilerImpl.compile(icus.toArray(new ICompilationUnit[icus.size()])); compilerImpl = null; - SpeedTracerLogger.end(CompilerEventType.JDT_COMPILER); + jdtCompilerEvent.end(); lazyContentIdMap = null; return true; }
diff --git a/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java b/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java index 27b27a1..2cf676c 100644 --- a/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java +++ b/dev/core/src/com/google/gwt/dev/javac/StandardGeneratorContext.java
@@ -34,6 +34,7 @@ import com.google.gwt.dev.util.collect.IdentityHashMap; 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 com.google.gwt.util.tools.Utility; import java.io.ByteArrayOutputStream; @@ -423,7 +424,7 @@ setCurrentGenerator(generatorClass); long before = System.currentTimeMillis(); - SpeedTracerLogger.start(CompilerEventType.GENERATOR, "class", + Event generatorEvent = SpeedTracerLogger.start(CompilerEventType.GENERATOR, "class", generator.getClass().getName(), "type", typeName); try { String className = generator.generate(logger, this, typeName); @@ -446,7 +447,7 @@ + "' threw an exception while rebinding '" + typeName + "'", e); throw new UnableToCompleteException(); } finally { - SpeedTracerLogger.end(CompilerEventType.GENERATOR); + generatorEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java b/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java index 2111c51..ec79ee4 100644 --- a/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java +++ b/dev/core/src/com/google/gwt/dev/javac/TypeOracleMediator.java
@@ -58,6 +58,7 @@ import com.google.gwt.dev.util.log.speedtracer.CompilerEventType; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.io.PrintWriter; import java.lang.annotation.Annotation; @@ -294,7 +295,7 @@ */ public void addNewUnits(TreeLogger logger, Collection<CompilationUnit> units) { - SpeedTracerLogger.start(CompilerEventType.TYPE_ORACLE_MEDIATOR); + Event typeOracleMediatorEvent = SpeedTracerLogger.start(CompilerEventType.TYPE_ORACLE_MEDIATOR); // First collect all class data. classMap = new HashMap<String, CollectClassData>(); for (CompilationUnit unit : units) { @@ -364,7 +365,7 @@ allMethodArgs = null; classMap = null; classMapType = null; - SpeedTracerLogger.end(CompilerEventType.TYPE_ORACLE_MEDIATOR); + typeOracleMediatorEvent.end(); } /** @@ -547,7 +548,7 @@ * creating JRealClassType/JGenericType objects. */ private CollectClassData processClass(CompiledClass compiledClass) { - SpeedTracerLogger.start(DevModeEventType.VISIT_CLASS_FILE); + Event visitClassFileEvent = SpeedTracerLogger.start(DevModeEventType.VISIT_CLASS_FILE); byte[] classBytes = compiledClass.getBytes(); ClassReader reader = new ClassReader(classBytes); @@ -558,7 +559,7 @@ } reader.accept(cv, 0); - SpeedTracerLogger.end(DevModeEventType.VISIT_CLASS_FILE); + visitClassFileEvent.end(); return mcv; }
diff --git a/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java b/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java index e972336..24c6261 100644 --- a/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java +++ b/dev/core/src/com/google/gwt/dev/jdt/WebModeCompilerFrontEnd.java
@@ -24,6 +24,7 @@ import com.google.gwt.dev.util.Empty; 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 org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration; import org.eclipse.jdt.internal.compiler.lookup.MethodBinding; @@ -47,10 +48,11 @@ TreeLogger logger, String[] seedTypeNames, RebindPermutationOracle rebindPermOracle, TypeLinker linker) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.GET_COMPILATION_UNITS); + Event getCompilationUnitsEvent = + SpeedTracerLogger.start(CompilerEventType.GET_COMPILATION_UNITS); CompilationResults results = new WebModeCompilerFrontEnd(rebindPermOracle, linker).getCompilationUnitDeclarations(logger, seedTypeNames); - SpeedTracerLogger.end(CompilerEventType.GET_COMPILATION_UNITS); + getCompilationUnitsEvent.end(); return results; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ArtificialRescueRecorder.java b/dev/core/src/com/google/gwt/dev/jjs/ArtificialRescueRecorder.java index a2ad9f0..8d3ead7 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/ArtificialRescueRecorder.java +++ b/dev/core/src/com/google/gwt/dev/jjs/ArtificialRescueRecorder.java
@@ -31,6 +31,7 @@ import com.google.gwt.dev.util.JsniRef; 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.util.ArrayList; import java.util.Collections; @@ -124,9 +125,10 @@ } public static void exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.ARTIFICIAL_RESCUE_REORDER); + Event artificialRescueReorderEvent = + SpeedTracerLogger.start(CompilerEventType.ARTIFICIAL_RESCUE_REORDER); new ArtificialRescueRecorder(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.ARTIFICIAL_RESCUE_REORDER); + artificialRescueReorderEvent.end(); } private final JInterfaceType artificialRescueType;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java index b6419ba..48025b4 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -124,6 +124,7 @@ import com.google.gwt.dev.util.collect.Maps; 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 com.google.gwt.soyc.SoycDashboard; import com.google.gwt.soyc.io.ArtifactsOutputDirectory; @@ -221,7 +222,8 @@ public static PermutationResult compilePermutation(TreeLogger logger, UnifiedAst unifiedAst, Permutation permutation) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.JJS_COMPILE_PERMUTATION); + Event jjsCompilePermutationEvent = + SpeedTracerLogger.start(CompilerEventType.JJS_COMPILE_PERMUTATION); InternalCompilerException.preload(); PropertyOracle[] propertyOracles = permutation.getPropertyOracles(); int permutationId = permutation.getId(); @@ -412,7 +414,7 @@ } catch (Throwable e) { throw logAndTranslateException(logger, e); } finally { - SpeedTracerLogger.end(CompilerEventType.JJS_COMPILE_PERMUTATION); + jjsCompilePermutationEvent.end(); } } @@ -586,10 +588,10 @@ Set<String> rebindRequests = new HashSet<String>(); RecordRebinds.exec(jprogram, rebindRequests); - SpeedTracerLogger.start(CompilerEventType.CREATE_UNIFIED_AST); + Event createUnifiedAstEvent = SpeedTracerLogger.start(CompilerEventType.CREATE_UNIFIED_AST); UnifiedAst result = new UnifiedAst(options, new AST(jprogram, jsProgram), singlePermutation, rebindRequests); - SpeedTracerLogger.end(CompilerEventType.CREATE_UNIFIED_AST); + createUnifiedAstEvent.end(); return result; } catch (Throwable e) { throw logAndTranslateException(logger, e); @@ -609,34 +611,34 @@ */ jprogram.beginOptimizations(); - SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE); + Event draftOptimizeEvent = SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE); - SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", + Event draftFinalizerEvent = SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", "finalizer"); Finalizer.exec(jprogram); - SpeedTracerLogger.end(CompilerEventType.DRAFT_OPTIMIZE); + draftFinalizerEvent.end(); - SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", - "makeCallsStatic"); + Event draftMakeCallsStaticEvent = + SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", "makeCallsStatic"); MakeCallsStatic.exec(jprogram); - SpeedTracerLogger.end(CompilerEventType.DRAFT_OPTIMIZE); + draftMakeCallsStaticEvent.end(); - SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", - "recomputeAfterOptimizations"); + Event draftRecomputeEvent = SpeedTracerLogger.start( + CompilerEventType.DRAFT_OPTIMIZE, "phase", "recomputeAfterOptimizations"); jprogram.typeOracle.recomputeAfterOptimizations(); - SpeedTracerLogger.end(CompilerEventType.DRAFT_OPTIMIZE); + draftRecomputeEvent.end(); - SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", + Event draftDeadCode = SpeedTracerLogger.start(CompilerEventType.DRAFT_OPTIMIZE, "phase", "deadCodeElimination"); DeadCodeElimination.exec(jprogram); - SpeedTracerLogger.end(CompilerEventType.DRAFT_OPTIMIZE); + draftDeadCode.end(); - SpeedTracerLogger.end(CompilerEventType.DRAFT_OPTIMIZE); + draftOptimizeEvent.end(); } protected static void optimize(JJSOptions options, JProgram jprogram) throws InterruptedException { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE); + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE); /* * Record the beginning of optimizations; this turns on certain checks that * guard against problematic late construction of things like class @@ -646,7 +648,7 @@ do { if (Thread.interrupted()) { - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE); + optimizeEvent.end(); throw new InterruptedException(); } maybeDumpAST(jprogram); @@ -656,12 +658,12 @@ // Just run it once, because it is very time consuming DataflowOptimizer.exec(jprogram); } - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE); + optimizeEvent.end(); } protected static boolean optimizeLoop(JProgram jprogram, boolean isAggressivelyOptimize) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "phase", "loop"); + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "phase", "loop"); // Recompute clinits each time, they can become empty. jprogram.typeOracle.recomputeAfterOptimizations(); // jprogram.methodOracle = MethodOracleBuilder.buildMethodOracle(jprogram); @@ -698,7 +700,7 @@ // prove that any types that have been culled from the main tree are // unreferenced due to type tightening? - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE); + optimizeEvent.end(); return didChange; } @@ -706,7 +708,7 @@ static void checkForErrors(TreeLogger logger, CompilationUnitDeclaration[] cuds, boolean itemizeErrors) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.CHECK_FOR_ERRORS); + Event checkForErrorsEvent = SpeedTracerLogger.start(CompilerEventType.CHECK_FOR_ERRORS); boolean compilationFailed = false; if (cuds.length == 0) { compilationFailed = true; @@ -747,7 +749,7 @@ } } } - SpeedTracerLogger.end(CompilerEventType.CHECK_FOR_ERRORS); + checkForErrorsEvent.end(); if (compilationFailed) { logger.log(TreeLogger.ERROR, "Cannot proceed due to previous errors", null); @@ -818,7 +820,7 @@ private static void findEntryPoints(TreeLogger logger, RebindPermutationOracle rpo, String[] mainClassNames, JProgram program) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.FIND_ENTRY_POINTS); + Event findEntryPointsEvent = SpeedTracerLogger.start(CompilerEventType.FIND_ENTRY_POINTS); SourceInfo sourceInfo = program.createSourceInfoSynthetic( JavaToJavaScriptCompiler.class, "Bootstrap method"); JMethod bootStrapMethod = program.createMethod(sourceInfo, "init", @@ -880,7 +882,7 @@ } } program.addEntryMethod(bootStrapMethod); - SpeedTracerLogger.end(CompilerEventType.FIND_ENTRY_POINTS); + findEntryPointsEvent.end(); } private static JMethod findMainMethod(JDeclaredType declaredType) { @@ -939,7 +941,7 @@ * Reorder function decls to improve compression ratios. Also restructures * the top level blocks into sub-blocks if they exceed 32767 statements. */ - SpeedTracerLogger.start(CompilerEventType.FUNCTION_CLUSTER); + Event functionClusterEvent = SpeedTracerLogger.start(CompilerEventType.FUNCTION_CLUSTER); JsFunctionClusterer clusterer = new JsFunctionClusterer(out.toString(), v.getStatementRanges()); // only cluster for obfuscated mode @@ -947,7 +949,7 @@ && options.getOutput() == JsOutputOption.OBFUSCATED) { clusterer.exec(); } - SpeedTracerLogger.end(CompilerEventType.FUNCTION_CLUSTER); + functionClusterEvent.end(); // rewrite top-level blocks to limit the number of statements JsIEBlockTextTransformer ieXformer = new JsIEBlockTextTransformer( clusterer); @@ -1019,38 +1021,38 @@ ByteArrayOutputStream baos = new ByteArrayOutputStream(); - SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS); + Event soycEvent = SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS); - SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, - "phase", "recordSplitPoints"); + Event recordSplitPoints = SpeedTracerLogger.start( + CompilerEventType.MAKE_SOYC_ARTIFACTS, "phase", "recordSplitPoints"); SplitPointRecorder.recordSplitPoints(jprogram, baos, logger); SyntheticArtifact splitPoints = new SyntheticArtifact( SoycReportLinker.class, "splitPoints" + permutationId + ".xml.gz", baos.toByteArray()); soycArtifacts.add(splitPoints); - SpeedTracerLogger.end(CompilerEventType.MAKE_SOYC_ARTIFACTS); + recordSplitPoints.end(); SyntheticArtifact sizeMaps = null; if (sizeBreakdowns != null) { - SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, - "phase", "recordSizeMap"); + Event recordSizeMap = + SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, "phase", "recordSizeMap"); baos.reset(); SizeMapRecorder.recordMap(logger, baos, sizeBreakdowns, jjsmap, obfuscateMap); sizeMaps = new SyntheticArtifact(SoycReportLinker.class, "stories" + permutationId + ".xml.gz", baos.toByteArray()); soycArtifacts.add(sizeMaps); - SpeedTracerLogger.end(CompilerEventType.MAKE_SOYC_ARTIFACTS); + recordSizeMap.end(); } if (sourceInfoMaps != null) { - SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, - "phase", "recordStories"); + Event recordStories = + SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, "phase", "recordStories"); baos.reset(); StoryRecorder.recordStories(logger, baos, sourceInfoMaps, js); soycArtifacts.add(new SyntheticArtifact(SoycReportLinker.class, "detailedStories" + permutationId + ".xml.gz", baos.toByteArray())); - SpeedTracerLogger.end(CompilerEventType.MAKE_SOYC_ARTIFACTS); + recordStories.end(); } if (dependencies != null) { @@ -1063,8 +1065,8 @@ } if (sizeBreakdowns != null) { - SpeedTracerLogger.start(CompilerEventType.MAKE_SOYC_ARTIFACTS, - "phase", "generateCompileReport"); + Event generateCompileReport = SpeedTracerLogger.start( + CompilerEventType.MAKE_SOYC_ARTIFACTS, "phase", "generateCompileReport"); ArtifactsOutputDirectory outDir = new ArtifactsOutputDirectory(); SoycDashboard dashboard = new SoycDashboard(outDir); dashboard.startNewPermutation(Integer.toString(permutationId)); @@ -1087,10 +1089,10 @@ } dashboard.generateForOnePermutation(); soycArtifacts.addAll(outDir.getArtifacts()); - SpeedTracerLogger.end(CompilerEventType.MAKE_SOYC_ARTIFACTS); + generateCompileReport.end(); } - SpeedTracerLogger.end(CompilerEventType.MAKE_SOYC_ARTIFACTS); + soycEvent.end(); return soycArtifacts; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionNormalizer.java index 196c96b..c354397 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionNormalizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionNormalizer.java
@@ -29,6 +29,7 @@ import com.google.gwt.dev.jjs.ast.JType; 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; /** * Removes all assertion statements from the AST. @@ -56,9 +57,10 @@ } public static void exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.ASSERTION_NORMALIZER); + Event assertionNormalizerEvent = + SpeedTracerLogger.start(CompilerEventType.ASSERTION_NORMALIZER); new AssertionNormalizer(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.ASSERTION_NORMALIZER); + assertionNormalizerEvent.end(); } private static String getAssertMethodSuffix(JExpression arg) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionRemover.java b/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionRemover.java index 71dfb82..70fc984 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionRemover.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/AssertionRemover.java
@@ -23,6 +23,7 @@ import com.google.gwt.dev.jjs.ast.JStatement; 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; /** * Removes all assertion statements from the AST. @@ -50,9 +51,9 @@ } public static void exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.ASSERTION_REMOVER); + Event assertionRemoverEvent = SpeedTracerLogger.start(CompilerEventType.ASSERTION_REMOVER); new AssertionRemover(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.ASSERTION_REMOVER); + assertionRemoverEvent.end(); } private final JProgram program;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java index d7d87c5..02ee4e8 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
@@ -46,6 +46,7 @@ import com.google.gwt.dev.js.ast.JsProgram; 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 org.eclipse.jdt.internal.compiler.CompilationResult; import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration; @@ -539,11 +540,11 @@ CompilationResults results, JsProgram jsProgram, TypeLinker linker) { BuildTypeMap btm = new BuildTypeMap(typeMap, jsProgram, linker, results.compiledUnits); - SpeedTracerLogger.start(CompilerEventType.BUILD_TYPE_MAP); + Event buildTypeMapEvent = SpeedTracerLogger.start(CompilerEventType.BUILD_TYPE_MAP); btm.createPeersForUnits(); btm.resolveExternalTypes(results.binaryBindings); TypeDeclaration[] result = btm.createPeersForNonTypeDecls(); - SpeedTracerLogger.end(CompilerEventType.BUILD_TYPE_MAP); + buildTypeMapEvent.end(); return result; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter.java b/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter.java index e06f873..5ad75c9 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/CodeSplitter.java
@@ -57,6 +57,7 @@ import com.google.gwt.dev.util.collect.HashSet; 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.util.ArrayList; import java.util.LinkedHashSet; @@ -255,11 +256,11 @@ // Don't do anything if there is no call to runAsync return; } - SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER); + Event codeSplitterEvent = SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER); dependencyRecorder.open(); new CodeSplitter(logger, jprogram, jsprogram, map, dependencyRecorder).execImpl(); dependencyRecorder.close(); - SpeedTracerLogger.end(CompilerEventType.CODE_SPLITTER); + codeSplitterEvent.end(); } /** @@ -268,7 +269,8 @@ */ public static int findSplitPoint(String refString, JProgram program, TreeLogger branch) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER, "phase", "findSplitPoint"); + Event codeSplitterEvent = + SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER, "phase", "findSplitPoint"); Map<JMethod, List<Integer>> methodToSplitPoint = reverseByEnclosingMethod(program.getRunAsyncReplacements()); Map<String, List<Integer>> nameToSplitPoint = reverseByName(program.getRunAsyncReplacements()); @@ -328,7 +330,7 @@ throw new UnableToCompleteException(); } int result = splitPoints.get(0); - SpeedTracerLogger.end(CompilerEventType.CODE_SPLITTER); + codeSplitterEvent.end(); return result; } @@ -368,7 +370,8 @@ */ public static void pickInitialLoadSequence(TreeLogger logger, JProgram program, Properties properties) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER, "phase", "pickInitialLoadSequence"); + Event codeSplitterEvent = SpeedTracerLogger.start( + CompilerEventType.CODE_SPLITTER, "phase", "pickInitialLoadSequence"); TreeLogger branch = logger.branch(TreeLogger.TRACE, "Looking up initial load sequence for split points"); LinkedHashSet<Integer> initialLoadSequence = new LinkedHashSet<Integer>(); @@ -400,7 +403,7 @@ installInitialLoadSequenceField(program, initialLoadSequence); program.setSplitPointInitialSequence(new ArrayList<Integer>( initialLoadSequence)); - SpeedTracerLogger.end(CompilerEventType.CODE_SPLITTER); + codeSplitterEvent.end(); } /**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java b/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java index 4cadb3b..a69eb37 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/DeadCodeElimination.java
@@ -65,6 +65,7 @@ import com.google.gwt.dev.jjs.ast.js.JMultiExpression; 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.lang.reflect.Method; import java.util.ArrayList; @@ -1810,7 +1811,8 @@ } private boolean execImpl(JNode node) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "DeadCodeElimination"); + Event optimizeEvent = + SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "DeadCodeElimination"); boolean didChange = false; while (true) { DeadCodeVisitor deadCodeVisitor = new DeadCodeVisitor(); @@ -1820,7 +1822,7 @@ } didChange = true; } - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; } }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/Finalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/Finalizer.java index 2f52809..be9a6a3 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/Finalizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/Finalizer.java
@@ -37,6 +37,7 @@ import com.google.gwt.dev.jjs.ast.js.JsniFieldRef; 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.util.HashSet; import java.util.Set; @@ -204,10 +205,10 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start( + Event optimizeEvent = SpeedTracerLogger.start( CompilerEventType.OPTIMIZE, "optimizer", "Finalizer"); boolean didChange = new Finalizer().execImpl(program); - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/FixAssignmentToUnbox.java b/dev/core/src/com/google/gwt/dev/jjs/impl/FixAssignmentToUnbox.java index b9b078f..d784956 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/FixAssignmentToUnbox.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/FixAssignmentToUnbox.java
@@ -27,6 +27,7 @@ import com.google.gwt.dev.jjs.ast.JProgram; 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; /** * Most autoboxing is handled by {@link GenerateJavaAST}. The only cases it @@ -91,10 +92,11 @@ } public static void exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.FIX_ASSIGNMENT_TO_UNBOX); + Event fixAssignmentToUnboxEvent = + SpeedTracerLogger.start(CompilerEventType.FIX_ASSIGNMENT_TO_UNBOX); new CompoundAssignmentToUnboxNormalizer(program).accept(program); new FixAssignmentToUnbox(program).accept(program); - SpeedTracerLogger.end(CompilerEventType.FIX_ASSIGNMENT_TO_UNBOX); + fixAssignmentToUnboxEvent.end(); } private final AutoboxUtils autoboxUtils;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java index 8606170..31c48de 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -105,6 +105,7 @@ import com.google.gwt.dev.util.collect.Lists; 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 org.eclipse.jdt.core.compiler.CharOperation; import org.eclipse.jdt.internal.compiler.ast.AND_AND_Expression; @@ -3065,7 +3066,7 @@ */ public static void exec(TypeDeclaration[] types, TypeMap typeMap, JProgram jprogram, JsProgram jsProgram, JJSOptions options) { - SpeedTracerLogger.start(CompilerEventType.GENERATE_JAVA_AST); + Event generateJavaAstEvent = SpeedTracerLogger.start(CompilerEventType.GENERATE_JAVA_AST); // Construct the basic AST. JavaASTGenerationVisitor v = new JavaASTGenerationVisitor(typeMap, jprogram, options); @@ -3080,7 +3081,7 @@ // Process JSNI. Map<JsniMethodBody, AbstractMethodDeclaration> jsniMethodMap = v.getJsniMethodMap(); new JsniRefGenerationVisitor(jprogram, jsProgram, jsniMethodMap).accept(jprogram); - SpeedTracerLogger.end(CompilerEventType.GENERATE_JAVA_AST); + generateJavaAstEvent.end(); } /**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java index c63b854..f640c4d 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/JavaScriptObjectNormalizer.java
@@ -41,6 +41,7 @@ import com.google.gwt.dev.jjs.ast.js.JMultiExpression; 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.util.Stack; @@ -271,9 +272,9 @@ } public static void exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.NORMALIZER); + Event normalizerEvent = SpeedTracerLogger.start(CompilerEventType.NORMALIZER); new JavaScriptObjectNormalizer(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.NORMALIZER); + normalizerEvent.end(); } private final JProgram program;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java index 786f9ee..413ccbb 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
@@ -45,6 +45,7 @@ import com.google.gwt.dev.js.ast.JsThisRef; 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.util.ArrayList; import java.util.HashSet; @@ -350,9 +351,9 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "MakeCallsStatic"); + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "MakeCallsStatic"); boolean didChange = new MakeCallsStatic(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java index 6e69a40..b381676 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodCallTightener.java
@@ -29,6 +29,7 @@ import com.google.gwt.dev.jjs.ast.JReferenceType; 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; /** * Update polymorphic method calls to tighter bindings based on the type of the @@ -140,11 +141,10 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start( + Event optimizeEvent = SpeedTracerLogger.start( CompilerEventType.OPTIMIZE, "optimizer", "TypeTightener"); boolean didChange = new MethodCallTightener(program).execImpl(); - SpeedTracerLogger.end( - CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java index 37043c1..a33ab89 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MethodInliner.java
@@ -38,6 +38,7 @@ import com.google.gwt.dev.jjs.ast.js.JMultiExpression; 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.util.HashSet; import java.util.List; @@ -490,11 +491,10 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start( + Event optimizeEvent = SpeedTracerLogger.start( CompilerEventType.OPTIMIZE, "optimizer", "MethodInliner"); boolean didChange = new MethodInliner(program).execImpl(); - SpeedTracerLogger.end( - CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/Pruner.java b/dev/core/src/com/google/gwt/dev/jjs/impl/Pruner.java index 067d3b9..3efd210 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/Pruner.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/Pruner.java
@@ -52,6 +52,7 @@ import com.google.gwt.dev.js.ast.JsFunction; 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.util.ArrayList; import java.util.HashMap; @@ -527,9 +528,9 @@ } public static boolean exec(JProgram program, boolean noSpecialTypes) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "Pruner"); + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "Pruner"); boolean didChange = new Pruner(program, noSpecialTypes).execImpl(); - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/RecordRebinds.java b/dev/core/src/com/google/gwt/dev/jjs/impl/RecordRebinds.java index d171690..64ff60f 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/RecordRebinds.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/RecordRebinds.java
@@ -22,6 +22,7 @@ import com.google.gwt.dev.jjs.ast.JVisitor; 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.util.Set; @@ -45,9 +46,9 @@ } public static void exec(JProgram program, Set<String> liveRebindRequests) { - SpeedTracerLogger.start(CompilerEventType.RECORD_REBINDS); + Event recordRebindsEvent = SpeedTracerLogger.start(CompilerEventType.RECORD_REBINDS); new RecordRebinds(program, liveRebindRequests).execImpl(); - SpeedTracerLogger.end(CompilerEventType.RECORD_REBINDS); + recordRebindsEvent.end(); } private final JProgram program;
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRebinds.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRebinds.java index 1eb438d..84302ec 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRebinds.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRebinds.java
@@ -38,6 +38,7 @@ import com.google.gwt.dev.util.JsniRef; 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.util.ArrayList; import java.util.List; @@ -143,9 +144,9 @@ public static boolean exec(TreeLogger logger, JProgram program, RebindPermutationOracle rpo) { - SpeedTracerLogger.start(CompilerEventType.REPLACE_REBINDS); + Event replaceRebindsEvent = SpeedTracerLogger.start(CompilerEventType.REPLACE_REBINDS); boolean didChange = new ReplaceRebinds(logger, program, rpo).execImpl(); - SpeedTracerLogger.end(CompilerEventType.REPLACE_REBINDS); + replaceRebindsEvent.end(); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java index 1c91a5c..e39f4c0 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ReplaceRunAsyncs.java
@@ -32,6 +32,7 @@ import com.google.gwt.dev.jjs.ast.JType; 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.Serializable; import java.util.ArrayList; @@ -228,11 +229,12 @@ public static void exec(TreeLogger logger, JProgram program) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER, "phase", "ReplaceRunAsyncs"); + Event codeSplitterEvent = + SpeedTracerLogger.start(CompilerEventType.CODE_SPLITTER, "phase", "ReplaceRunAsyncs"); TreeLogger branch = logger.branch(TreeLogger.TRACE, "Replacing GWT.runAsync with island loader calls"); new ReplaceRunAsyncs(branch, program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.CODE_SPLITTER); + codeSplitterEvent.end(); } /**
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java index a813357..93ca794 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
@@ -34,6 +34,7 @@ import com.google.gwt.dev.jjs.ast.js.JsniMethodRef; 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.util.HashSet; import java.util.IdentityHashMap; @@ -181,11 +182,10 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start( + Event optimizeEvent = SpeedTracerLogger.start( CompilerEventType.OPTIMIZE, "optimizer", "SameParameterValueOptimizer"); boolean didChange = new SameParameterValueOptimizer(program).execImpl(program); - SpeedTracerLogger.end( - CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java index 66c8e31..d05bf01 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/TypeTightener.java
@@ -55,6 +55,7 @@ import com.google.gwt.dev.jjs.ast.js.JsniMethodRef; 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.util.ArrayList; import java.util.HashSet; @@ -806,10 +807,10 @@ } public static boolean exec(JProgram program) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "TypeTightener"); boolean didChange = new TypeTightener(program).execImpl(); - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE, "didChange", "" + didChange); + optimizeEvent.end("didChange", "" + didChange); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizer.java index 4ad55a4..8341e6c 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/gflow/DataflowOptimizer.java
@@ -35,14 +35,15 @@ import com.google.gwt.dev.util.Preconditions; 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; /** */ public class DataflowOptimizer { public static boolean exec(JProgram jprogram, JNode node) { - SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "DataflowOptimizer"); + Event optimizeEvent = SpeedTracerLogger.start(CompilerEventType.OPTIMIZE, "optimizer", "DataflowOptimizer"); boolean didChange = new DataflowOptimizer(jprogram).execImpl(node); - SpeedTracerLogger.end(CompilerEventType.OPTIMIZE); + optimizeEvent.end(); return didChange; }
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java index 18bdf48..2b7e547 100644 --- a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java +++ b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
@@ -20,6 +20,7 @@ import com.google.gwt.dev.resource.ResourceOracle; 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 com.google.gwt.dev.util.msg.Message0; import com.google.gwt.dev.util.msg.Message1String; @@ -306,7 +307,8 @@ * @param logger status and error details are written here */ public void refresh(TreeLogger logger) { - SpeedTracerLogger.start(CompilerEventType.RESOURCE_ORACLE, "phase", "refresh"); + Event resourceOracle = + SpeedTracerLogger.start(CompilerEventType.RESOURCE_ORACLE, "phase", "refresh"); TreeLogger refreshBranch = Messages.REFRESHING_RESOURCES.branch(logger, null); @@ -362,7 +364,7 @@ exposedResources = Collections.unmodifiableSet(externalSet); exposedResourceMap = Collections.unmodifiableMap(externalMap); exposedPathNames = Collections.unmodifiableSet(externalMap.keySet()); - SpeedTracerLogger.end(CompilerEventType.RESOURCE_ORACLE); + resourceOracle.end(); } public void setPathPrefixes(PathPrefixSet pathPrefixSet) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java index a42cd89..744649e 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java +++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpace.java
@@ -21,6 +21,7 @@ import com.google.gwt.dev.util.Name.BinaryName; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -315,7 +316,7 @@ * Runs the module's user startup code. */ public final void onLoad(TreeLogger logger) throws UnableToCompleteException { - SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_LOAD); + Event moduleSpaceLoad = SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_LOAD); // Tell the host we're ready for business. // @@ -374,11 +375,11 @@ invokeNativeVoid("fireOnModuleLoadStart", null, new Class[] {String.class}, new Object[] {entryPointTypeName}); - SpeedTracerLogger.start(DevModeEventType.ON_MODULE_LOAD); + Event onModuleLoadEvent = SpeedTracerLogger.start(DevModeEventType.ON_MODULE_LOAD); try { onModuleLoad.invoke(module); } finally { - SpeedTracerLogger.end(DevModeEventType.ON_MODULE_LOAD); + onModuleLoadEvent.end(); } } } finally { @@ -411,7 +412,7 @@ logger.log(TreeLogger.ERROR, unableToLoadMessage, caught); throw new UnableToCompleteException(); } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_SPACE_LOAD); + moduleSpaceLoad.end(); } } @@ -423,7 +424,8 @@ String msg = null; String resultName = null; - SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_REBIND_AND_CREATE); + Event moduleSpaceRebindAndCreate = + SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_REBIND_AND_CREATE); try { // Rebind operates on source-level names. // @@ -454,7 +456,7 @@ } catch (InvocationTargetException e) { caught = e.getTargetException(); } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_SPACE_REBIND_AND_CREATE); + moduleSpaceRebindAndCreate.end(); } // Always log here because sometimes this method gets called from static @@ -593,7 +595,7 @@ */ private Class<?> loadClassFromSourceName(String sourceName) throws ClassNotFoundException { - SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_CLASS_LOAD); + Event moduleSpaceClassLoad = SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_CLASS_LOAD); try { String toTry = sourceName; while (true) { @@ -611,7 +613,7 @@ } } } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_SPACE_CLASS_LOAD); + moduleSpaceClassLoad.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/ModuleSpaceOOPHM.java b/dev/core/src/com/google/gwt/dev/shell/ModuleSpaceOOPHM.java index 0e81845..84560bd 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ModuleSpaceOOPHM.java +++ b/dev/core/src/com/google/gwt/dev/shell/ModuleSpaceOOPHM.java
@@ -20,6 +20,7 @@ import com.google.gwt.dev.shell.JsValue.DispatchObject; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.util.List; import java.util.Set; @@ -104,7 +105,7 @@ Object[] args) throws Throwable { TreeLogger branch = host.getLogger().branch(TreeLogger.SPAM, "Invoke native method " + name, null); - SpeedTracerLogger.start(DevModeEventType.JAVA_TO_JS_CALL); + Event javaToJsCallEvent = SpeedTracerLogger.start(DevModeEventType.JAVA_TO_JS_CALL); CompilingClassLoader isolatedClassLoader = getIsolatedClassLoader(); JsValueOOPHM jsthis = new JsValueOOPHM(); @@ -129,7 +130,7 @@ branch.log(TreeLogger.SPAM, "exception thrown", t); throw t; } finally { - SpeedTracerLogger.end(DevModeEventType.JAVA_TO_JS_CALL); + javaToJsCallEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/OophmSessionHandler.java b/dev/core/src/com/google/gwt/dev/shell/OophmSessionHandler.java index 0ce8bc8..8eef148 100644 --- a/dev/core/src/com/google/gwt/dev/shell/OophmSessionHandler.java +++ b/dev/core/src/com/google/gwt/dev/shell/OophmSessionHandler.java
@@ -23,6 +23,7 @@ import com.google.gwt.dev.shell.JsValue.DispatchObject; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.lang.reflect.Member; import java.util.Collections; @@ -98,7 +99,7 @@ @Override public ExceptionOrReturnValue invoke(BrowserChannelServer channel, Value thisVal, int methodDispatchId, Value[] args) { - SpeedTracerLogger.start(DevModeEventType.JS_TO_JAVA_CALL); + Event jsToJavaCallEvent = SpeedTracerLogger.start(DevModeEventType.JS_TO_JAVA_CALL); ServerObjectsTable localObjects = channel.getJavaObjectsExposedInBrowser(); ModuleSpace moduleSpace = moduleMap.get(channel); ModuleHandle moduleHandle = moduleHandleMap.get(channel); @@ -160,7 +161,7 @@ t.getClass(), t); } Value retVal = channel.convertFromJsValue(localObjects, jsRetVal); - SpeedTracerLogger.end(DevModeEventType.JS_TO_JAVA_CALL); + jsToJavaCallEvent.end(); return new ExceptionOrReturnValue(exception, retVal); } @@ -168,7 +169,7 @@ public synchronized TreeLogger loadModule(BrowserChannelServer channel, String moduleName, String userAgent, String url, String tabKey, String sessionKey, byte[] userAgentIcon) { - SpeedTracerLogger.start(DevModeEventType.MODULE_INIT); + Event moduleInit = SpeedTracerLogger.start(DevModeEventType.MODULE_INIT); ModuleHandle moduleHandle = host.createModuleLogger(moduleName, userAgent, url, tabKey, sessionKey, channel, userAgentIcon); TreeLogger logger = moduleHandle.getLogger(); @@ -199,7 +200,7 @@ moduleHandleMap.remove(channel); return null; } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_INIT); + moduleInit.end(); } return moduleHandle.getLogger(); }
diff --git a/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java b/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java index c748f75..72d7305 100644 --- a/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java +++ b/dev/core/src/com/google/gwt/dev/shell/ShellModuleSpaceHost.java
@@ -24,6 +24,7 @@ import com.google.gwt.dev.javac.StandardGeneratorContext; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.io.File; @@ -84,7 +85,7 @@ throws UnableToCompleteException { this.space = readySpace; - SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_HOST_READY); + Event moduleSpaceHostReadyEvent = SpeedTracerLogger.start(DevModeEventType.MODULE_SPACE_HOST_READY); try { // Establish an environment for JavaScript property providers to run. // @@ -112,7 +113,7 @@ // classLoader = new CompilingClassLoader(logger, compilationState, readySpace); } finally { - SpeedTracerLogger.end(DevModeEventType.MODULE_SPACE_HOST_READY); + moduleSpaceHostReadyEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/StandardRebindOracle.java b/dev/core/src/com/google/gwt/dev/shell/StandardRebindOracle.java index f42e126..03b5059 100644 --- a/dev/core/src/com/google/gwt/dev/shell/StandardRebindOracle.java +++ b/dev/core/src/com/google/gwt/dev/shell/StandardRebindOracle.java
@@ -26,6 +26,7 @@ import com.google.gwt.dev.util.Util; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.util.ArrayList; import java.util.HashMap; @@ -51,7 +52,7 @@ public String rebind(TreeLogger logger, String typeName, ArtifactAcceptor artifactAcceptor) throws UnableToCompleteException { - SpeedTracerLogger.start(DevModeEventType.REBIND); + Event rebindEvent = SpeedTracerLogger.start(DevModeEventType.REBIND); try { genCtx.setPropertyOracle(propOracle); String result = tryRebind(logger, typeName); @@ -67,7 +68,7 @@ } return result; } finally { - SpeedTracerLogger.end(DevModeEventType.REBIND); + rebindEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java index 9b7e61c..f85ba0a 100644 --- a/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java +++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/HostedModeClassRewriter.java
@@ -24,6 +24,7 @@ import com.google.gwt.dev.shell.JsValueGlue; import com.google.gwt.dev.util.log.speedtracer.DevModeEventType; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import java.util.Collections; import java.util.HashMap; @@ -219,7 +220,7 @@ */ public byte[] rewrite(TypeOracle typeOracle, String className, byte[] classBytes, Map<String, String> anonymousClassMap) { - SpeedTracerLogger.start(DevModeEventType.CLASS_BYTES_REWRITE); + Event classBytesRewriteEvent = SpeedTracerLogger.start(DevModeEventType.CLASS_BYTES_REWRITE); String desc = toDescriptor(className); assert (!jsoIntfDescs.contains(desc)); @@ -247,7 +248,7 @@ } new ClassReader(classBytes).accept(v, 0); - SpeedTracerLogger.end(DevModeEventType.CLASS_BYTES_REWRITE); + classBytesRewriteEvent.end(); return writer.toByteArray(); }
diff --git a/dev/core/src/com/google/gwt/dev/util/Util.java b/dev/core/src/com/google/gwt/dev/util/Util.java index cf1a3f2..48acd27 100644 --- a/dev/core/src/com/google/gwt/dev/util/Util.java +++ b/dev/core/src/com/google/gwt/dev/util/Util.java
@@ -20,6 +20,7 @@ import com.google.gwt.core.ext.typeinfo.TypeOracle; 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 com.google.gwt.util.tools.Utility; import org.w3c.dom.Attr; @@ -1213,7 +1214,7 @@ */ public static void writeObjectAsFile(TreeLogger logger, File file, Object... objects) throws UnableToCompleteException { - SpeedTracerLogger.start(CompilerEventType.WRITE_OBJECT_AS_FILE); + Event writeObjectAsFileEvent = SpeedTracerLogger.start(CompilerEventType.WRITE_OBJECT_AS_FILE); FileOutputStream stream = null; try { // No need to check mkdirs result because an IOException will occur anyway @@ -1226,7 +1227,7 @@ throw new UnableToCompleteException(); } finally { Utility.close(stream); - SpeedTracerLogger.end(CompilerEventType.WRITE_OBJECT_AS_FILE); + writeObjectAsFileEvent.end(); } }
diff --git a/dev/core/src/com/google/gwt/dev/util/log/speedtracer/CompilerEventType.java b/dev/core/src/com/google/gwt/dev/util/log/speedtracer/CompilerEventType.java index d38763c..eb66b10 100644 --- a/dev/core/src/com/google/gwt/dev/util/log/speedtracer/CompilerEventType.java +++ b/dev/core/src/com/google/gwt/dev/util/log/speedtracer/CompilerEventType.java
@@ -36,7 +36,7 @@ PRECOMPILE("Precompile", "CornflowerBlue"), // RESOURCE_ORACLE("ResourceOracle", "GoldenRod"), // TYPE_ORACLE_MEDIATOR("TypeOracleMediator", "LightSteelBlue"), // - CRORE_PRECOMPILE("CroreCompiler", "Crimson"), // + PRECOMPILE_CORE("CoreCompiler", "Crimson"), // WRITE_OBJECT_AS_FILE("WriteObjectAsFile", "Magenta"), // BUILD_AST("BuildAST", "DarkGoldenRod"), // FUNCTION_CLUSTER("JsFunctionClusterer","Cornflower"), //
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 0cddcc9..4232bd7 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
@@ -56,7 +56,7 @@ /** * Represents a node in a tree of SpeedTracer events. */ - private class Event { + public class Event { List<Event> children = Lists.create(); List<String> data; long durationNanos; @@ -89,6 +89,13 @@ } } + /** + * Signals the end of the current event. + */ + public void end(String... data) { + SpeedTracerLogger.get().endImpl(this, data); + } + @Override public String toString() { return type.getName(); @@ -123,6 +130,26 @@ return nanos / 1000000.0d; } } + + /** + * A dummy implementation to do nothing if logging has not been turned on. + */ + private class DummyEvent extends Event { + @Override + public void addData(String ...data) { + // do nothing + } + + @Override + public void end(String... data) { + // do nothing + } + + @Override + public String toString() { + return "Dummy"; + } + } /** * Initializes the singleton on demand. @@ -191,13 +218,6 @@ } /** - * Signals the end of the current event. - */ - public static void end(EventType type, String... data) { - SpeedTracerLogger.get().endImpl(type, data); - } - - /** * Create a new global instance. Force the zero time to be recorded and the * log to be opened if the default logging is turned on with the * <code>-Dgwt.speedtracerlog</code> VM property. @@ -209,15 +229,16 @@ } /** - * Signals that a new event has started. You must call {@link #end} for each + * Signals that a new event has started. You must end each event for each * corresponding call to {@code start}. You may nest timing calls. * * @param type the type of event * @data a set of key-value pairs (each key is followed by its value) that * contain additional information about the event + * @return an Event object to be closed by the caller */ - public static void start(EventType type, String... data) { - SpeedTracerLogger.get().startImpl(type, data); + public static Event start(EventType type, String... data) { + return SpeedTracerLogger.get().startImpl(type, data); } /** @@ -231,6 +252,7 @@ return LazySpeedTracerLoggerHolder.singleton; } + private final DummyEvent dummyEvent = new DummyEvent(); private final BlockingQueue<Event> eventQueue = new LinkedBlockingQueue<Event>(); private final BlockingQueue<Event> eventsToWrite; @@ -276,7 +298,7 @@ currentEvent.addData(data); } - void endImpl(EventType type, String... data) { + void endImpl(Event event, String... data) { if (eventsToWrite == null) { return; } @@ -296,15 +318,15 @@ assert (endTimeNanos >= currentEvent.startTimeNanos); currentEvent.durationNanos = endTimeNanos - currentEvent.startTimeNanos; - while (currentEvent.type != type && !threadPendingEvents.isEmpty()) { + while (currentEvent != event && !threadPendingEvents.isEmpty()) { // Missed a closing end for one or more frames! Try to sync back up. - currentEvent.addData("Missed", "This event was closed without an explicit call to SpeedTracerLogger.end()"); + currentEvent.addData("Missed", "This event was closed without an explicit call to Event.end()"); currentEvent = threadPendingEvents.pop(); assert (endTimeNanos >= currentEvent.startTimeNanos); currentEvent.durationNanos = endTimeNanos - currentEvent.startTimeNanos; } - if (threadPendingEvents.isEmpty() && currentEvent.type != type) { + if (threadPendingEvents.isEmpty() && currentEvent != event) { currentEvent.addData("Missed", "Fell off the end of the threadPending events"); } @@ -328,9 +350,9 @@ } } - void startImpl(EventType type, String... data) { + Event startImpl(EventType type, String... data) { if (eventsToWrite == null) { - return; + return dummyEvent; } if (data.length % 2 == 1) { @@ -345,6 +367,7 @@ Event newEvent = new Event(parent, type, data); threadPendingEvents.push(newEvent); + return newEvent; } private long normalizedTimeNanos() {
diff --git a/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java b/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java index f11bc54..60954ab 100644 --- a/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java +++ b/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java
@@ -18,6 +18,7 @@ import com.google.gwt.dev.json.JsonArray; import com.google.gwt.dev.json.JsonException; import com.google.gwt.dev.json.JsonObject; +import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event; import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.EventType; import junit.framework.TestCase; @@ -64,8 +65,8 @@ @Override public void run() { for (int i = 0; i < MAX_EVENT_LOGS; i++) { - logger.startImpl(event); - logger.endImpl(event); + Event e = logger.startImpl(event); + logger.endImpl(e); } } } @@ -81,12 +82,12 @@ public void testSpeedTracerLogger() throws IOException, JsonException { Writer writer = new StringWriter(); SpeedTracerLogger logger = new SpeedTracerLogger(writer); - logger.startImpl(dummyOne); - logger.startImpl(dummyTwo); - logger.endImpl(dummyTwo); - logger.startImpl(dummyThree); - logger.endImpl(dummyThree); - logger.endImpl(dummyOne); + Event dummyOneEvent = logger.startImpl(dummyOne); + Event dummyTwoEvent = logger.startImpl(dummyTwo); + logger.endImpl(dummyTwoEvent); + Event dummyThreeEvent = logger.startImpl(dummyThree); + logger.endImpl(dummyThreeEvent); + logger.endImpl(dummyOneEvent); logger.flush(); Reader jsonReader = extractJsonFromWriter(writer); @@ -111,9 +112,9 @@ JsonException { Writer writer = new StringWriter(); SpeedTracerLogger logger = new SpeedTracerLogger(writer); - logger.startImpl(dummyOne, "extraStart", "valueStart"); + Event dummyOneEvent = logger.startImpl(dummyOne, "extraStart", "valueStart"); logger.addDataImpl("extraMiddle", "valueMiddle"); - logger.endImpl(dummyOne, "extraEnd", "valueEnd"); + logger.endImpl(dummyOneEvent, "extraEnd", "valueEnd"); logger.flush(); Reader jsonReader = extractJsonFromWriter(writer); @@ -131,12 +132,12 @@ public void testSpeedTracerLoggerMultiple() throws IOException, JsonException { Writer writer = new StringWriter(); SpeedTracerLogger logger = new SpeedTracerLogger(writer); - logger.startImpl(dummyOne); - logger.endImpl(dummyOne); - logger.startImpl(dummyTwo); - logger.endImpl(dummyTwo); - logger.startImpl(dummyThree); - logger.endImpl(dummyThree); + Event dummyOneEvent = logger.startImpl(dummyOne); + logger.endImpl(dummyOneEvent); + Event dummyTwoEvent = logger.startImpl(dummyTwo); + logger.endImpl(dummyTwoEvent); + Event dummyThreeEvent = logger.startImpl(dummyThree); + logger.endImpl(dummyThreeEvent); logger.flush(); Reader jsonReader = extractJsonFromWriter(writer);