[9] RFR (S): 8172844: Assert fails in deoptimization due to original PC at the end of code section

Rickard Bäckman rickard.backman at oracle.com
Thu Jan 19 13:22:45 UTC 2017


Looks good to me.

Some clean up if you don't mind.

frame_aarch64.inline.hpp:

85     assert(((CompiledMethod*)_cb)->insts_contains(_pc), "original PC must be in CompiledMethod");
should use _cb->as_compiled_method() instead of the cast.

frame_x86.inline.hpp:
same as above.

Thanks
/R

On 01/19, Zoltán Majó wrote:
> Hi,
> 
> 
> please review the fix for 8172844.
> 
> https://bugs.openjdk.java.net/browse/JDK-8172844
> http://cr.openjdk.java.net/~zmajo/8172844/webrev.00/
> 
> The assert checking the "original pc" (i.e., the pc that was on the
> stack before the stack location was overwritten to point to the
> deoptimization handler) is too strict. If the last instruction of
> the (to-be-)deoptimized method is a call, the pc will point to the
> instruction following the call. That instruction is outside of the
> code section (as the call is the last instruction in the code
> section).
> 
> I suggest we relax the assert to accept the original pc being at the
> end of the code section as well. I tested the change with JPRT and
> locally with the reproducer, the failure did not appear. RBT is in
> progress.
> 
> Thank you!
> 
> Best regards,
> 
> 
> Zoltan
> 


More information about the hotspot-compiler-dev mailing list