Request for reviews (S): 6910605: C2:NullPointerException/ClassCaseException is thrown when C2 with DeoptimizeALot is used

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Mon Feb 8 11:48:49 PST 2010

I think that looks good.  Thanks for removing reexecute output.


On Feb 6, 2010, at 2:43 PM, Vladimir Kozlov wrote:

> The first implementation was not correct for the case when
> runtime call is used for multianewarray allocation.
> Because of that interpreter should not have _multianewarray
> marked as reexecutable (stack is not reset for such case).
> Also setting reexecute bit in do_multianewarray() was not
> propagated to the AllocateArray node so I have to set it in graphKit.
> I replaced "expand_count == 1" check with "ndimensions == 1"
> otherwise with MultiArrayExpandLimit=0 we hit ShouldNotReachHere()
> in case of one dimension multianewarray because the method
> expand_multianewarray() will not be called.
> And I removed annoying "reexecute=false" from PcDesc output.
> Thanks,
> Vladimir
> Vladimir Kozlov wrote:
>> Fixed 6910605: C2: NullPointerException/ClassCaseException is thrown when C2 with DeoptimizeALot is used
>> Problem:
>> Regression after 6603492: multianewarray should generate same code as anewarray for 1-d arrays.
>> After deoptimization interpreter will continue execution after _multianewarray
>> even if compiled code did not allocate all needed arrays.
>> Solution:
>> Set the reexecute bit for the interpreter to reexecute the _multianewarray bytecode
>> if deoptimization happens. Do it unconditionally even for one dimension array.
>> Added regression test copied from nsk/coverage/runtime/runtime007
>> Reviewed by:
>> Fix verified (y/n): y, tests
>> Other testing:

More information about the hotspot-compiler-dev mailing list