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

Christian Hagedorn christian.hagedorn at oracle.com
Thu Oct 10 10:30:51 UTC 2019


Thank you Vladimir and Tobias for your reviews!

Best regards,
Christian

On 10.10.19 07:10, Tobias Hartmann wrote:
> +1
> 
> Best regards,
> Tobias
> 
> On 09.10.19 20:37, Vladimir Kozlov wrote:
>> 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