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

Roland Westrelin roland.westrelin at oracle.com
Fri Feb 22 05:30:06 PST 2013


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