[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