Request for reviews (S): 6820514: meet not symmetric failure in ctw
Vladimir Kozlov
Vladimir.Kozlov at Sun.COM
Mon Mar 23 14:14:28 PDT 2009
No, it is not true. The original comment's line is still true
> // AnyNull | U-AN |................Unloaded......................|
meet_ptr() maps almost everything to the original PRT:
> // TopPTR, AnyNull, Constant, Null, NotNull, BotPTR,
> { /* AnyNull */ AnyNull, AnyNull, Constant, BotPTR, NotNull, BotPTR,},
except TOP which corresponds to the special case in the code table and NULL which
is not in the table.
Vladimir
Tom Rodriguez wrote:
> There's a nice comment above this code and it would be nice if the table and code agreed in both order and results.
>
> // Meet unloaded class with java/lang/Object
> //
> // Meet
> // | Unloaded Class
> // Object | TOP | AnyNull | Constant | NotNull | BOTTOM |
> // ===================================================================
> // TOP | ..........................Unloaded......................|
> // AnyNull | U-AN |................Unloaded......................|
> // Constant | ... O-NN .................................. | O-BOT |
> // NotNull | ... O-NN .................................. | O-BOT |
> // BOTTOM | ........................Object-BOTTOM ..................|
>
> Your changes appear to make this line:
>
> // AnyNull | U-AN |................Unloaded......................|
>
> become
>
> // AnyNull |........................... U-AN ......................|
>
> The -AN part isn't quite true since we're returning the results of meet_ptr which uses the table below. AnyNull meeting NotNull returns NotNull. The Constant line in the comments seems to be wrong too.
>
> const TypePtr::PTR TypePtr::ptr_meet[TypePtr::lastPTR][TypePtr::lastPTR] = {
> // TopPTR, AnyNull, Constant, Null, NotNull, BotPTR,
> { /* Top */ TopPTR, AnyNull, Constant, Null, NotNull, BotPTR,},
> { /* AnyNull */ AnyNull, AnyNull, Constant, BotPTR, NotNull, BotPTR,},
> { /* Constant*/ Constant, Constant, Constant, BotPTR, NotNull, BotPTR,},
> { /* Null */ Null, BotPTR, BotPTR, Null, BotPTR, BotPTR,},
> { /* NotNull */ NotNull, NotNull, NotNull, BotPTR, NotNull, BotPTR,},
> { /* BotPTR */ BotPTR, BotPTR, BotPTR, BotPTR, BotPTR, BotPTR,}
> };
>
> The code itself looks right to me after much rereading of the meet logic.
>
> tom
>
>
> On Mar 20, 2009, at 11:31 PM, Vladimir Kozlov wrote:
>
>>
>> http://cr.openjdk.java.net/~kvn/6820514/webrev.00
>>
>> Fixed 6820514: meet not symmetric failure in ctw
>>
>> Problem:
>> Missing instance_id meet for the case j.l.Object:NotNull meets
>> unloaded instance klass.
>>
>> Solution:
>> Add missing code.
>>
>> Reviewed by:
>>
>> Fix verified (y/n): y, ctw test from bug
>>
>> Other testing:
>> JPRT
>>
More information about the hotspot-compiler-dev
mailing list