-
Bug
-
Resolution: Fixed
-
P3
-
hs17
-
b03
-
sparc
-
solaris_9
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2195081 | 7 | Tom Rodriguez | P3 | Closed | Fixed | b99 |
JDK-2197828 | 6u23 | Tom Rodriguez | P3 | Resolved | Fixed | b01 |
JDK-2199728 | 6u22m | Tom Rodriguez | P3 | Resolved | Fixed | b01 |
JDK-2197537 | 6u21p | Tom Rodriguez | P3 | Resolved | Fixed | b03 |
6879921 fix a case where it the superword optimization was attempting to handle arrays of oops which we didn't allow. A guard was inserted in stmts_can_pack which fixed the original issue. Testing with bigapps has shown that there are other paths where this problem can manifest. In particular this pattern:
public static void init(Object src[], boolean[] dst) {
// initialize the arrays
for (int i =0; i<src.length; i++) {
dst[i] = src[i] != null ? false : true;
}
}
shows that are_adjacent_refs can be reached through est_savings, skipping the added is_java_primitive guard. The fix is to move the is_java_primitive into are_adjacent_refs to guard the data_size calls.
public static void init(Object src[], boolean[] dst) {
// initialize the arrays
for (int i =0; i<src.length; i++) {
dst[i] = src[i] != null ? false : true;
}
}
shows that are_adjacent_refs can be reached through est_savings, skipping the added is_java_primitive guard. The fix is to move the is_java_primitive into are_adjacent_refs to guard the data_size calls.
- backported by
-
JDK-2197537 fix for 6879921 was insufficient
- Resolved
-
JDK-2197828 fix for 6879921 was insufficient
- Resolved
-
JDK-2199728 fix for 6879921 was insufficient
- Resolved
-
JDK-2195081 fix for 6879921 was insufficient
- Closed
- relates to
-
JDK-6879921 CTW failure jdk6_18/hotspot/src/share/vm/utilities/globalDefinitions.cpp:268
- Closed