Mercurial > hg > graal-compiler
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);