fix for 316545 is incorrect
The fix for 316545 corrected Object[] meeting byte[][] but broke byte[] meeting byte[][]. I've attached a
test case based on the testcase from 316545. The problem is that if the dimensionailty is 1 then you
have to go to Object instead of Object[]. A possible fix looks like this:
Index: Frame.java
=================================================================
==
--- Frame.java (revision 1736)
+++ Frame.java (working copy)
@@ -1435,8 +1435,12 @@
// and t have different array dimensions
int tdim = t & DIM;
int udim = u & DIM;
- v = (udim != tdim ? Math.min(tdim, udim) : 0) | OBJECT
+ if (((u & BASE_KIND) == OBJECT || udim > 0x10000000) && ((t & BASE_KIND) == OBJECT ||
tdim > 0x10000000)) {
+ v = (udim != tdim ? Math.min(tdim, udim) : 0) | OBJECT
| cw.addType("java/lang/Object");
+ } else {
+ v = OBJECT | cw.addType("java/lang/Object");
+ }
} else {
// if t is any other type, merge(u,t)=TOP
v = TOP;