RFR (S): 7177745: JSR292: Many Callsite relinkages cause target method to always run in interpreter mode
vladimir.x.ivanov at oracle.com
Wed Jan 20 11:23:47 UTC 2016
Thanks for review, Vladimir.
I decided to remove the field declaration because SA doesn't access it it.
On 1/19/16 11:36 PM, Vladimir Kozlov wrote:
> Looks fine but in vmStructs.cpp you should replace the field declaration
> instead of just removing old one.
> Also look if SA access it.
> On 1/18/16 4:54 AM, Vladimir Ivanov wrote:
>> 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
>> I filed a separate RFE (JDK-8147550 ) to consider slow non-inlined
>> code shape for unstable call sites, as John
>> suggested .
>> Testing: regression test, octane, JPRT.
>> Best regards,
>> Vladimir Ivanov
>>  https://bugs.openjdk.java.net/browse/JDK-8147550
More information about the hotspot-compiler-dev