Update: Request for reviews (S): 6976400: "Meet Not Symmetric"
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Aug 25 12:10:41 PDT 2010
Thank you, Tom
Vladimir
Tom Rodriguez wrote:
> Looks good.
>
> tom
>
> On Aug 24, 2010, at 10:34 AM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/6976400/webrev.03
>>
>> After discussion with Tom and investigating further
>> the problem was identified as how we define TypeAryPtr::RANGE
>> which is bottom[int:>=0]+12 * :
>>
>> TypeAryPtr::RANGE = TypeAryPtr::make( TypePtr::BotPTR, TypeAry::make(Type::BOTTOM,TypeInt::POS), current->env()->Object_klass(), false, arrayOopDesc::length_offset_in_bytes());
>>
>> It has bottom element type and defined klass but C2
>> type system expect NULL klass for bottom[] and top[].
>>
>> Solution:
>> Use NULL as klass for TypeAryPtr::RANGE.
>> Add verification into TypeAryPtr constructor to make sure
>> that specified klass and TypeAryPtr::klass() follow
>> the same rules.
>>
>> Tested CTW, java/lang regression tests, nsk tests
>>
>> Vladimir
>>
>> 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