Request for reviews (XS): 6976400: "Meet Not Symmetric"
Vladimir Kozlov
vladimir.kozlov at oracle.com
Thu Aug 12 13:15:22 PDT 2010
Tom,
Tom Rodriguez wrote:
> I'm having some trouble wrapping my head around this. The output below is for when it fails, right? What does it return for these after your fix? I guess I don't see why checking for j.l.O is correct.
Yes, the output below is for failing case.
The assert is triggered because 'mt_dual meet t_dual' != 't_dual'.
After the fix only 'mt_dual meet t_dual' was changed:
t2t->dump() // mt_dual meet t_dual
int:127..-128:www[int:max..0]:AnyNull:exact+12 *,iid=top
Based on the comments at the part which I changed the resulting
meet type should be bottom only when we have klasses which can't
be subclasses. But if one klass is j.l.O then an other
klass can be its subclass. This is how I'm interpreting it.
Thanks,
Vladimir
>
> tom
>
> On Aug 12, 2010, at 10:48 AM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/6976400/webrev
>>
>> Fixed 6976400: "Meet Not Symmetric"
>>
>> Meet of integer array pointer type with array pointer
>> which has j.l.Object klass incorrectly falls to bottom:
>>
>> t = byte[int:>=0]:NotNull:exact+12 *
>> this= bottom[int:>=0]+12 *
>> mt=(t meet this)= bottom[int:>=0]+12 *
>> t_dual= int:127..-128:www[int:max..0]:AnyNull:exact+12 *,iid=top
>> mt_dual= top[int:max..0]:TopPTR+12 *,iid=top
>> mt_dual meet t_dual= bottom[int:max..0]:AnyNull:exact+12 * [narrow]
>>
>> Solution:
>> Add missing checks for j.l.Object klass in TypeAryPtr::xmeet().
>>
>> Tested with failing cases, CTW, java/lang regression tests.
>
More information about the hotspot-compiler-dev
mailing list