[9] RFR (S): 7177745: JSR292: Many Callsite relinkages cause target method to always run in interpreter mode

Vladimir Kozlov vladimir.kozlov at oracle.com
Tue Jan 19 20:36:57 UTC 2016


Looks fine but in vmStructs.cpp you should replace the field declaration instead of just removing old one.
Also look if SA access it.

Thanks,
Vladimir

On 1/18/16 4:54 AM, Vladimir Ivanov wrote:
> http://cr.openjdk.java.net/~vlivanov/7177745/webrev.00/
> https://bugs.openjdk.java.net/browse/JDK-7177745
>
> JVM aggressively inlines through CallSites, even for mutable and volatile flavors. It's the key optimization for making
> invokedynamic performant.
>
> When a CallSite.target is updated, JVM invalidates all affected nmethods and try to recompile them later. If a call site
> target regularly changes, JVM will eventually mark (after PerMethodRecompilationCutoff invalidations) all hot methods
> which have the call site bound as non-compilable. It leads to significant peak performance reduction, because all
> affected methods will always be executed in interpreter mode since then.
>
> The fix is to avoid updating recompilation count when corresponding nmethod is invalidated due to a call site target
> change.
>
> I filed a separate RFE (JDK-8147550 [1]) to consider slow non-inlined code shape for unstable call sites, as John
> suggested [2].
>
> Testing: regression test, octane, JPRT.
>
> Thanks!
>
> Best regards,
> Vladimir Ivanov
>
> [1] https://bugs.openjdk.java.net/browse/JDK-8147550
> [2]
> https://bugs.openjdk.java.net/browse/JDK-7177745?focusedCommentId=13821545&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13821545
>


More information about the hotspot-compiler-dev mailing list