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.