changeset 12728:3e88ee655612

per SnippetTemplate metrics now include the details of the specialization in their name
author Doug Simon <doug.simon@oracle.com>
date Fri, 08 Nov 2013 16:14:16 +0100
parents c46e091cba57
children 64d960e854e6 8e862906e2e4
files graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java
diffstat 1 files changed, 28 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Fri Nov 08 16:13:15 2013 +0100
+++ b/graal/com.oracle.graal.replacements/src/com/oracle/graal/replacements/SnippetTemplate.java	Fri Nov 08 16:14:16 2013 +0100
@@ -33,8 +33,8 @@
 import com.oracle.graal.api.replacements.*;
 import com.oracle.graal.debug.*;
 import com.oracle.graal.debug.internal.*;
+import com.oracle.graal.graph.Graph.Mark;
 import com.oracle.graal.graph.*;
-import com.oracle.graal.graph.Graph.Mark;
 import com.oracle.graal.graph.iterators.*;
 import com.oracle.graal.loop.*;
 import com.oracle.graal.nodes.*;
@@ -427,12 +427,39 @@
         return false;
     }
 
+    private static String debugValueName(SnippetTemplate template, String category, Arguments args) {
+        if (Debug.isEnabled()) {
+            StringBuilder result = new StringBuilder(category).append('[');
+            SnippetInfo info = args.info;
+            result.append(info.method.getName()).append('(');
+            String sep = "";
+            for (int i = 0; i < info.getParameterCount(); i++) {
+                if (info.isConstantParameter(i)) {
+                    result.append(sep);
+                    if (info.names[i] != null) {
+                        result.append(info.names[i]);
+                    } else {
+                        result.append(i);
+                    }
+                    result.append('=').append(args.values[i]);
+                    sep = ", ";
+                }
+            }
+            result.append(")]@").append(template.hashCode());
+            return result.toString();
+
+        }
+        return null;
+    }
+
     /**
      * Creates a snippet template.
      */
     protected SnippetTemplate(final Providers providers, Arguments args) {
         StructuredGraph snippetGraph = providers.getReplacements().getSnippet(args.info.method);
         SnippetGraphsNodeCount.add(snippetGraph.getNodeCount());
+        instantiationTimer = Debug.timer(debugValueName(this, "SnippetTemplateInstantiationTime", args));
+        instantiationCounter = Debug.metric(debugValueName(this, "SnippetTemplateInstantiationCount", args));
 
         ResolvedJavaMethod method = snippetGraph.method();
         Signature signature = method.getSignature();
@@ -621,8 +648,6 @@
         this.returnNode = retNode;
 
         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) {