Intrinsic interactions with Deoptimization

Ahmed Khawaja ahmed.khawaja at
Tue May 3 15:38:10 UTC 2016


      I am working on a C2 intrinsic and I have a question concerning 
deoptimization. The calling method is being deoptimized after a certain 
point with the cause being unstable branches. While I understand that 
the calling method should be reprofiled/recompiled, it was my 
understanding that after an intrinsic was triggered, any calls to it 
(the intrinsified function) would always result in the intrinsic code 
running. What I am seeing is when the parent/calling method falls back 
to interpreter mode to re-profile, the intrinsic code is no longer being 
called and the Java implementation of the (called) method is being used. 
Can someone shine some light on the interaction between intrinsics and 
deoptimization? My hypothesis is that the intrinsic code that was 
generated is still there, but some glue code was flushed during 
deoptimization. The desired behavior I am pursuing is that once the 
method triggers intrinsification, the intrinsic should always be used. 
Is falling back to interpretation an all or nothing type behavior?

Thank you,
    Ahmed Khawaja

More information about the hotspot-compiler-dev mailing list