-
Bug
-
Resolution: Fixed
-
P1
-
hs25
-
b68
-
generic
-
generic
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8032447 | 9 | Igor Veresov | P1 | Resolved | Fixed | b03 |
JDK-8035050 | 8u20 | Igor Veresov | P1 | Closed | Fixed | b03 |
JDK-8033635 | 8u11 | Igor Veresov | P1 | Resolved | Fixed | b01 |
JDK-8033313 | 8u5 | Igor Veresov | P1 | Resolved | Fixed | b07 |
JDK-8032968 | 8 | Igor Veresov | P1 | Closed | Fixed | b127 |
JDK-8035219 | emb-8u6 | Igor Veresov | P1 | Closed | Fixed | b06 |
JDK-8035138 | 7u80 | Igor Veresov | P1 | Resolved | Fixed | b01 |
JDK-8060844 | 7u79 | Igor Veresov | P1 | Resolved | Fixed | b01 |
JDK-8057277 | 7u76 | Igor Veresov | P1 | Resolved | Fixed | b01 |
JDK-8036648 | 7u65 | Igor Veresov | P1 | Resolved | Fixed | b02 |
JDK-8035863 | 7u60 | Igor Veresov | P1 | Closed | Fixed | b09 |
match(Set dst (ConvI2L (AndI (LoadI mem) mask)));
From inspection, it appears that this rule (on all platforms) only works if the result of the AndI
doesn't need to be sign-extended (>= 0). My first attempt at a test program didn't work. For
some reason when using an array, C2 only takes a fast path if the value is positive:
static long foo(int[] x) {
return x[0] & 0xfffffffe;
}
However, using a field instead doesn't have that problem.
% cat a.java
public class a {
static int x;
static long foo() {
return x & 0xfffffffe;
}
public static void main(String[] args) {
x = -1;
long l = 0;
for (int i = 0; i < 100000; ++i) {
l = foo();
}
System.out.println(l);
}
}
% ./bin/java -Xint a
-2
% ./bin/java -XX:-TieredCompilation -server a
4294967294
- backported by
-
JDK-8032447 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8033313 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8033635 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8035138 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8036648 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8057277 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8060844 C2: loadI2L_immI broken for negative memory values
-
- Resolved
-
-
JDK-8032968 C2: loadI2L_immI broken for negative memory values
-
- Closed
-
-
JDK-8035050 C2: loadI2L_immI broken for negative memory values
-
- Closed
-
-
JDK-8035219 C2: loadI2L_immI broken for negative memory values
-
- Closed
-
-
JDK-8035863 C2: loadI2L_immI broken for negative memory values
-
- Closed
-