RFR(M): 8007294: ReduceFieldZeroing doesn't check for dependent load and can lead to incorrect execution

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Feb 22 08:50:13 PST 2013


Yes, you are right that uncast will point to the result projection of 
allocation.

Vladimir

On 2/22/13 5:30 AM, Roland Westrelin wrote:
> Thanks for the comments, Vladimir.
>
>> I thought you will change code for string instrinsics. Either verify both inputs or conservatively always 'fail'.
>
> Yes, you're right. I'll change the code to always fail.
>
>> Use err_msg_res() to print base->Name():
>> assert(base->is_AddP(), "should be addp");
>
> Ok.
>
>> Also you can do additional simple check:
>>
>>   if (other_adr == adr) {
>>     failed = true;
>>     break;
>>   }
>
> Ok.
>
>>
>> Also there could be several checkcastsPP nodes, so may be use
>>
>> if (base != NULL && base->uncast()->in(0) == ctl) {
>
> Ok but then the test becomes:
>
> base = base->in(AddPNode::Base);
> if (base != NULL) {
>    base = base->uncast();
>    if (base->is_Proj() && base->in(0) == alloc) {
>      failed = true;
>      break;
>    }
> }
> right?
>
> Roland.
>


More information about the hotspot-compiler-dev mailing list