On Thu, 7 Jan 2021 21:29:32 GMT, Igor Veresov <ivere...@openjdk.org> wrote:

>> test/hotspot/jtreg/vmTestbase/nsk/jvmti/scenarios/hotswap/HS203/hs203t004/hs203t004.java
>>  line 35:
>> 
>>> 33:  *     While running the thread, it calls a method (doTask2() ) for 
>>> number of times (10000).
>>> 34:  *     That would cause this method to be compiled, which causes a 
>>> jvmti callback for compiled method load.
>>> 35:  *     (Hint : to force method compilation -XX:CompileThreshold=900 is 
>>> used).
>> 
>> The test still uses (and the comments state it uses) 
>> -XX:CompileThreshold=900 to force compilation, yet it looks like you needed 
>> to bump the number of times the method is called from 1000 to 10000 to keep 
>> this test working. Why doesn't 1000 still work?
>
> Tiered policy (which the -TieredCompilation emulation mode piggybacks on now) 
> functions by doing periodic callbacks into the runtime to make policy 
> decisions. The callback intervals are a power-of-2. So, because of the 
> resulting rounding I cannot guarantee that the compilation will be triggered 
> exactly at the specified threshold. Plus there are various adaptive 
> mechanisms that I kept on even in the emulation mode that may also result in 
> a method being compiled later than expected. To summarize, in the new world, 
> the advisable way of triggering a compilation is to use the WB API. If that's 
> too much effort, make sure that the method that you'd like to compile is 
> invoked more than 2^(log2(CompileThreshold) + 1) times, plus a bit more. Very 
> few tests actually depend on the legacy behavior, this just happens to be one 
> of those.

Ok.

-------------

PR: https://git.openjdk.java.net/jdk/pull/1985

Reply via email to