src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.common/src/org/graalvm/compiler/core/common/type/IntegerStamp.java
equal
deleted
inserted
replaced
165 } |
165 } |
166 |
166 |
167 @Override |
167 @Override |
168 public Stamp constant(Constant c, MetaAccessProvider meta) { |
168 public Stamp constant(Constant c, MetaAccessProvider meta) { |
169 if (c instanceof PrimitiveConstant) { |
169 if (c instanceof PrimitiveConstant) { |
170 long value = ((PrimitiveConstant) c).asLong(); |
170 PrimitiveConstant primitiveConstant = (PrimitiveConstant) c; |
171 return StampFactory.forInteger(getBits(), value, value); |
171 long value = primitiveConstant.asLong(); |
|
172 if (primitiveConstant.getJavaKind() == JavaKind.Boolean && value == 1) { |
|
173 // Need to special case booleans as integer stamps are always signed values. |
|
174 value = -1; |
|
175 } |
|
176 Stamp returnedStamp = StampFactory.forInteger(getBits(), value, value); |
|
177 assert returnedStamp.hasValues(); |
|
178 return returnedStamp; |
172 } |
179 } |
173 return this; |
180 return this; |
174 } |
181 } |
175 |
182 |
176 @Override |
183 @Override |
1603 long defaultMask = CodeUtil.mask(resultBits); |
1610 long defaultMask = CodeUtil.mask(resultBits); |
1604 long newDownMask = stamp.downMask() & defaultMask; |
1611 long newDownMask = stamp.downMask() & defaultMask; |
1605 long newUpMask = stamp.upMask() & defaultMask; |
1612 long newUpMask = stamp.upMask() & defaultMask; |
1606 long newLowerBound = CodeUtil.signExtend((lowerBound | newDownMask) & newUpMask, resultBits); |
1613 long newLowerBound = CodeUtil.signExtend((lowerBound | newDownMask) & newUpMask, resultBits); |
1607 long newUpperBound = CodeUtil.signExtend((upperBound | newDownMask) & newUpMask, resultBits); |
1614 long newUpperBound = CodeUtil.signExtend((upperBound | newDownMask) & newUpMask, resultBits); |
1608 return new IntegerStamp(resultBits, newLowerBound, newUpperBound, newDownMask, newUpMask); |
1615 |
|
1616 IntegerStamp result = new IntegerStamp(resultBits, newLowerBound, newUpperBound, newDownMask, newUpMask); |
|
1617 assert result.hasValues(); |
|
1618 return result; |
1609 } |
1619 } |
1610 }, |
1620 }, |
1611 |
1621 |
1612 new FloatConvertOp(I2F) { |
1622 new FloatConvertOp(I2F) { |
1613 |
1623 |