[14] RFR(XS): 8231720: Some perf regressions after 8225653

Vladimir Kozlov vladimir.kozlov at oracle.com
Wed Oct 9 18:37:48 UTC 2019


Looks good.

Thanks,
Vladimir

On 10/9/19 1:45 AM, Christian Hagedorn wrote:
> Hi
> 
> Please review the following patch:
> https://bugs.openjdk.java.net/browse/JDK-8231720
> http://cr.openjdk.java.net/~chagedorn/8231720/webrev.00/
> 
> After JDK-8225653 [1], we call MacroAssembler::stop() instead of 
> Assembler::ud2() for a HaltNode in the x86.ad file. In the 64 bit case, 
> it prepares the arguments for MacroAssembler::debug64() by primarily 
> emitting move instructions for each of the 16 registers in 
> Assembler::pusha(). This consumes more code cache space and thus has a 
> negative impact on performance of tight loops although never executed. 
> The impact for 32 bit should be negligible since it directly emits a 
> single pusha instruction instead.
> 
> MacroAssembler::debug64() only uses the arguments in addition to the 
> message itself if the ShowMessageBoxOnError flag is used. The fix 
> therefore only emits those arguments if this flag is actually set. This 
> avoids consuming unnecessary code cache space and achieves equal 
> performance as with using ud2() instead of stop() (verified with 
> regressing benchmarks).
> 
> Thank you!
> 
> Best regards,
> Christian
> 
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8225653


More information about the hotspot-compiler-dev mailing list