[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