[11] RFR(XS): 8198826: -XX:+VerifyStack fails with fatal error: ExceptionMark constructor expects no pending exceptions

David Holmes david.holmes at oracle.com
Fri Mar 2 02:11:10 UTC 2018


On 1/03/2018 11:26 PM, Tobias Hartmann wrote:
> 
> On 01.03.2018 12:53, David Holmes wrote:
>> But if the allocation fails you don't have the ability to reconstruct the object ?? The OOME must
>> appear to happen at the point at which the object should have been allocated, and nothing that
>> happens after that point can be seen to have happened.
> 
> Yes, if the re-allocation of the scalar replaced object fails during deoptimization, we cannot
> re-construct the object. But that's okay because the interpreter will throw an OutOfMemoryError and
> not use that object anyway (please note that C2 will only perform scalarization if escape analysis
> determined that it's safe to do so and the object is not leaked).

It's not the scalarized object I'm concerned about but other actions 
that may happen after the allocation point and which would never have 
occurred if the allocation threw OOME. But perhaps such actions are not 
possible under the definition of "safe" for this transformation.

But we should probably discuss this elsewhere.

Cheers,
David

> This is actually what the TestDeoptOOM verifies.
> 
> Best regards,
> Tobias
> 


More information about the hotspot-dev mailing list