Mercurial > hg > graal-compiler
changeset 17304:acee76c5f8a4
added metrics for value numberable caches hits and missues
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 01 Oct 2014 16:18:19 +0200 |
parents | ddc424ed8966 |
children | 679612367e1a 8dcb64d6e987 |
files | graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java |
diffstat | 1 files changed, 14 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Wed Oct 01 16:18:11 2014 +0200 +++ b/graal/com.oracle.graal.nodeinfo.processor/src/com/oracle/graal/nodeinfo/processor/GraphNodeGenerator.java Wed Oct 01 16:18:19 2014 +0200 @@ -46,8 +46,6 @@ */ public class GraphNodeGenerator { - @SuppressWarnings("unused") private static final boolean GENERATE_ASSERTIONS = false; - private final GraphNodeProcessor env; private final Types types; private final Elements elements; @@ -57,11 +55,11 @@ private final TypeElement Successor; final TypeElement Node; - @SuppressWarnings("unused") private final TypeElement NodeList; private final TypeElement NodeInputList; private final TypeElement NodeSuccessorList; private final TypeElement ValueNumberable; - @SuppressWarnings("unused") private final TypeElement Position; + private final TypeElement DebugMetric; + private final TypeElement Debug; private final List<VariableElement> inputFields = new ArrayList<>(); private final List<VariableElement> inputListFields = new ArrayList<>(); @@ -84,11 +82,11 @@ this.OptionalInput = getTypeElement("com.oracle.graal.graph.Node.OptionalInput"); this.Successor = getTypeElement("com.oracle.graal.graph.Node.Successor"); this.Node = getTypeElement("com.oracle.graal.graph.Node"); - this.NodeList = getTypeElement("com.oracle.graal.graph.NodeList"); this.NodeInputList = getTypeElement("com.oracle.graal.graph.NodeInputList"); this.NodeSuccessorList = getTypeElement("com.oracle.graal.graph.NodeSuccessorList"); - this.Position = getTypeElement("com.oracle.graal.graph.Position"); this.ValueNumberable = getTypeElement("com.oracle.graal.graph.Node.ValueNumberable"); + this.DebugMetric = getTypeElement("com.oracle.graal.debug.DebugMetric"); + this.Debug = getTypeElement("com.oracle.graal.debug.Debug"); } @SafeVarargs @@ -443,7 +441,15 @@ private void createValueNumberMethod(TypeElement node) { if (isAssignableWithErasure(node, ValueNumberable)) { + String simpleName = node.getSimpleName().toString(); + CodeVariableElement cacheHitMetric = new CodeVariableElement(modifiers(PRIVATE, STATIC, FINAL), DebugMetric.asType(), "ValueNumberableCache_" + simpleName + "_Hit"); + CodeVariableElement cacheMissMetric = new CodeVariableElement(modifiers(PRIVATE, STATIC, FINAL), DebugMetric.asType(), "ValueNumberableCache_" + simpleName + "_Miss"); + cacheHitMetric.createInitBuilder().type(Debug.asType()).string(".metric(\"", cacheHitMetric.getName().replace('_', '.') + "\")").end(); + cacheMissMetric.createInitBuilder().type(Debug.asType()).string(".metric(\"", cacheMissMetric.getName().replace('_', '.') + "\")").end(); + genClass.add(new CodeVariableElement(modifiers(PRIVATE), getType(int.class), "valueNumber")); + genClass.add(cacheHitMetric); + genClass.add(cacheMissMetric); CodeExecutableElement method = new CodeExecutableElement(modifiers(PUBLIC), getType(int.class), "getValueNumber"); CodeTreeBuilder b = method.createBuilder(); @@ -488,7 +494,9 @@ } } b.startStatement().string("valueNumber = number").end(); + b.startStatement().string("ValueNumberableCache_" + simpleName + "_Miss", ".increment()").end(); b.end(); + b.startElseBlock().startStatement().string("ValueNumberableCache_" + simpleName + "_Hit", ".increment()").end().end(); b.startReturn().string("valueNumber").end(); genClass.add(method); checkOnlyInGenNode(method);