[15] RFR (S): 8241434: x86: Fix Assembler::emit_operand asserts for XMM registers
Vladimir Kozlov
vladimir.kozlov at oracle.com
Wed Mar 25 17:15:38 UTC 2020
Looks good.
Thanks,
Vladimir
On 3/25/20 7:11 AM, Vladimir Ivanov wrote:
> Forgot to include bug id in the subject. Fixed.
>
> Best regards,
> Vladimir Ivanov
>
> On 25.03.2020 15:50, Vladimir Ivanov wrote:
>> http://cr.openjdk.java.net/~vlivanov/8241434/webrev.00/
>> https://bugs.openjdk.java.net/browse/JDK-8241434
>>
>> Assembler::emit_operand() on x86 works with Registers, but is used to encode both GP registers (Register) and XMM
>> registers (XMMRegisters).
>>
>> It can cause problems since some asserts assume the arguments are Registers (e.g, assert(index != rsp)) and may fail
>> when XMMRegister with the same encoding is passed.
>>
>> The fix refactors operand encoding logic into Assembler::emit_operand_helper() which works with register encodings and
>> it is called from overloaded Assembler::emit_operand() where proper asserts are put.
>>
>> Also, as a cleanup, made Assembler::emit_operand32() and Assembler::emit_farith() available only on x86-32.
>>
>> Testing: tier1-4
>>
>> Thanks!
>>
>> Best regards,
>> Vladimir Ivanov
More information about the hotspot-dev
mailing list