changeset 16541:62773598c55d

extract method in PartialEvaluatorCanonicalizer
author Christian Wirth <christian.wirth@oracle.com>
date Thu, 17 Jul 2014 11:05:11 +0200
parents a18c229b9a0b
children 45fff0246a43
files graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java
diffstat 1 files changed, 25 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java	Thu Jul 17 11:00:19 2014 +0200
+++ b/graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/PartialEvaluatorCanonicalizer.java	Thu Jul 17 11:05:11 2014 +0200
@@ -43,27 +43,35 @@
     @Override
     public Node canonicalize(Node node) {
         if (node instanceof LoadFieldNode) {
-            LoadFieldNode loadFieldNode = (LoadFieldNode) node;
-            if (!loadFieldNode.isStatic() && loadFieldNode.object().isConstant() && !loadFieldNode.object().isNullConstant()) {
-                if (loadFieldNode.field().isFinal() || (loadFieldNode.getKind() == Kind.Object && loadFieldNode.field().getAnnotation(Child.class) != null) ||
-                                loadFieldNode.field().getAnnotation(CompilerDirectives.CompilationFinal.class) != null) {
-                    Constant constant = loadFieldNode.field().readValue(loadFieldNode.object().asConstant());
-                    assert verifyFieldValue(loadFieldNode.field(), constant);
-                    return ConstantNode.forConstant(constant, metaAccess);
-                }
-            }
+            return canonicalizeLoadField((LoadFieldNode) node);
         } else if (node instanceof LoadIndexedNode) {
-            LoadIndexedNode loadIndexedNode = (LoadIndexedNode) node;
-            if (loadIndexedNode.array().isConstant() && loadIndexedNode.index().isConstant()) {
-                int index = loadIndexedNode.index().asConstant().asInt();
+            return canonicalizeLoadIndex((LoadIndexedNode) node);
+        }
+        return node;
+    }
 
-                Constant constant = constantReflection.readArrayElement(loadIndexedNode.array().asConstant(), index);
-                if (constant != null) {
-                    return ConstantNode.forConstant(constant, metaAccess);
-                }
+    private Node canonicalizeLoadField(LoadFieldNode loadFieldNode) {
+        if (!loadFieldNode.isStatic() && loadFieldNode.object().isConstant() && !loadFieldNode.object().isNullConstant()) {
+            if (loadFieldNode.field().isFinal() || (loadFieldNode.getKind() == Kind.Object && loadFieldNode.field().getAnnotation(Child.class) != null) ||
+                            loadFieldNode.field().getAnnotation(CompilerDirectives.CompilationFinal.class) != null) {
+                Constant constant = loadFieldNode.field().readValue(loadFieldNode.object().asConstant());
+                assert verifyFieldValue(loadFieldNode.field(), constant);
+                return ConstantNode.forConstant(constant, metaAccess);
             }
         }
-        return node;
+        return loadFieldNode;
+    }
+
+    private Node canonicalizeLoadIndex(LoadIndexedNode loadIndexedNode) {
+        if (loadIndexedNode.array().isConstant() && loadIndexedNode.index().isConstant()) {
+            int index = loadIndexedNode.index().asConstant().asInt();
+
+            Constant constant = constantReflection.readArrayElement(loadIndexedNode.array().asConstant(), index);
+            if (constant != null) {
+                return ConstantNode.forConstant(constant, metaAccess);
+            }
+        }
+        return loadIndexedNode;
     }
 
     private boolean verifyFieldValue(ResolvedJavaField field, Constant constant) {