[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