changeset 12716:c6b7f982e949

added per SnippetTemplate instantiation timer and counter
author Doug Simon <doug.simon@oracle.com>
date Fri, 08 Nov 2013 11:12:20 +0100
parents b9f19a33dbb2
children dd856c84a75c
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java
diffstat 1 files changed, 38 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- 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<SnippetTemplate>() {
 
                         @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<Node, Node> 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}";