Intrinsic interactions with Deoptimization
ahmed.khawaja at oracle.com
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?
More information about the hotspot-compiler-dev