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

Christian Hagedorn christian.hagedorn at oracle.com
Wed Oct 9 08:45:37 UTC 2019


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