Mercurial > hg > graal-jvmci-8
changeset 17147:7a3f6543d383
added timer for NodeClass initializer (-Dgraal.debug.timer.NodeClassCreation=true)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 18 Sep 2014 12:22:35 +0200 |
parents | 2e4bd9de8682 |
children | 3837c6aa9fd0 |
files | graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java |
diffstat | 1 files changed, 19 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Wed Sep 17 17:06:37 2014 -0700 +++ b/graal/com.oracle.graal.graph/src/com/oracle/graal/graph/NodeClass.java Thu Sep 18 12:22:35 2014 +0200 @@ -32,6 +32,7 @@ import com.oracle.graal.compiler.common.*; import com.oracle.graal.debug.*; +import com.oracle.graal.debug.internal.*; import com.oracle.graal.graph.Graph.DuplicationReplacement; import com.oracle.graal.graph.Node.Input; import com.oracle.graal.graph.Node.Successor; @@ -50,6 +51,8 @@ private static final Object GetNodeClassLock = new Object(); + private static final DebugTimer NodeClassCreation = Debug.timer("NodeClassCreation"); + /** * Gets the {@link NodeClass} associated with a given {@link Class}. */ @@ -64,23 +67,25 @@ // The creation of a NodeClass must be serialized as the NodeClass constructor accesses // both FieldIntrospection.allClasses and NodeClass.nextIterableId. synchronized (GetNodeClassLock) { - value = (NodeClass) allClasses.get(key); - if (value == null) { - GeneratedNode gen = c.getAnnotation(GeneratedNode.class); - if (gen != null) { - Class<? extends Node> originalNodeClass = (Class<? extends Node>) gen.value(); - value = (NodeClass) allClasses.get(originalNodeClass); - assert value != null; - if (value.genClass == null) { - value.genClass = (Class<? extends Node>) c; + try (TimerCloseable t = NodeClassCreation.start()) { + value = (NodeClass) allClasses.get(key); + if (value == null) { + GeneratedNode gen = c.getAnnotation(GeneratedNode.class); + if (gen != null) { + Class<? extends Node> originalNodeClass = (Class<? extends Node>) gen.value(); + value = (NodeClass) allClasses.get(originalNodeClass); + assert value != null; + if (value.genClass == null) { + value.genClass = (Class<? extends Node>) c; + } else { + assert value.genClass == c; + } } else { - assert value.genClass == c; + value = new NodeClass(key); } - } else { - value = new NodeClass(key); + Object old = allClasses.putIfAbsent(key, value); + assert old == null : old + " " + key; } - Object old = allClasses.putIfAbsent(key, value); - assert old == null : old + " " + key; } } }