src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.amd64/src/org/graalvm/compiler/core/amd64/AMD64AddressLowering.java
equal
deleted
inserted
replaced
25 |
25 |
26 import org.graalvm.compiler.asm.amd64.AMD64Address.Scale; |
26 import org.graalvm.compiler.asm.amd64.AMD64Address.Scale; |
27 import org.graalvm.compiler.core.common.NumUtil; |
27 import org.graalvm.compiler.core.common.NumUtil; |
28 import org.graalvm.compiler.core.common.type.AbstractPointerStamp; |
28 import org.graalvm.compiler.core.common.type.AbstractPointerStamp; |
29 import org.graalvm.compiler.core.common.type.IntegerStamp; |
29 import org.graalvm.compiler.core.common.type.IntegerStamp; |
30 import org.graalvm.compiler.core.common.type.PrimitiveStamp; |
|
31 import org.graalvm.compiler.debug.DebugContext; |
30 import org.graalvm.compiler.debug.DebugContext; |
32 import org.graalvm.compiler.nodes.NodeView; |
31 import org.graalvm.compiler.nodes.NodeView; |
33 import org.graalvm.compiler.nodes.StructuredGraph; |
32 import org.graalvm.compiler.nodes.StructuredGraph; |
34 import org.graalvm.compiler.nodes.ValueNode; |
33 import org.graalvm.compiler.nodes.ValueNode; |
35 import org.graalvm.compiler.nodes.calc.AddNode; |
34 import org.graalvm.compiler.nodes.calc.AddNode; |
105 if (ret.getIndex() == null && ret.getBase() instanceof AddNode) { |
104 if (ret.getIndex() == null && ret.getBase() instanceof AddNode) { |
106 AddNode add = (AddNode) ret.getBase(); |
105 AddNode add = (AddNode) ret.getBase(); |
107 ret.setBase(add.getX()); |
106 ret.setBase(add.getX()); |
108 ret.setIndex(considerNegation(graph, add.getY(), isBaseNegated)); |
107 ret.setIndex(considerNegation(graph, add.getY(), isBaseNegated)); |
109 return true; |
108 return true; |
110 } else if (ret.getBase() == null && ret.getIndex() instanceof AddNode) { |
109 } |
|
110 |
|
111 if (ret.getBase() == null && ret.getIndex() instanceof AddNode) { |
111 AddNode add = (AddNode) ret.getIndex(); |
112 AddNode add = (AddNode) ret.getIndex(); |
112 ret.setBase(considerNegation(graph, add.getX(), isIndexNegated)); |
113 ret.setBase(considerNegation(graph, add.getX(), isIndexNegated)); |
113 ret.setIndex(add.getY()); |
114 ret.setIndex(add.getY()); |
114 return true; |
115 return true; |
115 } |
116 } |
186 JavaConstant c = node.asJavaConstant(); |
187 JavaConstant c = node.asJavaConstant(); |
187 if (c != null) { |
188 if (c != null) { |
188 return improveConstDisp(address, node, c, null, shift, negateExtractedDisplacement); |
189 return improveConstDisp(address, node, c, null, shift, negateExtractedDisplacement); |
189 } else { |
190 } else { |
190 if (node.stamp(NodeView.DEFAULT) instanceof IntegerStamp) { |
191 if (node.stamp(NodeView.DEFAULT) instanceof IntegerStamp) { |
191 assert PrimitiveStamp.getBits(node.stamp(NodeView.DEFAULT)) == ADDRESS_BITS; |
192 assert IntegerStamp.getBits(node.stamp(NodeView.DEFAULT)) == ADDRESS_BITS; |
192 |
193 |
193 /* |
194 /* |
194 * we can't swallow zero-extends because of multiple reasons: |
195 * we can't swallow zero-extends because of multiple reasons: |
195 * |
196 * |
196 * a) we might encounter something like the following: ZeroExtend(Add(negativeValue, |
197 * a) we might encounter something like the following: ZeroExtend(Add(negativeValue, |