# HG changeset patch # User Doug Simon # Date 1383905540 -3600 # Node ID c6b7f982e949f0e15257122603144b8d4a9f7a7d # Parent b9f19a33dbb288d672c76dc169709d85478f9fc5 added per SnippetTemplate instantiation timer and counter diff -r b9f19a33dbb2 -r c6b7f982e949 graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java --- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Nov 08 10:56:42 2013 +0100 +++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java Fri Nov 08 11:12:20 2013 +0100 @@ -72,8 +72,20 @@ protected final ResolvedJavaMethod method; protected final boolean[] constantParameters; protected final boolean[] varargsParameters; + + /** + * Times instantiations of all templates derived form this snippet. + * + * @see SnippetTemplate#instantiationTimer + */ + private final DebugTimer instantiationTimer; + + /** + * Counts instantiations of all templates derived from this snippet. + * + * @see SnippetTemplate#instantiationCounter + */ private final DebugMetric instantiationCounter; - private final DebugTimer instantiationTimer; /** * The parameter names, taken from the local variables table. Only used for assertion @@ -333,9 +345,9 @@ } } - private static final DebugTimer SnippetCreationAndSpecialization = Debug.timer("SnippetCreationAndSpecialization"); - private static final DebugMetric SnippetSpecializations = Debug.metric("SnippetSpecializations"); - private static final DebugMetric SnippetSpecializationsNodeCount = Debug.metric("SnippetSpecializationsNodeCount"); + private static final DebugTimer SnippetTemplateCreationTime = Debug.timer("SnippetTemplateCreationTime"); + private static final DebugMetric SnippetTemplates = Debug.metric("SnippetTemplateCount"); + private static final DebugMetric SnippetTemplatesNodeCount = Debug.metric("SnippetTemplatesNodeCount"); private static final DebugMetric SnippetGraphsNodeCount = Debug.metric("SnippetGraphsNodeCount"); private static final boolean UseSnippetTemplateCache = Boolean.parseBoolean(System.getProperty("graal.useSnippetTemplateCache", "true")); @@ -382,8 +394,8 @@ protected SnippetTemplate template(final Arguments args) { SnippetTemplate template = UseSnippetTemplateCache ? templates.get(args.cacheKey) : null; if (template == null) { - SnippetSpecializations.increment(); - try (TimerCloseable a = SnippetCreationAndSpecialization.start()) { + SnippetTemplates.increment(); + try (TimerCloseable a = SnippetTemplateCreationTime.start()) { template = Debug.scope("SnippetSpecialization", args.info.method, new Callable() { @Override @@ -608,7 +620,9 @@ this.stampNodes = curStampNodes; this.returnNode = retNode; - SnippetSpecializationsNodeCount.add(nodes.size()); + SnippetTemplatesNodeCount.add(nodes.size()); + instantiationTimer = Debug.timer("SnippetTemplateInstantiationTime[" + args.info.method.getName() + "]@" + hashCode()); + instantiationCounter = Debug.metric("SnippetTemplateInstantiationCount[" + args.info.method.getName() + "]@" + hashCode()); } private static boolean checkAllVarargPlaceholdersAreDeleted(int parameterCount, VarargsPlaceholderNode[] placeholders) { @@ -689,6 +703,20 @@ private MemoryMapNode memoryMap; /** + * Times instantiations of this template. + * + * @see SnippetInfo#instantiationTimer + */ + private final DebugTimer instantiationTimer; + + /** + * Counts instantiations of this template. + * + * @see SnippetInfo#instantiationCounter + */ + private final DebugMetric instantiationCounter; + + /** * Gets the instantiation-time bindings to this template's parameters. * * @return the map that will be used to bind arguments to parameters when inlining this template @@ -891,8 +919,9 @@ */ public Map instantiate(MetaAccessProvider metaAccess, FixedNode replacee, UsageReplacer replacer, Arguments args) { assert checkSnippetKills(replacee); - try (TimerCloseable a = args.info.instantiationTimer.start()) { + try (TimerCloseable a = args.info.instantiationTimer.start(); TimerCloseable b = instantiationTimer.start()) { args.info.instantiationCounter.increment(); + instantiationCounter.increment(); // Inline the snippet nodes, replacing parameters with the given args in the process StartNode entryPointNode = snippet.start(); FixedNode firstCFGNode = entryPointNode.next(); @@ -986,6 +1015,7 @@ assert checkSnippetKills(replacee); try (TimerCloseable a = args.info.instantiationTimer.start()) { args.info.instantiationCounter.increment(); + instantiationCounter.increment(); // Inline the snippet nodes, replacing parameters with the given args in the process String name = snippet.name == null ? "{copy}" : snippet.name + "{copy}";