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

Tobias Hartmann tobias.hartmann at oracle.com
Thu Oct 10 05:10:32 UTC 2019


+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