changeset 14122:2a7d7da912e1

Don't narrow NarrowableArithmetic by default.
author Roland Schatz <roland.schatz@oracle.com>
date Mon, 10 Mar 2014 13:32:06 +0100
parents 0ddb3b3665bd
children dc41eab09fe8
files graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java
diffstat 4 files changed, 8 insertions(+), 34 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java	Mon Mar 10 11:38:30 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerConvertNode.java	Mon Mar 10 13:32:06 2014 +0100
@@ -23,6 +23,7 @@
 package com.oracle.graal.nodes.calc;
 
 import com.oracle.graal.api.meta.*;
+import com.oracle.graal.graph.spi.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.spi.*;
 import com.oracle.graal.nodes.type.*;
@@ -30,7 +31,7 @@
 /**
  * An {@code IntegerConvert} converts an integer to an integer of different width.
  */
-public abstract class IntegerConvertNode extends ConvertNode implements ArithmeticLIRLowerable {
+public abstract class IntegerConvertNode extends ConvertNode implements ArithmeticLIRLowerable, Canonicalizable {
 
     private final int resultBits;
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java	Mon Mar 10 11:38:30 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NarrowNode.java	Mon Mar 10 13:32:06 2014 +0100
@@ -32,7 +32,7 @@
 /**
  * The {@code NarrowNode} converts an integer to a narrower integer.
  */
-public class NarrowNode extends IntegerConvertNode implements Simplifiable {
+public class NarrowNode extends IntegerConvertNode {
 
     public NarrowNode(ValueNode input, int resultBits) {
         super(StampTool.narrowingConversion(input.stamp(), resultBits), input, resultBits);
@@ -64,7 +64,8 @@
         return false;
     }
 
-    private ValueNode tryCanonicalize() {
+    @Override
+    public Node canonical(CanonicalizerTool tool) {
         ValueNode ret = canonicalConvert();
         if (ret != null) {
             return ret;
@@ -99,35 +100,7 @@
             }
         }
 
-        return null;
-    }
-
-    private boolean tryNarrow(SimplifierTool tool, Stamp stamp, ValueNode node) {
-        boolean canNarrow = node instanceof NarrowableArithmeticNode && node.usages().count() == 1;
-
-        if (canNarrow) {
-            for (Node inputNode : node.inputs().snapshot()) {
-                ValueNode input = (ValueNode) inputNode;
-                if (!tryNarrow(tool, stamp, input)) {
-                    ValueNode narrow = graph().unique(new NarrowNode(input, getResultBits()));
-                    node.replaceFirstInput(input, narrow);
-                    tool.addToWorkList(narrow);
-                }
-            }
-            node.setStamp(stamp);
-        }
-
-        return canNarrow;
-    }
-
-    @Override
-    public void simplify(SimplifierTool tool) {
-        ValueNode ret = tryCanonicalize();
-        if (ret != null) {
-            graph().replaceFloating(this, ret);
-        } else if (tryNarrow(tool, stamp().unrestricted(), getInput())) {
-            graph().replaceFloating(this, getInput());
-        }
+        return this;
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java	Mon Mar 10 11:38:30 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/SignExtendNode.java	Mon Mar 10 13:32:06 2014 +0100
@@ -32,7 +32,7 @@
 /**
  * The {@code SignExtendNode} converts an integer to a wider integer using sign extension.
  */
-public class SignExtendNode extends IntegerConvertNode implements Canonicalizable {
+public class SignExtendNode extends IntegerConvertNode {
 
     public SignExtendNode(ValueNode input, int resultBits) {
         super(StampTool.signExtend(input.stamp(), resultBits), input, resultBits);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java	Mon Mar 10 11:38:30 2014 +0100
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/ZeroExtendNode.java	Mon Mar 10 13:32:06 2014 +0100
@@ -32,7 +32,7 @@
 /**
  * The {@code ZeroExtendNode} converts an integer to a wider integer using zero extension.
  */
-public class ZeroExtendNode extends IntegerConvertNode implements Canonicalizable {
+public class ZeroExtendNode extends IntegerConvertNode {
 
     public ZeroExtendNode(ValueNode input, int resultBits) {
         super(StampTool.zeroExtend(input.stamp(), resultBits), input, resultBits);